diff --git a/src/main/java/fr/la_banquise/backend/rest/InstanceEndpoints.java b/src/main/java/fr/la_banquise/backend/rest/InstanceEndpoints.java index cdd5b14..6c627ee 100644 --- a/src/main/java/fr/la_banquise/backend/rest/InstanceEndpoints.java +++ b/src/main/java/fr/la_banquise/backend/rest/InstanceEndpoints.java @@ -1,9 +1,11 @@ package fr.la_banquise.backend.rest; +import fr.la_banquise.backend.rest.request.InstanceRequest; import fr.la_banquise.backend.services.InstanceService; import io.quarkus.security.identity.SecurityIdentity; import jakarta.inject.Inject; import jakarta.ws.rs.GET; +import jakarta.ws.rs.POST; import jakarta.ws.rs.Path; import jakarta.ws.rs.Produces; import jakarta.ws.rs.core.MediaType; @@ -24,8 +26,13 @@ public class InstanceEndpoints { @GET public Response getAllInstances() { - System.out.println(identity.getPrincipal()); String username = identity.getPrincipal().getName(); return Response.ok(instanceService.getAllInstances(username)).build(); } + + @POST + public Response createInstance(InstanceRequest request) { + instanceService.createInstance(request.name, request.ssh, request.pwd, request.username, request.tpId); + return Response.ok().build(); + } } 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 b9ff62d..c6f9564 100644 --- a/src/main/java/fr/la_banquise/backend/rest/TpEndpoints.java +++ b/src/main/java/fr/la_banquise/backend/rest/TpEndpoints.java @@ -1,7 +1,6 @@ package fr.la_banquise.backend.rest; import fr.la_banquise.backend.services.TpService; -import fr.la_banquise.backend.rest.request.TpForm; import fr.la_banquise.backend.rest.request.TpRequest; import jakarta.annotation.security.RolesAllowed; import jakarta.inject.Inject; 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 dc73bed..09683a6 100644 --- a/src/main/java/fr/la_banquise/backend/rest/UserEndpoints.java +++ b/src/main/java/fr/la_banquise/backend/rest/UserEndpoints.java @@ -1,5 +1,8 @@ package fr.la_banquise.backend.rest; +import java.util.ArrayList; +import java.util.List; + import fr.la_banquise.backend.rest.request.UserRequest; import fr.la_banquise.backend.services.UserService; import jakarta.annotation.security.RolesAllowed; @@ -38,6 +41,14 @@ public class UserEndpoints { @POST @RolesAllowed("admin") public Response createUser(UserRequest user) { - return Response.ok(userService.crateUser(user.firstName, user.lastName)).build(); + return Response.ok(userService.createUser(user.name)).build(); + } + + @POST + @RolesAllowed("root") + @Path("/jdmi") + public Response createJdmiUsers(List users) { + userService.createJdmiUser(users); + return Response.ok().build(); } } diff --git a/src/main/java/fr/la_banquise/backend/rest/request/InstanceRequest.java b/src/main/java/fr/la_banquise/backend/rest/request/InstanceRequest.java new file mode 100644 index 0000000..ec95f0c --- /dev/null +++ b/src/main/java/fr/la_banquise/backend/rest/request/InstanceRequest.java @@ -0,0 +1,15 @@ +package fr.la_banquise.backend.rest.request; + +import io.smallrye.common.constraint.Nullable; + +/** + * InstanceRequest + */ +public class InstanceRequest { + public String name; + public String ssh; + public String pwd; + public String username; + @Nullable + public int tpId; +} diff --git a/src/main/java/fr/la_banquise/backend/rest/request/UserRequest.java b/src/main/java/fr/la_banquise/backend/rest/request/UserRequest.java index ac0eb95..46dd5b7 100644 --- a/src/main/java/fr/la_banquise/backend/rest/request/UserRequest.java +++ b/src/main/java/fr/la_banquise/backend/rest/request/UserRequest.java @@ -4,6 +4,6 @@ package fr.la_banquise.backend.rest.request; * UserRequest */ public class UserRequest { - public String firstName; - public String lastName; + public String name; + public String email; } 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 ed1cdb1..37cd57c 100644 --- a/src/main/java/fr/la_banquise/backend/services/InstanceService.java +++ b/src/main/java/fr/la_banquise/backend/services/InstanceService.java @@ -3,6 +3,7 @@ package fr.la_banquise.backend.services; import java.util.List; import fr.la_banquise.backend.data.model.Instance; +import fr.la_banquise.backend.data.model.Tp; import fr.la_banquise.backend.data.model.User; import fr.la_banquise.backend.data.repository.InstanceRepository; import jakarta.enterprise.context.ApplicationScoped; @@ -33,9 +34,10 @@ public class InstanceService { } @Transactional - public Instance createInstance(String name, String ssh, String pwd) { - User admin = User.find("name", "admin").firstResult(); - Instance instance = new Instance(name, ssh, pwd, admin, null); + public Instance createInstance(String name, String ssh, String pwd, String username, int tpId) { + User user = User.find("name", username).firstResult(); + Tp tp = Tp.findById(tpId); + Instance instance = new Instance(name, ssh, pwd, user, tp); instanceRepository.persist(instance); return instance; } 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 aab15d6..1cf49e5 100644 --- a/src/main/java/fr/la_banquise/backend/services/UserService.java +++ b/src/main/java/fr/la_banquise/backend/services/UserService.java @@ -1,9 +1,12 @@ package fr.la_banquise.backend.services; +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.UserRequest; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import jakarta.transaction.Transactional; @@ -17,6 +20,9 @@ public class UserService { @Inject UserRepository userRepository; + @Inject + InstanceService instanceService; + public List getAllUsers() { return userRepository.listAll(); } @@ -26,8 +32,8 @@ public class UserService { } @Transactional - public User crateUser(String firstName, String lastName) { - User user = new User(firstName, lastName); + public User createUser(String name) { + User user = new User(name, new ArrayList<>()); userRepository.persist(user); return user; } @@ -43,4 +49,14 @@ public class UserService { return user; } + @Transactional + public List createJdmiUser(List usersRequest) { + List users = new ArrayList<>(); + for (UserRequest user : usersRequest) { + users.add(createUser(user.name)); + instanceService.createInstance(user.name, "test", "test", "test", 1); + } + return new ArrayList(); + } + }