From 665914044001609af394bf1321b6b0453adffa84 Mon Sep 17 00:00:00 2001 From: litoral05 Date: Wed, 3 Jun 2026 12:09:51 +0100 Subject: [PATCH] Add admin user endpoints --- data/backend-gateway.db | Bin 36864 -> 36864 bytes .../config/SecurityConfig.java | 7 ++ .../backend_gateway/user/UserController.java | 28 ++++++++ .../backend_gateway/user/UserService.java | 63 ++++++++++++++++++ .../user/dto/CreateUserRequest.java | 11 +++ .../user/dto/UserResponse.java | 14 ++++ 6 files changed, 123 insertions(+) create mode 100644 src/main/java/com/litoralregas/backend_gateway/user/UserController.java create mode 100644 src/main/java/com/litoralregas/backend_gateway/user/UserService.java create mode 100644 src/main/java/com/litoralregas/backend_gateway/user/dto/CreateUserRequest.java create mode 100644 src/main/java/com/litoralregas/backend_gateway/user/dto/UserResponse.java diff --git a/data/backend-gateway.db b/data/backend-gateway.db index 249ba3a92beb3961774b1e09b66d5732dc09dce0..be975a4087c50ddc79f0d3abfb0aaec1db67afec 100644 GIT binary patch delta 197 zcmZozz|^pSX@WE(>qHr6M%Il9OX4}0_+K&bf8l?%Sy15~zXAsnvp8pIacWU97bCMY zXL3$vYF44jNpy@T}g^)mI6Jxo#!Lj6OW49oNLQl0ej{9MA*Q&MsrU3@+L nj0}v-bPa&WSi#WH%D@tcxWIOPXW;+7S+L+OKPLy!VPMMu&W|-P delta 76 zcmZozz|^pSX@WE(%S0JxMwX2UOXArW`M)smf7vW(@Qi findAll() { + return userService.findAll(); + } +} \ No newline at end of file diff --git a/src/main/java/com/litoralregas/backend_gateway/user/UserService.java b/src/main/java/com/litoralregas/backend_gateway/user/UserService.java new file mode 100644 index 0000000..d763691 --- /dev/null +++ b/src/main/java/com/litoralregas/backend_gateway/user/UserService.java @@ -0,0 +1,63 @@ +package com.litoralregas.backend_gateway.user; + +import com.litoralregas.backend_gateway.client.ClientEntity; +import com.litoralregas.backend_gateway.client.ClientRepository; +import com.litoralregas.backend_gateway.user.dto.CreateUserRequest; +import com.litoralregas.backend_gateway.user.dto.UserResponse; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class UserService { + + private final UserRepository userRepository; + private final ClientRepository clientRepository; + private final PasswordEncoder passwordEncoder; + + public UserService( + UserRepository userRepository, + ClientRepository clientRepository, + PasswordEncoder passwordEncoder + ) { + this.userRepository = userRepository; + this.clientRepository = clientRepository; + this.passwordEncoder = passwordEncoder; + } + + public UserResponse create(CreateUserRequest request) { + ClientEntity client = clientRepository.findById(request.clientId()) + .orElseThrow(() -> new RuntimeException("Client not found")); + + UserEntity user = new UserEntity(); + user.setClient(client); + user.setUsername(request.username()); + user.setPasswordHash(passwordEncoder.encode(request.password())); + user.setRole(request.role()); + user.setEnabled(true); + + UserEntity saved = userRepository.save(user); + + return toResponse(saved); + } + + public List findAll() { + return userRepository.findAll() + .stream() + .map(this::toResponse) + .toList(); + } + + private UserResponse toResponse(UserEntity user) { + return new UserResponse( + user.getId(), + user.getClient().getId(), + user.getClient().getName(), + user.getUsername(), + user.getRole(), + user.isEnabled(), + user.getCreatedAt() + ); + } +} \ No newline at end of file diff --git a/src/main/java/com/litoralregas/backend_gateway/user/dto/CreateUserRequest.java b/src/main/java/com/litoralregas/backend_gateway/user/dto/CreateUserRequest.java new file mode 100644 index 0000000..b8d7d1e --- /dev/null +++ b/src/main/java/com/litoralregas/backend_gateway/user/dto/CreateUserRequest.java @@ -0,0 +1,11 @@ +package com.litoralregas.backend_gateway.user.dto; + +import com.litoralregas.backend_gateway.user.UserRole; + +public record CreateUserRequest( + Long clientId, + String username, + String password, + UserRole role +) { +} \ No newline at end of file diff --git a/src/main/java/com/litoralregas/backend_gateway/user/dto/UserResponse.java b/src/main/java/com/litoralregas/backend_gateway/user/dto/UserResponse.java new file mode 100644 index 0000000..49c123b --- /dev/null +++ b/src/main/java/com/litoralregas/backend_gateway/user/dto/UserResponse.java @@ -0,0 +1,14 @@ +package com.litoralregas.backend_gateway.user.dto; + +import com.litoralregas.backend_gateway.user.UserRole; + +public record UserResponse( + Long id, + Long clientId, + String clientName, + String username, + UserRole role, + boolean enabled, + String createdAt +) { +} \ No newline at end of file