From d9cfa03756d943db67054e2dc0e7dfc0d654725b Mon Sep 17 00:00:00 2001 From: Valentin CZERYBA Date: Sun, 15 May 2022 19:41:28 +0200 Subject: [PATCH] put http 75% wip --- .../com/covas/Resources/UsersRessources.java | 37 ++++++++++++++++++- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/covas/Resources/UsersRessources.java b/src/main/java/com/covas/Resources/UsersRessources.java index 64d978e..51ce3a8 100644 --- a/src/main/java/com/covas/Resources/UsersRessources.java +++ b/src/main/java/com/covas/Resources/UsersRessources.java @@ -1,12 +1,15 @@ package com.covas.Resources; import java.nio.charset.StandardCharsets; +import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.UUID; import javax.annotation.security.RolesAllowed; import javax.inject.Inject; import javax.transaction.Transactional; import javax.ws.rs.core.SecurityContext; +import javax.ws.rs.Consumes; import javax.ws.rs.CookieParam; import javax.ws.rs.GET; import javax.ws.rs.PUT; @@ -17,6 +20,7 @@ import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import com.covas.Classes.Hash; import com.covas.Entity.UsersEntity; import com.covas.Json.UserSingle; @@ -92,9 +96,38 @@ public class UsersRessources { @PUT @RolesAllowed("Admin") + @Consumes(MediaType.APPLICATION_JSON) @Transactional - public Response createUser(@Context SecurityContext ctx, @CookieParam("user") String userCookie){ - return Response.status(Response.Status.CREATED).build(); + public Response createUser(@Context SecurityContext ctx, @CookieParam("user") String userCookie, UsersEntity users){ + if(!ctx.getUserPrincipal().getName().equals(jwt.getName())){ + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build(); + } + UUID kid = UUID.fromString(jwt.getClaim(Claims.kid)); + UsersEntity user = UsersEntity.findById(kid); + if(!checkUserCookie(userCookie, user)){ + return Response.status(Response.Status.FORBIDDEN).build(); + } + + UsersEntity usersOrig = UsersEntity.findByPseudo(users.pseudo); + if(usersOrig != null){ + return Response.status(Response.Status.CONFLICT).build(); + } + UsersEntity usersNew = new UsersEntity(); + usersNew.id = UUID.randomUUID(); + usersNew.name = users.name; + usersNew.pseudo = users.pseudo; + usersNew.firstName = users.firstName; + usersNew.birth = LocalDate.of(users.birth.getYear(), users.birth.getMonth(), users.birth.getDayOfMonth()); + usersNew.created_at = LocalDateTime.now(); + usersNew.updated_at = LocalDateTime.now(); + usersNew.password = Hash.encryptSHA512(Base64.toBase64String(users.password.getBytes(StandardCharsets.UTF_8))); + usersNew.roles = users.roles; + usersNew.status = false; + usersNew.persist(); + if(usersNew.isPersistent()){ + return Response.status(Response.Status.CREATED).build(); + } + return Response.status(Response.Status.NO_CONTENT).build(); }