From e4173e3ade91822a8cc128094e00a7d0f0dee475 Mon Sep 17 00:00:00 2001 From: Constantin Simonis Date: Wed, 4 Jun 2025 14:38:18 +0200 Subject: [PATCH] feat: add transaction handling on user signup process --- .../security/oauth2/github/GitHubService.java | 16 +++++++++++++--- .../security/oauth2/google/GoogleService.java | 13 ++++++++++++- .../java/de/szut/casino/user/UserService.java | 8 ++++++++ 3 files changed, 33 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/de/szut/casino/security/oauth2/github/GitHubService.java b/backend/src/main/java/de/szut/casino/security/oauth2/github/GitHubService.java index 3c7d22f..40caecb 100644 --- a/backend/src/main/java/de/szut/casino/security/oauth2/github/GitHubService.java +++ b/backend/src/main/java/de/szut/casino/security/oauth2/github/GitHubService.java @@ -1,5 +1,8 @@ package de.szut.casino.security.oauth2.github; +import de.szut.casino.deposit.TransactionEntity; +import de.szut.casino.deposit.TransactionRepository; +import de.szut.casino.deposit.TransactionStatus; import de.szut.casino.security.dto.AuthResponseDto; import de.szut.casino.security.jwt.JwtUtils; import de.szut.casino.user.AuthProvider; @@ -30,12 +33,14 @@ public class GitHubService { private final AuthenticationManager authenticationManager; private final UserRepository userRepository; + private final TransactionRepository transactionRepository; private final JwtUtils jwtUtils; private final PasswordEncoder oauth2PasswordEncoder; - public GitHubService(AuthenticationManager authenticationManager, UserRepository userRepository, JwtUtils jwtUtils, PasswordEncoder oauth2PasswordEncoder) { + public GitHubService(AuthenticationManager authenticationManager, UserRepository userRepository, TransactionRepository transactionRepository, JwtUtils jwtUtils, PasswordEncoder oauth2PasswordEncoder) { this.authenticationManager = authenticationManager; this.userRepository = userRepository; + this.transactionRepository = transactionRepository; this.jwtUtils = jwtUtils; this.oauth2PasswordEncoder = oauth2PasswordEncoder; } @@ -139,15 +144,20 @@ public class GitHubService { user.setProvider(AuthProvider.GITHUB); user.setProviderId(githubId); user.setEmailVerified(true); - - user.setBalance(new BigDecimal("1000.00")); + user.setBalance(new BigDecimal("100.00")); } } String randomPassword = UUID.randomUUID().toString(); user.setPassword(oauth2PasswordEncoder.encode(randomPassword)); + TransactionEntity transaction = new TransactionEntity(); + transaction.setAmount(100L); + transaction.setUser(user); + transaction.setSessionId("signup_bonus"); + transaction.setStatus(TransactionStatus.SUCCEEDED); userRepository.save(user); + transactionRepository.save(transaction); Authentication authentication = this.authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(user.getEmail(), randomPassword)); diff --git a/backend/src/main/java/de/szut/casino/security/oauth2/google/GoogleService.java b/backend/src/main/java/de/szut/casino/security/oauth2/google/GoogleService.java index f369052..83ada97 100644 --- a/backend/src/main/java/de/szut/casino/security/oauth2/google/GoogleService.java +++ b/backend/src/main/java/de/szut/casino/security/oauth2/google/GoogleService.java @@ -1,5 +1,8 @@ package de.szut.casino.security.oauth2.google; +import de.szut.casino.deposit.TransactionEntity; +import de.szut.casino.deposit.TransactionRepository; +import de.szut.casino.deposit.TransactionStatus; import de.szut.casino.security.dto.AuthResponseDto; import de.szut.casino.security.jwt.JwtUtils; import de.szut.casino.user.AuthProvider; @@ -47,12 +50,14 @@ public class GoogleService { private final AuthenticationManager authenticationManager; private final UserRepository userRepository; + private final TransactionRepository transactionRepository; private final JwtUtils jwtUtils; private final PasswordEncoder oauth2PasswordEncoder; - public GoogleService(AuthenticationManager authenticationManager, UserRepository userRepository, JwtUtils jwtUtils, PasswordEncoder oauth2PasswordEncoder) { + public GoogleService(AuthenticationManager authenticationManager, UserRepository userRepository, TransactionRepository transactionRepository, JwtUtils jwtUtils, PasswordEncoder oauth2PasswordEncoder) { this.authenticationManager = authenticationManager; this.userRepository = userRepository; + this.transactionRepository = transactionRepository; this.jwtUtils = jwtUtils; this.oauth2PasswordEncoder = oauth2PasswordEncoder; } @@ -146,8 +151,14 @@ public class GoogleService { String randomPassword = UUID.randomUUID().toString(); user.setPassword(oauth2PasswordEncoder.encode(randomPassword)); + TransactionEntity transaction = new TransactionEntity(); + transaction.setAmount(100L); + transaction.setUser(user); + transaction.setSessionId("signup_bonus"); + transaction.setStatus(TransactionStatus.SUCCEEDED); userRepository.save(user); + transactionRepository.save(transaction); Authentication authentication = authenticationManager.authenticate( new UsernamePasswordAuthenticationToken(user.getEmail(), randomPassword) diff --git a/backend/src/main/java/de/szut/casino/user/UserService.java b/backend/src/main/java/de/szut/casino/user/UserService.java index 341db86..a83a105 100644 --- a/backend/src/main/java/de/szut/casino/user/UserService.java +++ b/backend/src/main/java/de/szut/casino/user/UserService.java @@ -1,5 +1,7 @@ package de.szut.casino.user; +import de.szut.casino.deposit.TransactionEntity; +import de.szut.casino.deposit.TransactionStatus; import de.szut.casino.exceptionHandling.exceptions.UserNotFoundException; import de.szut.casino.user.dto.CreateUserDto; import jakarta.persistence.EntityExistsException; @@ -38,6 +40,12 @@ public class UserService { RandomStringUtils.randomAlphanumeric(64) ); + TransactionEntity transaction = new TransactionEntity(); + transaction.setAmount(100L); + transaction.setUser(user); + transaction.setSessionId("signup_bonus"); + transaction.setStatus(TransactionStatus.SUCCEEDED); + return userRepository.save(user); }