Java Spring Boot OpenFeign

Viewed 22

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

0 Answers
Related