From df15b0d19e2630930fad5b47e62ff15c2b42fa58 Mon Sep 17 00:00:00 2001 From: Valentin CZERYBA Date: Tue, 3 Jan 2023 17:26:44 +0100 Subject: [PATCH] add GET for profile --- .../java/com/covas/Json/ProfileSingle.java | 15 ++++ .../covas/Resources/ProfileRessources.java | 68 ++++++++++++++++++- 2 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/covas/Json/ProfileSingle.java diff --git a/src/main/java/com/covas/Json/ProfileSingle.java b/src/main/java/com/covas/Json/ProfileSingle.java new file mode 100644 index 0000000..789c4ad --- /dev/null +++ b/src/main/java/com/covas/Json/ProfileSingle.java @@ -0,0 +1,15 @@ +package com.covas.Json; + +import io.quarkus.runtime.annotations.RegisterForReflection; + +@RegisterForReflection +public class ProfileSingle { + + public final String description; + + public ProfileSingle(String description){ + this.description = description; + + } + +} diff --git a/src/main/java/com/covas/Resources/ProfileRessources.java b/src/main/java/com/covas/Resources/ProfileRessources.java index 7a5c970..58ffeef 100644 --- a/src/main/java/com/covas/Resources/ProfileRessources.java +++ b/src/main/java/com/covas/Resources/ProfileRessources.java @@ -1,17 +1,28 @@ package com.covas.Resources; - +import javax.annotation.security.RolesAllowed; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import javax.ws.rs.GET; import javax.ws.rs.core.SecurityContext; +import javax.ws.rs.PathParam; +import javax.ws.rs.core.SecurityContext; +import javax.ws.rs.CookieParam; +import javax.ws.rs.core.Context; import org.eclipse.microprofile.jwt.JsonWebToken; import java.nio.charset.StandardCharsets; +import java.util.UUID; +import org.eclipse.microprofile.jwt.Claims; + +import com.covas.Json.ProfileSingle; + import org.postgresql.shaded.com.ongres.scram.common.bouncycastle.base64.Base64; import javax.inject.Inject; import com.covas.Entity.UsersEntity; +import com.covas.Entity.ProfilEntity; import javax.ws.rs.Path; @@ -45,5 +56,60 @@ public class ProfileRessources { return Response.Status.OK; } + // GET + + @GET + @RolesAllowed("Admin") + @Path("{id}") + public Response getSingleProfile(@PathParam("id") String id, @CookieParam("user") String userCookie, + @Context SecurityContext ctx) { + UUID kid = UUID.fromString(jwt.getClaim(Claims.kid)); + UsersEntity user = UsersEntity.findById(kid); + Response.Status status = getResponseCheck(ctx, userCookie, user); + Response responseHttp = Response.status(status).build(); + if (status.equals(Response.Status.OK)) { + UUID uid = UUID.fromString(id); + UsersEntity users = UsersEntity.findById(uid); + ProfilEntity profile = users.profile; + responseHttp = Response.status(Response.Status.NOT_FOUND).build(); + if (profile != null) { + responseHttp = Response.ok(users).build(); + } + + } + return responseHttp; + } + + @GET + @RolesAllowed("User") + public Response getInfoProfile(@Context SecurityContext ctx, @CookieParam("user") String userCookie) { + UUID kid = UUID.fromString(jwt.getClaim(Claims.kid)); + UsersEntity user = UsersEntity.findById(kid); + String description = ""; + Response.Status status = getResponseCheck(ctx, userCookie, user); + if (status.equals(Response.Status.OK)) { + if (user == null) { + status = Response.Status.NOT_FOUND; + } + if (!checkUserCookie(userCookie, user)) { + status = Response.Status.FORBIDDEN; + } + if (user != null){ + ProfilEntity profile = user.profile; + if(profile == null){ + status = Response.Status.NOT_FOUND; + } else { + description = profile.description; + } + } + } + Response responseHttp = Response.status(status).build(); + if (status.equals(Response.Status.OK)) { + responseHttp = Response.status(status).entity(new ProfileSingle(description)) + .build(); + } + return responseHttp; + } + } \ No newline at end of file