3.2 KiB
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 :
- L'utilisateur se connecte via Keycloak
- Keycloak retourne un JWT token
- Le token est envoyé dans le header
Authorization: Bearer <token> - Le backend valide le token auprès de Keycloak
Dernière mise à jour: 2025-09-30
Version: 1.0