68 lines
2.2 KiB
Java
68 lines
2.2 KiB
Java
package fr.titionfire.ffsaf.rest;
|
|
|
|
import fr.titionfire.ffsaf.rest.data.UserInfo;
|
|
import io.quarkus.security.Authenticated;
|
|
import io.quarkus.security.identity.SecurityIdentity;
|
|
import jakarta.inject.Inject;
|
|
import jakarta.ws.rs.GET;
|
|
import jakarta.ws.rs.Path;
|
|
import jakarta.ws.rs.Produces;
|
|
import jakarta.ws.rs.core.MediaType;
|
|
import jakarta.ws.rs.core.Response;
|
|
import org.eclipse.microprofile.config.inject.ConfigProperty;
|
|
import org.eclipse.microprofile.jwt.JsonWebToken;
|
|
import org.eclipse.microprofile.openapi.annotations.Operation;
|
|
import org.eclipse.microprofile.openapi.annotations.responses.APIResponse;
|
|
import org.eclipse.microprofile.openapi.annotations.responses.APIResponses;
|
|
|
|
import java.net.URI;
|
|
import java.net.URISyntaxException;
|
|
|
|
@Path("api/auth")
|
|
public class AuthEndpoints {
|
|
|
|
@ConfigProperty(name = "login_redirect")
|
|
String redirect;
|
|
|
|
@Inject
|
|
SecurityIdentity securityIdentity;
|
|
|
|
@Inject
|
|
JsonWebToken IdToken;
|
|
|
|
@GET
|
|
@Produces(MediaType.TEXT_PLAIN)
|
|
@Operation(summary = "Vérifie si l'utilisateur est authentifié", description = "Cette méthode renvoie true si " +
|
|
"l'utilisateur est authentifié et false sinon.")
|
|
@APIResponses(value = {
|
|
@APIResponse(responseCode = "200", description = "Réussite")
|
|
})
|
|
|
|
public Boolean auth() {
|
|
return !securityIdentity.isAnonymous();
|
|
}
|
|
|
|
@GET
|
|
@Path("/userinfo")
|
|
@Authenticated
|
|
@Produces(MediaType.APPLICATION_JSON)
|
|
@Operation(summary = "Renvoie les informations de l'utilisateur authentifié", description = "Cette méthode renvoie les" +
|
|
" informations de l'utilisateur authentifié sous forme d'objet JSON.")
|
|
@APIResponses(value = {
|
|
@APIResponse(responseCode = "200", description = "Réussite"),
|
|
@APIResponse(responseCode = "401", description = "Utilisateur non authentifié")
|
|
})
|
|
public UserInfo userinfo() {
|
|
return UserInfo.makeUserInfo(IdToken, securityIdentity);
|
|
}
|
|
|
|
@GET
|
|
@Path("/login")
|
|
@Authenticated
|
|
@Produces(MediaType.TEXT_PLAIN)
|
|
@Operation(hidden = true)
|
|
public Response login() throws URISyntaxException {
|
|
return Response.temporaryRedirect(new URI(redirect)).build();
|
|
}
|
|
}
|