package ru.soune.no_copy.controller; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import ru.soune.no_copy.dto.AuthResponse; import ru.soune.no_copy.dto.LoginRequest; import ru.soune.no_copy.dto.LoginResponse; import ru.soune.no_copy.dto.RegisterRequest; import ru.soune.no_copy.entity.AuthToken; import ru.soune.no_copy.exception.TokenNotFoundException; import ru.soune.no_copy.repository.AuthTokenRepository; import ru.soune.no_copy.service.AuthService; import java.util.Map; import java.util.Optional; @RestController @RequestMapping("v1/api/auth") @RequiredArgsConstructor public class AuthController { private final AuthService authService; private final AuthTokenRepository authTokenRepository; @PostMapping("/login") public ResponseEntity login(@Valid @RequestBody LoginRequest request) { AuthToken login = authService.login(request); return ResponseEntity.ok(new LoginResponse(true, login.getUser().getEmail(), login.getToken(),login.getExpiresAt().toString())); } @PostMapping("/logout") public ResponseEntity logout(@RequestHeader("Authorization") String tokenHeader) { String token = tokenHeader.replace("Bearer ", ""); Optional opToken = authTokenRepository.findByToken(token); if (opToken.isEmpty()) { throw new TokenNotFoundException("Token not found"); } authService.logout(token); return ResponseEntity.ok(Map.of("success", true)); } }