1 package fr.tiogars.domaintemplate.domains.auth.controllers;
2
3 import org.springframework.http.ResponseEntity;
4 import org.springframework.web.bind.annotation.PostMapping;
5 import org.springframework.web.bind.annotation.RequestBody;
6 import org.springframework.web.bind.annotation.RestController;
7
8 import fr.tiogars.domaintemplate.domains.auth.models.LoginRequest;
9 import fr.tiogars.domaintemplate.domains.auth.models.LoginResponse;
10 import fr.tiogars.domaintemplate.domains.auth.services.AuthService;
11 import io.swagger.v3.oas.annotations.Operation;
12 import io.swagger.v3.oas.annotations.responses.ApiResponse;
13 import io.swagger.v3.oas.annotations.tags.Tag;
14 import jakarta.validation.Valid;
15
16
17 @Tag(name = "Authentication", description = "JWT authentication endpoints.")
18 @RestController
19 public class AuthLoginController {
20
21 private final AuthService service;
22
23 AuthLoginController(AuthService service) {
24 this.service = service;
25 }
26
27 @Operation(summary = "Login", description = "Authenticates credentials and returns a JWT access token.")
28 @ApiResponse(responseCode = "200", description = "Credentials are valid.")
29 @ApiResponse(responseCode = "401", description = "Credentials are invalid.")
30 @PostMapping("/api/v1/auth/login")
31 ResponseEntity<LoginResponse> login(@Valid @RequestBody LoginRequest request) {
32 return ResponseEntity.ok(service.login(request));
33 }
34 }