/
human
/
Mini-bank
Обзор
Документация
Войти
/
human
/
Mini-bank
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
clients/src/main/java/org/example/controller/AuthController.java
59 строк
3 KB
zaytsev al
добавлена миграция бд
30 янв 2025, 14:43
30 янв 2025, 14:43
7cec602
Код
Авторство
О чём код?
package org.example.controller; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.security.SecurityRequirement; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.example.service.security.AuthorizationService; import org.example.service.security.CustomUserDetails; import org.springframework.security.core.Authentication; import org.springframework.security.core.GrantedAuthority; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.stream.Collectors; /** * Авторизация пользователя. */ @RestController @RequestMapping(value = "/auth") @Tag(name = "сервис авторизации", description = "Обработка запросов на вход существующего пользователя.") @RequiredArgsConstructor public class AuthController { private final AuthorizationService authorizationService; @PostMapping(value = "/login") @Operation(summary = "Аутентификация пользователя", description = "Аутентификация пользователя и возврат токена для выполнения запросов.", security = {@SecurityRequirement(name = "basicAuth")} ) @ApiResponses( value = { @ApiResponse(responseCode = "200", description = "Пользователь прошел проверку подлинности", content = {@Content(schema = @Schema(implementation = String.class))}), @ApiResponse(responseCode = "401", description = "Авторизация не пройдена") }) public String login(Authentication authentication) { CustomUserDetails customUserDetails; try { customUserDetails = (CustomUserDetails) authentication.getPrincipal(); } catch (Exception e) { throw new RuntimeException("Не удалось авторизоваться. Не удалось создать токен."); } return authorizationService.login(customUserDetails.getUserId(), customUserDetails.getUsername(), customUserDetails .getAuthorities().stream().map(GrantedAuthority::getAuthority) .collect(Collectors.joining())) .getTokenValue(); } }