diff --git a/src/main/java/fr/la_banquise/backend/data/model/User.java b/src/main/java/fr/la_banquise/backend/data/model/User.java index e331203..0c3c516 100644 --- a/src/main/java/fr/la_banquise/backend/data/model/User.java +++ b/src/main/java/fr/la_banquise/backend/data/model/User.java @@ -7,6 +7,7 @@ import io.quarkus.security.jpa.UserDefinition; import io.quarkus.security.jpa.Username; import jakarta.persistence.CascadeType; import jakarta.persistence.CollectionTable; +import jakarta.persistence.Column; import jakarta.persistence.ElementCollection; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; @@ -46,7 +47,7 @@ public class User { @SequenceGenerator(name = "UserSeq", sequenceName = "user_id_seq", allocationSize = 1, initialValue = 1) public Long id; - @Username public String name; + @Column(unique = true, nullable = false) @Username public String name; @Password public String password; @Enumerated(EnumType.STRING) 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 592436c..2b7c48a 100644 --- a/src/main/java/fr/la_banquise/backend/rest/UserEndpoints.java +++ b/src/main/java/fr/la_banquise/backend/rest/UserEndpoints.java @@ -79,7 +79,7 @@ public class UserEndpoints { @RolesAllowed("ROOT") @Path("{id}/roles") public Response removeRole(@PathParam("id") Long userId, - @QueryParam("role") String role) { + @QueryParam("role") String role) { try { userService.removeRole(role, userId); return Response.ok().build(); @@ -90,11 +90,10 @@ public class UserEndpoints { } } - @POST @RolesAllowed("ROOT") public Response createUser(UserRequest user) { - return Response.ok(userService.createUser(user)).build(); + return Response.ok(userService.createUserRandom(user)).build(); } @DELETE diff --git a/src/main/java/fr/la_banquise/backend/rest/UsersEndpoints.java b/src/main/java/fr/la_banquise/backend/rest/UsersEndpoints.java index 8a04ad3..b8f9dbc 100644 --- a/src/main/java/fr/la_banquise/backend/rest/UsersEndpoints.java +++ b/src/main/java/fr/la_banquise/backend/rest/UsersEndpoints.java @@ -46,11 +46,12 @@ public class UsersEndpoints { @RolesAllowed("ROOT") // TODO: respos JI doivent aussi pouvoir faire ca // INFO: if response is empty => required associated jiId was not found in // existing JIs - public Response createUsersBulk(BulkUserPostRequest users) { - BulkUserPostResponse response = userService.createUsers( - users); - if (response.successNames.size() == users.users.size()) + public Response createUsersBulk(BulkUserPostRequest request) { + BulkUserPostResponse response = userService.createUsers(request); + if (response.successNames.size() == request.users.size()) return Response.ok().build(); + if (response.successNames.size() == 0) + return Response.status(500).build(); return Response.status(202) .entity(Map.of("These users were already created : ", response.alreadyCreated)) 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 9c2e690..61a3f2e 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 @@ -3,5 +3,4 @@ package fr.la_banquise.backend.rest.request; public class UserRequest { public String name; public String email; - public String password; } diff --git a/src/main/java/fr/la_banquise/backend/rest/response/UserPostResponse.java b/src/main/java/fr/la_banquise/backend/rest/response/UserPostResponse.java new file mode 100644 index 0000000..5738c64 --- /dev/null +++ b/src/main/java/fr/la_banquise/backend/rest/response/UserPostResponse.java @@ -0,0 +1,15 @@ +package fr.la_banquise.backend.rest.response; + +import fr.la_banquise.backend.data.model.User; +import io.quarkus.runtime.annotations.RegisterForReflection; + +@RegisterForReflection +public class UserPostResponse { + public User user; + public String passwd; + + public UserPostResponse(User user, String passwd) { + this.user = user; + this.passwd = passwd; + } +} 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 1fbbbdb..3ec92e9 100644 --- a/src/main/java/fr/la_banquise/backend/services/UserService.java +++ b/src/main/java/fr/la_banquise/backend/services/UserService.java @@ -10,11 +10,13 @@ import fr.la_banquise.backend.rest.request.UserDelRequest; import fr.la_banquise.backend.rest.request.UserRequest; import fr.la_banquise.backend.rest.response.BulkUserDelResponse; import fr.la_banquise.backend.rest.response.BulkUserPostResponse; +import fr.la_banquise.backend.rest.response.UserPostResponse; import io.quarkus.elytron.security.common.BcryptUtil; import jakarta.enterprise.context.ApplicationScoped; import jakarta.inject.Inject; import jakarta.transaction.Transactional; import java.util.List; +import java.util.Random; /** * UserService @@ -32,12 +34,23 @@ public class UserService { public User getUser(String name) { return userRepository.findByName(name); } @Transactional - public User createUser(UserRequest request) { - User user = - new User(request.name, BcryptUtil.bcryptHash(request.password), - RolesAsso.NONE); + public UserPostResponse createUser(UserRequest request, String code) { + User user = new User(request.name, + BcryptUtil.bcryptHash(request.name.concat(code)), + RolesAsso.NONE); userRepository.persist(user); - return user; + String passwd = request.name.concat(code); + UserPostResponse retour = new UserPostResponse(user, passwd); + return retour; + } + + @Transactional + public UserPostResponse createUserRandom(UserRequest request) { + + Random rand = new Random(); + int random = rand.nextInt(8999) + 1000; + + return createUser(request, String.valueOf(random)); } @Transactional @@ -85,7 +98,9 @@ public class UserService { if (jiRepository.findById(usersRequest.jiId) != null) { for (UserRequest user : usersRequest.users) { try { - createUser(user); + Random rand = new Random(); + int random = rand.nextInt(8999) + 1000; + createUser(user, String.valueOf(random)); response.successNames.add(user.name); } catch (Exception e) { response.alreadyCreated.add(user.name);