Skip to content

Commit f30a4b0

Browse files
docs(swagger): personalize Swagger UI for user registration
1 parent b31cf08 commit f30a4b0

File tree

4 files changed

+25
-4
lines changed

4 files changed

+25
-4
lines changed

securetimenotes/src/main/java/securetimenotes/andrefelipebarros/securetimenotes/controllers/AuthenticationController.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import io.swagger.v3.oas.annotations.Operation;
44
import io.swagger.v3.oas.annotations.responses.ApiResponse;
5-
5+
import io.swagger.v3.oas.annotations.tags.Tag;
66

77
import org.springframework.web.bind.annotation.RequestMapping;
88
import org.springframework.web.bind.annotation.RestController;
@@ -30,6 +30,7 @@
3030

3131
@RestController
3232
@RequestMapping("auth")
33+
@Tag(name = "Authentificação do Usuário", description = "Endpoints para criar autentificação do usuário.")
3334
@CrossOrigin(origins = "*")
3435
public class AuthenticationController {
3536
@Autowired

securetimenotes/src/main/java/securetimenotes/andrefelipebarros/securetimenotes/controllers/NotesController.java

+11-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package securetimenotes.andrefelipebarros.securetimenotes.controllers;
22

3+
import io.swagger.v3.oas.annotations.Operation;
4+
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
5+
import io.swagger.v3.oas.annotations.tags.Tag;
6+
37
import org.springframework.web.bind.annotation.RequestMapping;
48
import org.springframework.web.bind.annotation.RestController;
59

@@ -17,10 +21,12 @@
1721
import org.springframework.web.bind.annotation.PostMapping;
1822
import org.springframework.web.bind.annotation.RequestBody;
1923

20-
2124
@RestController
2225
@RequestMapping("user")
26+
@Tag(name = "Notas do Usuário", description = "Endpoints para criar e visualizar notas do usuário autenticado.")
27+
@SecurityRequirement(name = "bearerAuth")
2328
public class NotesController {
29+
2430
@Autowired
2531
NotesRespository noteRepository;
2632

@@ -29,12 +35,16 @@ public class NotesController {
2935

3036
@GetMapping("/notes")
3137
@PreAuthorize("hasRole('USER')")
38+
@Operation(summary = "Listar notas do usuário",
39+
description = "Retorna todas as notas do usuário autenticado. É necessário fornecer um token de autenticação.")
3240
public List<Note> getNotes(@AuthenticationPrincipal User user) {
3341
return noteRepository.findByUser(user);
3442
}
3543

3644
@PostMapping("/notes")
3745
@PreAuthorize("hasRole('USER')")
46+
@Operation(summary = "Criar nova nota",
47+
description = "Cria uma nova nota associada ao usuário autenticado. Requer autenticação.")
3848
public void postNotes(@AuthenticationPrincipal User user, @RequestBody Note note) {
3949
note.setUser(user);
4050
noteRepository.save(note);

securetimenotes/src/main/java/securetimenotes/andrefelipebarros/securetimenotes/infra/security/SecurityConfiguration.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws
3636
.requestMatchers(HttpMethod.POST, "/auth/login").permitAll()
3737
.requestMatchers(HttpMethod.POST, "/auth/register").permitAll()
3838
.requestMatchers("/h2-console/**").permitAll()
39-
// .requestMatchers("/swagger").permitAll()
39+
.requestMatchers("/swagger**", "/v3/api-docs/**", "/swagger-ui/**", "/swagger-ui.html").permitAll()
4040
.anyRequest().authenticated()
4141
)
4242
.addFilterBefore(securityFilter, UsernamePasswordAuthenticationFilter.class)
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
11
package securetimenotes.andrefelipebarros.securetimenotes.model.user.body;
22

3+
import io.swagger.v3.oas.annotations.media.Schema;
34
import securetimenotes.andrefelipebarros.securetimenotes.model.user.UserRole;
45

56
//Register Body:
6-
public record RegisterDTO(String username, String password, UserRole role) {}
7+
public record RegisterDTO(
8+
@Schema(description = "Email válido do usuário")
9+
String username,
10+
11+
@Schema(description = "Senha com no mínimo 8 caracteres, 1 letra maiúscula, 1 número e 1 caractere especial")
12+
String password,
13+
14+
@Schema(hidden = true)
15+
UserRole role
16+
) {}

0 commit comments

Comments
 (0)