bulk user handling basics

This commit is contained in:
Arthur Wambst 2025-08-22 11:57:41 +02:00
parent 798a832341
commit b831d9b66e
No known key found for this signature in database
8 changed files with 86 additions and 37 deletions

View File

@ -1,6 +1,7 @@
package fr.la_banquise.backend.rest;
import fr.la_banquise.backend.rest.request.BulkUserRequest;
import fr.la_banquise.backend.rest.request.BulkUserDelRequest;
import fr.la_banquise.backend.rest.request.BulkUserPostRequest;
import fr.la_banquise.backend.rest.request.UserRequest;
import fr.la_banquise.backend.rest.response.LoggedUserResponse;
import fr.la_banquise.backend.services.UserService;
@ -60,16 +61,20 @@ public class UserEndpoints {
@POST
@RolesAllowed("root") // TODO: respos JI doivent aussi pouvoir faire ca
@Path("/bulk")
public Response createUsersBulk(BulkUserRequest users) {
userService.createUsers(users);
// INFO: if response is empty => required associated jiId was not found in
// existing JIs
public Response createUsersBulk(BulkUserPostRequest users) {
userService.createUsers(
users); // TODO: adapter en fonction de la reponse
return Response.ok().build();
}
@DELETE
@RolesAllowed("root")
@Path("/bulk")
public Response deleteUserBulk() {
userService.deleteUsers();
public Response deleteUserBulk(BulkUserDelRequest users) {
userService.deleteUsers(
users); // TODO: adapter en focntion de la reponse
return Response.ok().build();
}

View File

@ -0,0 +1,7 @@
package fr.la_banquise.backend.rest.request;
import java.util.List;
public class BulkUserDelRequest {
public List<UserDelRequest> usernames;
}

View File

@ -2,11 +2,7 @@ package fr.la_banquise.backend.rest.request;
import java.util.List;
/**
* UserRequest
*/
public class BulkUserRequest {
public class BulkUserPostRequest {
public List<UserRequest> users;
public String password;
public Long tpId;
public Long jiId;
}

View File

@ -0,0 +1,5 @@
package fr.la_banquise.backend.rest.request;
public class UserDelRequest {
public String name;
}

View File

@ -1,14 +1,7 @@
package fr.la_banquise.backend.rest.request;
/**
* UserRequest
*/
public class UserRequest {
public String name;
public String email;
public String password;
public String instance_name;
public String instance_ssh;
public Long instance_port;
public String instance_pwd;
}

View File

@ -0,0 +1,12 @@
package fr.la_banquise.backend.rest.response;
import java.util.List;
import io.quarkus.runtime.annotations.RegisterForReflection;
@RegisterForReflection
public class BulkUserDelResponse {
public List<String> success_names;
public List<String> failed_names;
public List<String> failed_reasons;
}

View File

@ -0,0 +1,11 @@
package fr.la_banquise.backend.rest.response;
import java.util.List;
import io.quarkus.runtime.annotations.RegisterForReflection;
@RegisterForReflection
public class BulkUserPostResponse {
public List<String> success_names;
public List<String> already_created;
}

View File

@ -1,17 +1,20 @@
package fr.la_banquise.backend.services;
import fr.la_banquise.backend.data.model.Instance;
import fr.la_banquise.backend.data.model.User;
import fr.la_banquise.backend.data.repository.JiRepository;
import fr.la_banquise.backend.data.repository.UserRepository;
import fr.la_banquise.backend.rest.request.BulkUserRequest;
import fr.la_banquise.backend.rest.request.BulkUserDelRequest;
import fr.la_banquise.backend.rest.request.BulkUserPostRequest;
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 io.quarkus.elytron.security.common.BcryptUtil;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import jakarta.transaction.Transactional;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.annotations.TypeRegistration;
/**
* UserService
@ -20,8 +23,8 @@ import org.hibernate.annotations.TypeRegistration;
public class UserService {
@Inject UserRepository userRepository;
@Inject InstanceService instanceService;
@Inject JiRepository jiRepository;
public List<User> getAllUsers() { return userRepository.listAll(); }
@ -54,24 +57,41 @@ public class UserService {
}
}
/*@Transactional
public void deleteJDMI() {
for (Instance instance : instanceService.getAllInstances()) {
instanceService.deleteInstance(instance.id);
userRepository.deleteById(instance.owner.id);
@Transactional
public BulkUserDelResponse deleteUsers(BulkUserDelRequest request) {
BulkUserDelResponse response = new BulkUserDelResponse();
User userToDel;
for (UserDelRequest requestName : request.usernames) {
try {
userToDel =
userRepository.find("name", requestName.name).firstResult();
userRepository.delete(userToDel);
response.success_names.add(requestName.name);
} catch (Exception e) {
response.failed_names.add(requestName.name);
response.failed_reasons.add(e.toString());
}
}
@Transactional
public List<User> createJdmiUser(BulkUserRequest usersRequest) {
List<User> users = new ArrayList<>();
for (UserRequest user : usersRequest.users) {
User newUser = createUser(user);
users.add(newUser);
instanceService.createInstance(
user.instance_name, user.instance_ssh, user.instance_pwd,
user.instance_port, user.name, usersRequest.tpId);
return response;
}
@Transactional
public BulkUserPostResponse createUsers(BulkUserPostRequest usersRequest) {
BulkUserPostResponse response = new BulkUserPostResponse();
if (jiRepository.findById(usersRequest.jiId) != null) {
for (UserRequest user : usersRequest.users) {
try {
createUser(user);
response.success_names.add(user.name);
} catch (Exception e) {
response.already_created.add(user.name);
}
}
}
return response;
}
return new ArrayList<User>();
}*/
}