View Javadoc
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  /** Exposes the endpoint that authenticates users. */
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  }