my project diagram
services
├── api-gateway
│ └── ZuulProxy
├── eureka-server
│ └──
├── adminpanel
│ └──@EnableFeignClients
├── auth
│ └──FeignClient
├── docker-compose.yml
Service FeignClient
@FeignClient(name = "users", url = "http://192.168.111.67:8082")
public interface UserFeignClient {
@GetMapping("/api/v1/sso/user/{userId}/")
public UserDTO getUserById(@PathVariable Long userId);
}
UserController
@GetMapping(GET_USER)
public UserDTO getUserById(@PathVariable Long userId) {
UserEntity entities = userRepository
.findById(userId)
.orElseThrow(() ->
new NotFoundException(String.format("Пользователь \"%s\" не найден.", userId))
);
return userFactory.makeUserDTO(entities);
}
Authorization
@PostMapping("/login/")
public Map<String, Object> performLogin(@RequestBody UserDTO userDTO, BindingResult bindingResult){
UsernamePasswordAuthenticationToken authInputToken =
new UsernamePasswordAuthenticationToken(userDTO.getUsername(),
userDTO.getCredentialEntity().getPassword());
String token = jwtUtil.generateToken(userDTO.getUsername());
UserDTO userEntity = feignClient.getUserById(Long.valueOf(userDTO.getUsername()));
try {
authenticationManager.authenticate(authInputToken);
} catch (Exception e) {
throw new BadRequestException("Неверный пароль");
}
HashMap<String, Object> newPerson = new HashMap<>();
newPerson.put("id", userEntity.getId());
newPerson.put("first_name", userEntity.getFirst_name());
newPerson.put("last_name", userEntity.getLast_name());
newPerson.put("patronymic", userEntity.getPatronymic());
newPerson.put("email", userEntity.getEmail());
newPerson.put("avatar", userEntity.getAvatar());
return Map.of("token",
token, "user", newPerson);
}
First time encountering OpenFeign and ZuulProxy the user is created in the admin service, I need to associate the admin service with authorization, username and password to transfer it to authorization