Add admin user endpoints
This commit is contained in:
Binary file not shown.
@@ -3,6 +3,8 @@ package com.litoralregas.backend_gateway.config;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
|
||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
|
||||
import org.springframework.security.crypto.password.PasswordEncoder;
|
||||
import org.springframework.security.web.SecurityFilterChain;
|
||||
|
||||
@Configuration
|
||||
@@ -17,4 +19,9 @@ public class SecurityConfig {
|
||||
)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Bean
|
||||
public PasswordEncoder passwordEncoder() {
|
||||
return new BCryptPasswordEncoder();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.litoralregas.backend_gateway.user;
|
||||
|
||||
import com.litoralregas.backend_gateway.user.dto.CreateUserRequest;
|
||||
import com.litoralregas.backend_gateway.user.dto.UserResponse;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/admin/users")
|
||||
public class UserController {
|
||||
|
||||
private final UserService userService;
|
||||
|
||||
public UserController(UserService userService) {
|
||||
this.userService = userService;
|
||||
}
|
||||
|
||||
@PostMapping
|
||||
public UserResponse create(@RequestBody CreateUserRequest request) {
|
||||
return userService.create(request);
|
||||
}
|
||||
|
||||
@GetMapping
|
||||
public List<UserResponse> findAll() {
|
||||
return userService.findAll();
|
||||
}
|
||||
}
|
||||
@@ -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<UserResponse> 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()
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
) {
|
||||
}
|
||||
@@ -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
|
||||
) {
|
||||
}
|
||||
Reference in New Issue
Block a user