#29 Контроллер аутентификации по одноразовому коду
Сделать код-ревью контроллера.:
@RestController
public class SessionController {
@Autowired
UserRepository userRepository;
@GetMapping("/session")
private void getSession(@RequestParam Integer userId) {
Optional<User> user = userRepository.findById(userId);
String code = UUID.randomUUID().toString().substring(0, 6);
if (user.isPresent()) {
user.get().setConfirmationCode(code);
MailSenderUtil.sendEmail(user.get().getEmail(), "Enter code: " + code);
userRepository.save(user.get());
} else {
throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "User not found");
}
}
@PostMapping("/session/confirm")
private User confirmSession(@RequestParam Integer userId, @RequestParam String code) {
Optional<User> user = userRepository.findById(userId);
String session = UUID.randomUUID().toString();
if (user.isPresent()) {
if (code.equals(user.get().getConfirmationCode())) {
user.get().setSession(session);
userRepository.save(user.get());
return user.get();
} else {
throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "Wrong code");
}
} else {
throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "User not found");
}
}
}
Разбор вопроса
Войди, чтобы начать диалог
Ментор ведёт диалог по текущему вопросу и учитывает предыдущие сообщения.
Войти
Доступно с Premium
Это лишь одно из решений, доступных с Premium. А ещё:
- 250+ продвинутых лекций
- 1300+ практических заданий
- 500+ решений задач с реальных собеседований
- Именные сертификаты Java Hub
- Расширенный доступ к AI-ментору