package de.lions.unionflow.server.auth; import jakarta.annotation.security.PermitAll; import jakarta.ws.rs.GET; import jakarta.ws.rs.Path; import jakarta.ws.rs.QueryParam; import jakarta.ws.rs.core.Response; import org.jboss.logging.Logger; /** * Resource temporaire pour gérer les callbacks d'authentification OAuth2/OIDC depuis l'application * mobile. */ @Path("/auth") @PermitAll public class AuthCallbackResource { private static final Logger log = Logger.getLogger(AuthCallbackResource.class); /** * Endpoint de callback pour l'authentification OAuth2/OIDC. Redirige vers l'application mobile * avec les paramètres reçus. */ @GET @Path("/callback") public Response handleCallback( @QueryParam("code") String code, @QueryParam("state") String state, @QueryParam("session_state") String sessionState, @QueryParam("error") String error, @QueryParam("error_description") String errorDescription) { try { // Log des paramètres reçus pour debug log.infof("=== CALLBACK DEBUG === Code: %s, State: %s, Session State: %s, Error: %s, Error Description: %s", code, state, sessionState, error, errorDescription); // URL de redirection simple vers l'application mobile String redirectUrl = "dev.lions.unionflow-mobile://callback"; // Si nous avons un code d'autorisation, c'est un succès if (code != null && !code.isEmpty()) { redirectUrl += "?code=" + code; if (state != null && !state.isEmpty()) { redirectUrl += "&state=" + state; } } else if (error != null) { redirectUrl += "?error=" + error; if (errorDescription != null) { redirectUrl += "&error_description=" + errorDescription; } } // Page HTML simple qui redirige automatiquement vers l'app mobile String html = """
Redirection vers l'application UnionFlow...
Si la redirection ne fonctionne pas automatiquement, cliquez ici
Une erreur s'est produite lors de la redirection.
Veuillez fermer cette page et réessayer.
"""; return Response.status(500).entity(errorHtml).type("text/html").build(); } } }