/
Chebarik
/
PackageManagement
Обзор
Документация
Войти
/
Chebarik
/
PackageManagement
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/main/java/com/packagemanagement/presentation/controller/AuthController.java
66 строк
3 KB
Николай Мехоношин
Implemented non functional requirements
14 апр 2026, 18:37
14 апр 2026, 18:37
2e86838
Код
Авторство
О чём код?
package com.packagemanagement.presentation.controller; import com.packagemanagement.application.service.AuthenticationService; import com.packagemanagement.presentation.request.LoginRequest; import com.packagemanagement.presentation.request.RegisterRequest; import com.packagemanagement.presentation.response.ApiResponse; import com.packagemanagement.presentation.response.TokenResponse; import jakarta.servlet.http.HttpServletRequest; import jakarta.validation.Valid; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api/auth") public class AuthController { private static final Logger log = LoggerFactory.getLogger(AuthController.class); private final AuthenticationService authenticationService; public AuthController(AuthenticationService authenticationService) { this.authenticationService = authenticationService; } @PostMapping("/login") public ResponseEntity<ApiResponse<TokenResponse>> login( @Valid @RequestBody LoginRequest request, HttpServletRequest httpRequest) { log.info("Login attempt for user: {}", request.username()); String clientIp = resolveClientIp(httpRequest); TokenResponse token = authenticationService.authenticate( request.username(), request.password(), clientIp); return ResponseEntity.ok(ApiResponse.success(token, "Authentication successful")); } @PostMapping("/register") public ResponseEntity<ApiResponse<TokenResponse>> register( @Valid @RequestBody RegisterRequest request, HttpServletRequest httpRequest) { log.info("Registration attempt for user: {}", request.username()); String clientIp = resolveClientIp(httpRequest); TokenResponse token = authenticationService.register( request.username(), request.password(), request.email(), clientIp); return ResponseEntity .status(HttpStatus.CREATED) .body(ApiResponse.success(token, "Registration successful")); } private String resolveClientIp(HttpServletRequest request) { String xForwardedFor = request.getHeader("X-Forwarded-For"); if (xForwardedFor != null && !xForwardedFor.isEmpty()) { return xForwardedFor.split(",")[0].trim(); } return request.getRemoteAddr(); } }