Skip to content

Commit 2ab696a

Browse files
committed
Added JavaDoc
1 parent ad9879f commit 2ab696a

File tree

6 files changed

+126
-3
lines changed

6 files changed

+126
-3
lines changed

Poseiden-skeleton/src/main/java/com/nnk/springboot/config/SecurityConfig.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,15 @@ public class SecurityConfig {
1818
@Autowired
1919
private UserDetailsService userDetailsService;
2020

21+
/**
22+
* Configure la chaîne de filtres de sécurité pour l'application.
23+
* Autorise l'accès public aux pages de login et d'inscription,
24+
* exige une authentification pour toute autre requête.
25+
*
26+
* @param http configuration HTTP
27+
* @return la chaîne de filtres configurée
28+
* @throws Exception en cas d'erreur de configuration
29+
*/
2130
@Bean
2231
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
2332
http
@@ -41,6 +50,14 @@ public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Excepti
4150
return http.build();
4251
}
4352

53+
/**
54+
* Fournit un gestionnaire d'authentification basé sur un fournisseur DAO.
55+
* Utilise un encodage BCrypt et un UserDetailsService personnalisé.
56+
*
57+
* @param userDetailsService service pour charger les utilisateurs
58+
* @param passwordEncoder encodeur de mots de passe
59+
* @return le gestionnaire d'authentification
60+
*/
4461
@Bean
4562
public AuthenticationManager authenticationManager(UserDetailsService userDetailsService, PasswordEncoder passwordEncoder) throws Exception {
4663
DaoAuthenticationProvider authProvider = new DaoAuthenticationProvider();
@@ -50,7 +67,11 @@ public AuthenticationManager authenticationManager(UserDetailsService userDetail
5067
return new ProviderManager(authProvider);
5168
}
5269

53-
70+
/**
71+
* Fournit un encodeur de mot de passe utilisant l'algorithme BCrypt.
72+
*
73+
* @return un encodeur BCrypt
74+
*/
5475
@Bean
5576
PasswordEncoder passwordEncoder() {
5677
return new BCryptPasswordEncoder();

Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/LoginController.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,34 @@
77
import org.springframework.web.bind.annotation.RequestMapping;
88
import org.springframework.web.servlet.ModelAndView;
99

10+
/**
11+
* Contrôleur gérant les routes liées à l'authentification utilisateur.
12+
* Utilisé pour afficher la page de login et les erreurs d'accès.
13+
*/
1014
@Controller
1115
@RequestMapping("app")
1216
public class LoginController {
1317

1418
@Autowired
1519
private UserRepository userRepository;
1620

21+
/**
22+
* Affiche la page de login.
23+
*
24+
* @return la vue "login"
25+
*/
1726
@GetMapping("login")
1827
public ModelAndView login() {
1928
ModelAndView mav = new ModelAndView();
2029
mav.setViewName("login");
2130
return mav;
2231
}
2332

33+
/**
34+
* Affiche la liste des utilisateurs (accessible après connexion).
35+
*
36+
* @return la vue "user/list" avec les utilisateurs
37+
*/
2438
@GetMapping("secure/article-details")
2539
public ModelAndView getAllUserArticles() {
2640
ModelAndView mav = new ModelAndView();
@@ -29,6 +43,11 @@ public ModelAndView getAllUserArticles() {
2943
return mav;
3044
}
3145

46+
/**
47+
* Affiche une page d'erreur 403 personnalisée en cas d'accès non autorisé.
48+
*
49+
* @return la vue "403"
50+
*/
3251
@GetMapping("error")
3352
public ModelAndView error() {
3453
ModelAndView mav = new ModelAndView();

Poseiden-skeleton/src/main/java/com/nnk/springboot/controllers/UserController.java

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@
1414
import org.springframework.web.bind.annotation.PostMapping;
1515
import org.springframework.web.bind.annotation.RequestMapping;
1616

17-
17+
/**
18+
* Contrôleur Spring MVC pour la gestion des utilisateurs.
19+
* Fournit les opérations CRUD : création, lecture, mise à jour et suppression.
20+
*/
1821
@Controller
1922
public class UserController {
2023
@Autowired
@@ -23,18 +26,38 @@ public class UserController {
2326
@Autowired
2427
private UserService userService;
2528

29+
/**
30+
* Affiche la liste des utilisateurs.
31+
*
32+
* @param model Le modèle pour transmettre les données à la vue.
33+
* @return La vue "user/list".
34+
*/
2635
@RequestMapping("/user/list")
2736
public String home(Model model)
2837
{
2938
model.addAttribute("users", userRepository.findAll());
3039
return "user/list";
3140
}
3241

42+
/**
43+
* Affiche le formulaire d'ajout d'utilisateur.
44+
*
45+
* @param user L'objet utilisateur vide pour le binding.
46+
* @return La vue "user/add".
47+
*/
3348
@GetMapping("/user/add")
34-
public String addUser(User bid) {
49+
public String addUser(User user) {
3550
return "user/add";
3651
}
3752

53+
/**
54+
* Valide et enregistre un nouvel utilisateur.
55+
*
56+
* @param user L'utilisateur soumis.
57+
* @param result Résultat de la validation.
58+
* @param model Le modèle utilisé pour la vue.
59+
* @return Redirection vers la liste ou vue "add" en cas d'erreur.
60+
*/
3861
@PostMapping("/user/validate")
3962
public String validate(@Valid User user, BindingResult result, Model model) {
4063
if (!result.hasErrors()) {
@@ -46,6 +69,13 @@ public String validate(@Valid User user, BindingResult result, Model model) {
4669
return "user/add";
4770
}
4871

72+
/**
73+
* Affiche le formulaire de mise à jour pour un utilisateur existant.
74+
*
75+
* @param id L'identifiant de l'utilisateur à modifier.
76+
* @param model Le modèle avec l'utilisateur trouvé.
77+
* @return La vue "user/update".
78+
*/
4979
@GetMapping("/user/update/{id}")
5080
public String showUpdateForm(@PathVariable("id") Integer id, Model model) {
5181
User user = userRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Invalid user Id:" + id));
@@ -54,6 +84,15 @@ public String showUpdateForm(@PathVariable("id") Integer id, Model model) {
5484
return "user/update";
5585
}
5686

87+
/**
88+
* Met à jour un utilisateur existant après validation.
89+
*
90+
* @param id L'identifiant de l'utilisateur.
91+
* @param user Les nouvelles données de l'utilisateur.
92+
* @param result Résultat de la validation.
93+
* @param model Le modèle pour la vue.
94+
* @return Redirection vers la liste des utilisateurs.
95+
*/
5796
@PostMapping("/user/update/{id}")
5897
public String updateUser(@PathVariable("id") Integer id, @Valid User user,
5998
BindingResult result, Model model) {
@@ -69,6 +108,13 @@ public String updateUser(@PathVariable("id") Integer id, @Valid User user,
69108
return "redirect:/user/list";
70109
}
71110

111+
/**
112+
* Supprime un utilisateur par son identifiant.
113+
*
114+
* @param id L'identifiant de l'utilisateur à supprimer.
115+
* @param model Le modèle utilisé pour la vue.
116+
* @return Redirection vers la liste des utilisateurs.
117+
*/
72118
@GetMapping("/user/delete/{id}")
73119
public String deleteUser(@PathVariable("id") Integer id, Model model) {
74120
User user = userRepository.findById(id).orElseThrow(() -> new IllegalArgumentException("Invalid user Id:" + id));

Poseiden-skeleton/src/main/java/com/nnk/springboot/domain/User.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
import lombok.NoArgsConstructor;
1111
import lombok.Setter;
1212

13+
/**
14+
* Entité représentant un utilisateur du système.
15+
* Elle contient les champs nécessaires à l'authentification et à l'autorisation.
16+
*/
1317
@Setter
1418
@Getter
1519
@AllArgsConstructor
@@ -20,13 +24,24 @@ public class User {
2024
@Id
2125
@GeneratedValue(strategy= GenerationType.AUTO)
2226
private Integer id;
27+
28+
/** Nom d'utilisateur */
2329
@NotBlank(message = "Username is mandatory")
2430
private String username;
31+
32+
/**
33+
* Mot de passe sécurisé, soumis à une validation forte.
34+
* Doit contenir au moins 8 caractères, une majuscule, un chiffre et un symbole.
35+
*/
2536
@Pattern(regexp = "^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\\W).{8,}$", message = "the password must contain at least 8 characters, 1 uppercase letter, 1 lowercase letter, 1 number and a special character")
2637
@NotBlank(message = "Password is mandatory")
2738
private String password;
39+
40+
/** Nom complet de l'utilisateur. */
2841
@NotBlank(message = "FullName is mandatory")
2942
private String fullname;
43+
44+
/** Rôle de l'utilisateur dans l'application (ex: USER, ADMIN). */
3045
@NotBlank(message = "Role is mandatory")
3146
private String role;
3247
}

Poseiden-skeleton/src/main/java/com/nnk/springboot/services/UserDetailsService.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010

1111
import java.util.List;
1212

13+
/**
14+
* Service chargé de récupérer les détails de l'utilisateur pour Spring Security.
15+
* Implémente {@link org.springframework.security.core.userdetails.UserDetailsService}.
16+
*/
1317
@Service
1418
public class UserDetailsService implements org.springframework.security.core.userdetails.UserDetailsService {
1519

@@ -20,6 +24,13 @@ public UserDetailsService(UserRepository userRepository) {
2024
this.userRepository = userRepository;
2125
}
2226

27+
/**
28+
* Charge un utilisateur par son nom d'utilisateur (email dans ce cas).
29+
*
30+
* @param username le nom d'utilisateur (email)
31+
* @return les détails de l'utilisateur pour Spring Security
32+
* @throws UsernameNotFoundException si aucun utilisateur correspondant n'est trouvé
33+
*/
2334
@Override
2435
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
2536
logger.info("Tentative de chargement de l'utilisateur avec l'email: {}", username);

Poseiden-skeleton/src/main/java/com/nnk/springboot/services/UserService.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
import org.springframework.security.crypto.password.PasswordEncoder;
88
import org.springframework.stereotype.Service;
99

10+
/**
11+
* Service responsable de la gestion des utilisateurs.
12+
* Fournit les opérations de création et d'encodage des mots de passe.
13+
*/
1014
@Service
1115
@Slf4j
1216
public class UserService {
@@ -17,6 +21,13 @@ public class UserService {
1721
@Autowired
1822
private PasswordEncoder passwordEncoder;
1923

24+
/**
25+
* Crée un nouvel utilisateur après avoir vérifié son unicité et encodé son mot de passe.
26+
*
27+
* @param user L'utilisateur à créer.
28+
* @return L'utilisateur sauvegardé.
29+
* @throws RuntimeException si l'utilisateur existe déjà.
30+
*/
2031
public User create(User user){
2132
if (userRepository.existsByUsername(user.getUsername())){
2233
throw new RuntimeException("L'utilisateur existe déjà");

0 commit comments

Comments
 (0)