This commit is contained in:
Arthur Wambst 2025-10-18 02:32:18 +02:00
parent 821b7554b2
commit 8f8fc804f8
No known key found for this signature in database
6 changed files with 45 additions and 15 deletions

View File

@ -7,6 +7,7 @@ import io.quarkus.security.jpa.UserDefinition;
import io.quarkus.security.jpa.Username; import io.quarkus.security.jpa.Username;
import jakarta.persistence.CascadeType; import jakarta.persistence.CascadeType;
import jakarta.persistence.CollectionTable; import jakarta.persistence.CollectionTable;
import jakarta.persistence.Column;
import jakarta.persistence.ElementCollection; import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
import jakarta.persistence.EnumType; import jakarta.persistence.EnumType;
@ -46,7 +47,7 @@ public class User {
@SequenceGenerator(name = "UserSeq", sequenceName = "user_id_seq", @SequenceGenerator(name = "UserSeq", sequenceName = "user_id_seq",
allocationSize = 1, initialValue = 1) allocationSize = 1, initialValue = 1)
public Long id; public Long id;
@Username public String name; @Column(unique = true, nullable = false) @Username public String name;
@Password public String password; @Password public String password;
@Enumerated(EnumType.STRING) @Enumerated(EnumType.STRING)

View File

@ -79,7 +79,7 @@ public class UserEndpoints {
@RolesAllowed("ROOT") @RolesAllowed("ROOT")
@Path("{id}/roles") @Path("{id}/roles")
public Response removeRole(@PathParam("id") Long userId, public Response removeRole(@PathParam("id") Long userId,
@QueryParam("role") String role) { @QueryParam("role") String role) {
try { try {
userService.removeRole(role, userId); userService.removeRole(role, userId);
return Response.ok().build(); return Response.ok().build();
@ -90,11 +90,10 @@ public class UserEndpoints {
} }
} }
@POST @POST
@RolesAllowed("ROOT") @RolesAllowed("ROOT")
public Response createUser(UserRequest user) { public Response createUser(UserRequest user) {
return Response.ok(userService.createUser(user)).build(); return Response.ok(userService.createUserRandom(user)).build();
} }
@DELETE @DELETE

View File

@ -46,11 +46,12 @@ public class UsersEndpoints {
@RolesAllowed("ROOT") // TODO: respos JI doivent aussi pouvoir faire ca @RolesAllowed("ROOT") // TODO: respos JI doivent aussi pouvoir faire ca
// INFO: if response is empty => required associated jiId was not found in // INFO: if response is empty => required associated jiId was not found in
// existing JIs // existing JIs
public Response createUsersBulk(BulkUserPostRequest users) { public Response createUsersBulk(BulkUserPostRequest request) {
BulkUserPostResponse response = userService.createUsers( BulkUserPostResponse response = userService.createUsers(request);
users); if (response.successNames.size() == request.users.size())
if (response.successNames.size() == users.users.size())
return Response.ok().build(); return Response.ok().build();
if (response.successNames.size() == 0)
return Response.status(500).build();
return Response.status(202) return Response.status(202)
.entity(Map.of("These users were already created : ", .entity(Map.of("These users were already created : ",
response.alreadyCreated)) response.alreadyCreated))

View File

@ -3,5 +3,4 @@ package fr.la_banquise.backend.rest.request;
public class UserRequest { public class UserRequest {
public String name; public String name;
public String email; public String email;
public String password;
} }

View File

@ -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;
}
}

View File

@ -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.request.UserRequest;
import fr.la_banquise.backend.rest.response.BulkUserDelResponse; import fr.la_banquise.backend.rest.response.BulkUserDelResponse;
import fr.la_banquise.backend.rest.response.BulkUserPostResponse; import fr.la_banquise.backend.rest.response.BulkUserPostResponse;
import fr.la_banquise.backend.rest.response.UserPostResponse;
import io.quarkus.elytron.security.common.BcryptUtil; import io.quarkus.elytron.security.common.BcryptUtil;
import jakarta.enterprise.context.ApplicationScoped; import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject; import jakarta.inject.Inject;
import jakarta.transaction.Transactional; import jakarta.transaction.Transactional;
import java.util.List; import java.util.List;
import java.util.Random;
/** /**
* UserService * UserService
@ -32,12 +34,23 @@ public class UserService {
public User getUser(String name) { return userRepository.findByName(name); } public User getUser(String name) { return userRepository.findByName(name); }
@Transactional @Transactional
public User createUser(UserRequest request) { public UserPostResponse createUser(UserRequest request, String code) {
User user = User user = new User(request.name,
new User(request.name, BcryptUtil.bcryptHash(request.password), BcryptUtil.bcryptHash(request.name.concat(code)),
RolesAsso.NONE); RolesAsso.NONE);
userRepository.persist(user); 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 @Transactional
@ -85,7 +98,9 @@ public class UserService {
if (jiRepository.findById(usersRequest.jiId) != null) { if (jiRepository.findById(usersRequest.jiId) != null) {
for (UserRequest user : usersRequest.users) { for (UserRequest user : usersRequest.users) {
try { try {
createUser(user); Random rand = new Random();
int random = rand.nextInt(8999) + 1000;
createUser(user, String.valueOf(random));
response.successNames.add(user.name); response.successNames.add(user.name);
} catch (Exception e) { } catch (Exception e) {
response.alreadyCreated.add(user.name); response.alreadyCreated.add(user.name);