Files
2025-10-01 01:37:34 +00:00

3.2 KiB

👤 CONCEPT: USER

📌 Vue d'ensemble

Le concept USER gère les utilisateurs, authentification, rôles et permissions via Keycloak.

Importance: (Concept fondamental)


🗂️ Fichiers concernés

Entités JPA

Fichier Description
User.java Entité principale utilisateur
UserRole.java Enum (ADMIN, MANAGER, CHEF_CHANTIER, COMPTABLE, OUVRIER)
UserStatus.java Enum (ACTIVE, INACTIVE, LOCKED, SUSPENDED)
Permission.java Enum permissions

Services

Fichier Description
UserService.java Service métier utilisateurs
PermissionService.java Service permissions

Resources

Fichier Description
UserResource.java API REST utilisateurs
AuthResource.java API authentification

📊 Modèle de données

@Entity
@Table(name = "users")
public class User extends PanacheEntityBase {
  @Id
  @GeneratedValue(strategy = GenerationType.UUID)
  private UUID id;
  
  @Column(name = "keycloak_id", unique = true)
  private String keycloakId;
  
  @Column(name = "username", unique = true, nullable = false)
  private String username;
  
  @Column(name = "email", unique = true, nullable = false)
  private String email;
  
  @Column(name = "nom")
  private String nom;
  
  @Column(name = "prenom")
  private String prenom;
  
  @Enumerated(EnumType.STRING)
  @Column(name = "role")
  private UserRole role;
  
  @Enumerated(EnumType.STRING)
  @Column(name = "status")
  private UserStatus status = UserStatus.ACTIVE;
  
  @OneToOne
  @JoinColumn(name = "employe_id")
  private Employe employe;
}

Enum UserRole

public enum UserRole {
  ADMIN,           // Administrateur système
  MANAGER,         // Manager/Directeur
  CHEF_CHANTIER,   // Chef de chantier
  COMPTABLE,       // Comptable
  OUVRIER          // Ouvrier
}

🔌 API REST

Endpoints

Méthode Endpoint Description
GET /api/v1/users Liste utilisateurs
GET /api/v1/users/{id} Détails
POST /api/v1/users Créer
PUT /api/v1/users/{id} Modifier
DELETE /api/v1/users/{id} Supprimer
GET /api/v1/users/me Utilisateur connecté
POST /api/v1/auth/login Connexion
POST /api/v1/auth/logout Déconnexion

💻 Exemples

Créer un utilisateur

curl -X POST http://localhost:8080/api/v1/users \
  -H "Content-Type: application/json" \
  -d '{
    "username": "jdupont",
    "email": "jean.dupont@btpxpress.fr",
    "nom": "Dupont",
    "prenom": "Jean",
    "role": "CHEF_CHANTIER",
    "password": "SecurePass123!"
  }'

Utilisateur connecté

curl -X GET http://localhost:8080/api/v1/users/me \
  -H "Authorization: Bearer $TOKEN"

🔐 Authentification

L'authentification se fait via Keycloak avec OAuth2/OIDC :

  1. L'utilisateur se connecte via Keycloak
  2. Keycloak retourne un JWT token
  3. Le token est envoyé dans le header Authorization: Bearer <token>
  4. Le backend valide le token auprès de Keycloak

Dernière mise à jour: 2025-09-30
Version: 1.0