diff --git a/src/main/java/com/gbcm/server/api/interfaces/AuthService.java b/src/main/java/com/gbcm/server/api/interfaces/AuthService.java deleted file mode 100644 index c29f67c..0000000 --- a/src/main/java/com/gbcm/server/api/interfaces/AuthService.java +++ /dev/null @@ -1,156 +0,0 @@ -package com.gbcm.server.api.interfaces; - -import com.gbcm.server.api.dto.auth.LoginRequestDTO; -import com.gbcm.server.api.dto.auth.LoginResponseDTO; -import com.gbcm.server.api.dto.auth.PasswordResetDTO; -import com.gbcm.server.api.dto.common.SuccessResponseDTO; -import com.gbcm.server.api.dto.user.UserDTO; -import com.gbcm.server.api.exceptions.AuthenticationException; -import com.gbcm.server.api.exceptions.GBCMException; - -import jakarta.validation.Valid; -import jakarta.ws.rs.*; -import jakarta.ws.rs.core.MediaType; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.responses.ApiResponses; -import io.swagger.v3.oas.annotations.tags.Tag; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; - -/** - * Interface de service pour l'authentification et l'autorisation. - * Fournit tous les endpoints nécessaires pour la gestion des sessions utilisateur, - * l'authentification JWT et la réinitialisation des mots de passe. - * - * @author GBCM Development Team - * @version 1.0 - * @since 1.0 - */ -@Path("/auth") -@Produces(MediaType.APPLICATION_JSON) -@Consumes(MediaType.APPLICATION_JSON) -@Tag(name = "Authentication", description = "Services d'authentification et autorisation GBCM") -public interface AuthService { - - /** - * Connexion utilisateur - */ - @POST - @Path("/login") - @Operation( - summary = "Connexion utilisateur", - description = "Authentifie un utilisateur avec email et mot de passe" - ) - @ApiResponse(responseCode = "200", description = "Connexion réussie") - @ApiResponse(responseCode = "401", description = "Identifiants invalides") - @ApiResponse(responseCode = "400", description = "Données de requête invalides") - LoginResponseDTO login( - @Parameter(description = "Informations de connexion", required = true) - LoginRequestDTO loginRequest - ) throws AuthenticationException, GBCMException; - - /** - * Déconnexion utilisateur - */ - @POST - @Path("/logout") - @Operation( - summary = "Déconnexion utilisateur", - description = "Invalide le token d'authentification" - ) - @ApiResponse(responseCode = "200", description = "Déconnexion réussie") - @ApiResponse(responseCode = "401", description = "Token invalide") - void logout( - @Parameter(description = "Token d'authentification", required = true) - @HeaderParam("Authorization") String authToken - ) throws AuthenticationException; - - /** - * Rafraîchissement du token - */ - @POST - @Path("/refresh") - @Operation( - summary = "Rafraîchissement du token", - description = "Génère un nouveau token d'authentification" - ) - @ApiResponse(responseCode = "200", description = "Token rafraîchi") - @ApiResponse(responseCode = "401", description = "Token de rafraîchissement invalide") - LoginResponseDTO refreshToken( - @Parameter(description = "Token de rafraîchissement", required = true) - @FormParam("refreshToken") String refreshToken - ) throws AuthenticationException; - - /** - * Validation du token - */ - @GET - @Path("/validate") - @Operation( - summary = "Validation du token", - description = "Vérifie la validité d'un token d'authentification" - ) - @ApiResponse(responseCode = "200", description = "Token valide") - @ApiResponse(responseCode = "401", description = "Token invalide ou expiré") - UserDTO validateToken( - @Parameter(description = "Token d'authentification", required = true) - @HeaderParam("Authorization") String authToken - ) throws AuthenticationException; - - /** - * Demande de réinitialisation de mot de passe - */ - @POST - @Path("/forgot-password") - @Operation( - summary = "Mot de passe oublié", - description = "Envoie un email de réinitialisation de mot de passe" - ) - @ApiResponse(responseCode = "200", description = "Email envoyé") - @ApiResponse(responseCode = "404", description = "Utilisateur non trouvé") - void forgotPassword( - @Parameter(description = "Adresse email", required = true) - @FormParam("email") String email - ) throws GBCMException; - - /** - * Réinitialisation du mot de passe - */ - @POST - @Path("/reset-password") - @Operation( - summary = "Réinitialisation du mot de passe", - description = "Réinitialise le mot de passe avec un token de réinitialisation" - ) - @ApiResponse(responseCode = "200", description = "Mot de passe réinitialisé") - @ApiResponse(responseCode = "400", description = "Token invalide ou expiré") - void resetPassword( - @Parameter(description = "Token de réinitialisation", required = true) - @FormParam("resetToken") String resetToken, - @Parameter(description = "Nouveau mot de passe", required = true) - @FormParam("newPassword") String newPassword - ) throws GBCMException; - - /** - * Changement de mot de passe - */ - @PUT - @Path("/change-password") - @Operation( - summary = "Changement de mot de passe", - description = "Change le mot de passe d'un utilisateur authentifié" - ) - @ApiResponse(responseCode = "200", description = "Mot de passe changé") - @ApiResponse(responseCode = "401", description = "Non autorisé") - @ApiResponse(responseCode = "400", description = "Ancien mot de passe incorrect") - void changePassword( - @Parameter(description = "Token d'authentification", required = true) - @HeaderParam("Authorization") String authToken, - @Parameter(description = "Ancien mot de passe", required = true) - @FormParam("oldPassword") String oldPassword, - @Parameter(description = "Nouveau mot de passe", required = true) - @FormParam("newPassword") String newPassword - ) throws AuthenticationException, GBCMException; -}