diff --git a/src/main/java/fr/la_banquise/backend/rest/TpEndpoints.java b/src/main/java/fr/la_banquise/backend/rest/TpEndpoints.java index c6f9564..1c17ae1 100644 --- a/src/main/java/fr/la_banquise/backend/rest/TpEndpoints.java +++ b/src/main/java/fr/la_banquise/backend/rest/TpEndpoints.java @@ -1,6 +1,7 @@ package fr.la_banquise.backend.rest; import fr.la_banquise.backend.services.TpService; +import io.quarkus.security.identity.SecurityIdentity; import fr.la_banquise.backend.rest.request.TpRequest; import jakarta.annotation.security.RolesAllowed; import jakarta.inject.Inject; @@ -17,13 +18,16 @@ import jakarta.ws.rs.core.Response; * TpEndpoints */ @Path("/api/tps") +@RolesAllowed("pingouin") public class TpEndpoints { + @Inject + SecurityIdentity identity; + @Inject TpService tpService; @GET - @RolesAllowed("pingouin") @Produces(MediaType.APPLICATION_JSON) public Response getAllTps() { return Response.ok(tpService.getAllTps()).build(); @@ -33,12 +37,13 @@ public class TpEndpoints { @Produces(MediaType.APPLICATION_JSON) @Path("{id}") public Response getTp(@PathParam("id") Long id) { - return Response.ok(tpService.getTp(id)).build(); + return Response.ok(tpService.getTp(id, identity.getPrincipal().getName())).build(); } @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) + @RolesAllowed("root") public Response createTp(TpRequest tp) { System.out.println(tp.date); return Response.ok(tpService.createTp(tp)).build(); diff --git a/src/main/java/fr/la_banquise/backend/rest/UserEndpoints.java b/src/main/java/fr/la_banquise/backend/rest/UserEndpoints.java index 8242c57..55eb6cd 100644 --- a/src/main/java/fr/la_banquise/backend/rest/UserEndpoints.java +++ b/src/main/java/fr/la_banquise/backend/rest/UserEndpoints.java @@ -3,6 +3,7 @@ package fr.la_banquise.backend.rest; import java.util.ArrayList; import java.util.List; +import fr.la_banquise.backend.rest.request.BulkUserRequest; import fr.la_banquise.backend.rest.request.UserRequest; import fr.la_banquise.backend.rest.response.LoggedUserResponse; import fr.la_banquise.backend.services.UserService; @@ -59,7 +60,7 @@ public class UserEndpoints { @POST @RolesAllowed("root") @Path("/jdmi") - public Response createJdmiUsers(List users) { + public Response createJdmiUsers(BulkUserRequest users) { userService.createJdmiUser(users); return Response.ok().build(); } diff --git a/src/main/java/fr/la_banquise/backend/rest/request/BulkUserRequest.java b/src/main/java/fr/la_banquise/backend/rest/request/BulkUserRequest.java new file mode 100644 index 0000000..e11a605 --- /dev/null +++ b/src/main/java/fr/la_banquise/backend/rest/request/BulkUserRequest.java @@ -0,0 +1,11 @@ +package fr.la_banquise.backend.rest.request; + +import java.util.List; + +/** + * UserRequest + */ +public class BulkUserRequest { + public List users; + public Long tpId; +} diff --git a/src/main/java/fr/la_banquise/backend/services/InstanceService.java b/src/main/java/fr/la_banquise/backend/services/InstanceService.java index 37cd57c..e0f4d5c 100644 --- a/src/main/java/fr/la_banquise/backend/services/InstanceService.java +++ b/src/main/java/fr/la_banquise/backend/services/InstanceService.java @@ -34,7 +34,8 @@ public class InstanceService { } @Transactional - public Instance createInstance(String name, String ssh, String pwd, String username, int tpId) { + public Instance createInstance(String name, String ssh, String pwd, String username, Long tpId) { + System.out.println(tpId); User user = User.find("name", username).firstResult(); Tp tp = Tp.findById(tpId); Instance instance = new Instance(name, ssh, pwd, user, tp); @@ -42,6 +43,14 @@ public class InstanceService { return instance; } + @Transactional + public Instance createInstance(String name, String ssh, String pwd, User user, Long tpId) { + Tp tp = Tp.findById(tpId); + Instance instance = new Instance(name, ssh, pwd, user, tp); + instanceRepository.persist(instance); + return instance; + } + @Transactional public boolean deleteInstance(Long id) { return instanceRepository.deleteById(id); diff --git a/src/main/java/fr/la_banquise/backend/services/TpService.java b/src/main/java/fr/la_banquise/backend/services/TpService.java index 6b0f7bd..6b5e83a 100644 --- a/src/main/java/fr/la_banquise/backend/services/TpService.java +++ b/src/main/java/fr/la_banquise/backend/services/TpService.java @@ -25,15 +25,14 @@ public class TpService { return tpRepository.listAll(); } - public PracticalResponse getTp(Long id) { - User user = User.find("name", "malopieds").firstResult(); + public PracticalResponse getTp(Long id, String username) { + User user = User.find("name", username).firstResult(); Tp tp = tpRepository.findById(id); Instance instance = Instance.find("user", user).firstResult(); PracticalResponse res = new PracticalResponse(tp.name, tp.description, tp.pdfLink, tp.respo, tp.date, instance.name, instance.pwd, instance.ssh); return res; - } @Transactional diff --git a/src/main/java/fr/la_banquise/backend/services/UserService.java b/src/main/java/fr/la_banquise/backend/services/UserService.java index 1cf49e5..737421d 100644 --- a/src/main/java/fr/la_banquise/backend/services/UserService.java +++ b/src/main/java/fr/la_banquise/backend/services/UserService.java @@ -4,8 +4,8 @@ import java.util.ArrayList; import java.util.List; import fr.la_banquise.backend.data.model.User; -import fr.la_banquise.backend.data.repository.InstanceRepository; import fr.la_banquise.backend.data.repository.UserRepository; +import fr.la_banquise.backend.rest.request.BulkUserRequest; import fr.la_banquise.backend.rest.request.UserRequest; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; @@ -50,11 +50,12 @@ public class UserService { } @Transactional - public List createJdmiUser(List usersRequest) { + public List createJdmiUser(BulkUserRequest usersRequest) { List users = new ArrayList<>(); - for (UserRequest user : usersRequest) { - users.add(createUser(user.name)); - instanceService.createInstance(user.name, "test", "test", "test", 1); + for (UserRequest user : usersRequest.users) { + User newUser = createUser(user.name); + users.add(newUser); + instanceService.createInstance("test", "test", "test", user.name, usersRequest.tpId); } return new ArrayList(); }