diff --git a/src/main/java/net/kapcake/bankingservice/config/DatabaseConfig.java b/src/main/java/net/kapcake/bankingservice/config/DatabaseConfig.java new file mode 100644 index 0000000..dc4deee --- /dev/null +++ b/src/main/java/net/kapcake/bankingservice/config/DatabaseConfig.java @@ -0,0 +1,27 @@ +package net.kapcake.bankingservice.config; + +import org.h2.tools.Server; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; + +import java.sql.SQLException; + +@Configuration +public class DatabaseConfig { + @Bean(initMethod = "start", destroyMethod = "stop") + @Profile("dev") + public Server h2Server() throws SQLException { + return Server.createTcpServer("-tcp", "-tcpAllowOthers", "-tcpPort", "9092"); + } + +// @Bean +// public CommandLineRunner demoUsers(UserRepository userRepository, PasswordEncoder passwordEncoder) { +// return args -> { +// System.out.println(passwordEncoder.encode("user1Password")); +// System.out.println(passwordEncoder.encode("user2Password")); +// System.out.println(passwordEncoder.encode("user3Password")); +// System.out.println(passwordEncoder.encode("user4Password")); +// }; +// } +} diff --git a/src/main/java/net/kapcake/bankingservice/controllers/BankingServiceController.java b/src/main/java/net/kapcake/bankingservice/controllers/BankingServiceController.java new file mode 100644 index 0000000..9c0094b --- /dev/null +++ b/src/main/java/net/kapcake/bankingservice/controllers/BankingServiceController.java @@ -0,0 +1,24 @@ +package net.kapcake.bankingservice.controllers; + +import net.kapcake.bankingservice.domain.BankAccount; +import net.kapcake.bankingservice.services.AccountService; +import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.security.core.userdetails.User; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +@RestController +public class BankingServiceController { + private final AccountService accountService; + + public BankingServiceController(AccountService accountService) { + this.accountService = accountService; + } + + @GetMapping("/accounts") + public List getAccounts(@AuthenticationPrincipal User user) { + return accountService.getAccounts(user); + } +} diff --git a/src/main/java/net/kapcake/bankingservice/repositories/BankAccountRepository.java b/src/main/java/net/kapcake/bankingservice/repositories/BankAccountRepository.java index 89281f6..94124f8 100644 --- a/src/main/java/net/kapcake/bankingservice/repositories/BankAccountRepository.java +++ b/src/main/java/net/kapcake/bankingservice/repositories/BankAccountRepository.java @@ -3,5 +3,8 @@ package net.kapcake.bankingservice.repositories; import net.kapcake.bankingservice.domain.BankAccount; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; + public interface BankAccountRepository extends JpaRepository { + List findAllByUsers_username(String username); } diff --git a/src/main/java/net/kapcake/bankingservice/repositories/UserRepository.java b/src/main/java/net/kapcake/bankingservice/repositories/UserRepository.java index 5d39f03..2848a4f 100644 --- a/src/main/java/net/kapcake/bankingservice/repositories/UserRepository.java +++ b/src/main/java/net/kapcake/bankingservice/repositories/UserRepository.java @@ -3,5 +3,8 @@ package net.kapcake.bankingservice.repositories; import net.kapcake.bankingservice.domain.User; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; + public interface UserRepository extends JpaRepository { + Optional findByUsername(String username); } diff --git a/src/main/java/net/kapcake/bankingservice/services/AccountService.java b/src/main/java/net/kapcake/bankingservice/services/AccountService.java new file mode 100644 index 0000000..7bbba09 --- /dev/null +++ b/src/main/java/net/kapcake/bankingservice/services/AccountService.java @@ -0,0 +1,21 @@ +package net.kapcake.bankingservice.services; + +import net.kapcake.bankingservice.domain.BankAccount; +import net.kapcake.bankingservice.repositories.BankAccountRepository; +import org.springframework.security.core.userdetails.User; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +public class AccountService { + private final BankAccountRepository bankAccountRepository; + + public AccountService(BankAccountRepository bankAccountRepository) { + this.bankAccountRepository = bankAccountRepository; + } + + public List getAccounts(User user) { + return bankAccountRepository.findAllByUsers_username(user.getUsername()); + } +} diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql index 4c00c0a..40d1566 100644 --- a/src/main/resources/data.sql +++ b/src/main/resources/data.sql @@ -1,5 +1,13 @@ -INSERT INTO ADDRESS (id, street, number, postal_code, country) -values (1, 'street', 1, 9999, 'Luxembourg'); +INSERT INTO BANKING_USER (ID, USERNAME, PASSWORD) +VALUES (1, 'user1', '{bcrypt}$2a$10$4dPs2u01F/UBJtQyKRCRLevJACUkDzSdD.4EFKkf0T0qllqtkxw5e'); +INSERT INTO BANKING_USER (ID, USERNAME, PASSWORD) +VALUES (2, 'user2', '{bcrypt}$2a$10$EWrufyYshQUZ4A8ABWPqb.rGC.ZbASqCZiw1vgu68uUOB5t/qJpu6'); +INSERT INTO BANKING_USER (ID, USERNAME, PASSWORD) +VALUES (3, 'user3', '{bcrypt}$2a$10$TEMplrWsmM7TA8HxTV8tG..4jxbfkOiq34cwg4wW3RXPRg6KMBdPm'); +INSERT INTO BANKING_USER (ID, USERNAME, PASSWORD) +VALUES (4, 'user4', '{bcrypt}$2a$10$1wGifm5b1N6uBL6Zpxn5tegsFNSyTV6iux5MI9ANuP0G5cliBcLWa'); -INSERT INTO BANKING_USER (id, username, password, address_id) -values (1, 'user1', 'test', 1); +INSERT INTO BANK_ACCOUNT (ID, ACCOUNT_NAME, ACCOUNT_NUMBER, STATUS) +VALUES (1, 'Personal', 'LU375050297422074000', 'ENABLED'); +INSERT INTO BANK_ACCOUNT_USERS (BANK_ACCOUNT_ID, USERS_ID) +VALUES (1, 1);