On va ajouter un champ password à l’entité User.

Voici comment vous pouvez le faire :

Modification de l’entité User

@Entity // Cette classe est une entité, elle peut être persistée dans la base de données
public class User {
  @Id // Cette variable est la clé primaire de l'entité
  @GeneratedValue(strategy=GenerationType.AUTO) // La valeur de cette variable est générée automatiquement
  private Integer id;

  private String name; // Nom de l'utilisateur

  private String email; // Email de l'utilisateur

  private String password; // Ajout du champ password

  @OneToMany// Cette entité a une relation plusieurs-à-un avec l'entité Role
  @JoinColumn(name = "id_type", referencedColumnName = "idType") // Cette colonne est une clé étrangère qui fait référence à idType dans la table Role
  private Role role = new Role(0, ""); // Rôle associé à cet utilisateur


  public String getPassword() { // Getter pour password
    return password;
  }

  public void setPassword(String password) { // Setter pour password
    this.password = password;
  }

  public void setRole(Role role) { // Setter pour role
    this.role = role;
  }
}

Modification du contrôleur UserController

package com.example.demo.Controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import com.example.demo.Model.User;
import com.example.demo.Model.Role;
import com.example.demo.Repository.RoleRepository;
import com.example.demo.Repository.UserRepository;

@Controller // Cette classe est un contrôleur Spring
@RequestMapping(path="/users") // Ce contrôleur gère les requêtes pour le chemin /users
public class UserController {
  @Autowired // Injection de dépendance pour UserRepository
  private UserRepository userRepository;
  
  @Autowired // Injection de dépendance pour RoleRepository
  private RoleRepository roleRepository;

  @PostMapping(path="/add") // Cette méthode gère les requêtes POST pour le chemin /users/add
  public @ResponseBody String addNewUser (@RequestParam String name, @RequestParam String email, @RequestParam String password) { // Ajout du paramètre password
    User n = new User();
    n.setName(name);
    n.setEmail(email);
    n.setPassword(password); // Définition du password de l'utilisateur
    userRepository.save(n); // Sauvegarde de l'utilisateur dans la base de données
    return "Saved"; // Retourne une réponse indiquant que l'utilisateur a été enregistré
  }

  // Les autres méthodes du contrôleur vont ici...
}



Ce code définit une classe UserController qui est un contrôleur Spring. La classe est annotée avec @Controller et @RequestMapping(path="/users"), ce qui indique qu’elle gère les requêtes pour le chemin /users. La classe contient des variables userRepository et roleRepository qui sont injectées avec des instances de UserRepository et RoleRepository grâce à l’annotation @Autowired. La méthode addNewUser gère les requêtes POST pour le chemin /users/add et prend en paramètre des valeurs pour le nom, l’email et le mot de passe d’un utilisateur. La méthode crée une nouvelle instance de User, définit ses valeurs et la sauvegarde dans la base de données grâce à la méthode save de userRepository. La méthode retourne une réponse indiquant que l’utilisateur a été enregistré.
 

Le mot de passe en clair, ce n'est plus  à la mode !

Pour des raisons de sécurité, il est généralement recommandé de stocker les mots de passe sous une forme hachée plutôt que sous forme de texte brut. De plus, vous devez ajouter une validation pour s’assurer que le mot de passe est suffisamment fort (par exemple, il pourrait être nécessaire d’avoir une certaine longueur, de contenir des chiffres et des lettres, etc.).
 
 
 
 
Modifié le: mardi 5 septembre 2023, 05:01