110 lines
3.5 KiB
Java
110 lines
3.5 KiB
Java
package fr.la_banquise.backend.services;
|
|
|
|
import fr.la_banquise.backend.data.model.RolesAsso;
|
|
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.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;
|
|
|
|
/**
|
|
* UserService
|
|
*/
|
|
@ApplicationScoped
|
|
public class UserService {
|
|
|
|
@Inject UserRepository userRepository;
|
|
@Inject InstanceService instanceService;
|
|
@Inject JiRepository jiRepository;
|
|
|
|
public List<User> getAllUsers() { return userRepository.listAll(); }
|
|
|
|
public User getUser(Long id) { return userRepository.findById(id); }
|
|
|
|
@Transactional
|
|
public User createUser(UserRequest request) {
|
|
User user =
|
|
new User(request.name, BcryptUtil.bcryptHash(request.password),
|
|
RolesAsso.NONE, new ArrayList<>());
|
|
userRepository.persist(user);
|
|
return user;
|
|
}
|
|
|
|
@Transactional
|
|
public void deleteUser(Long id) {
|
|
userRepository.deleteById(id);
|
|
}
|
|
|
|
@Transactional // wtf ? this is get user no ?
|
|
public User updateUser(Long id) {
|
|
User user = userRepository.findById(id);
|
|
return user;
|
|
}
|
|
|
|
@Transactional
|
|
public void deleteUsers(Long[] ids) {
|
|
for (Long id : ids) {
|
|
userRepository.deleteById(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());
|
|
}
|
|
}
|
|
|
|
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;
|
|
}
|
|
|
|
|
|
public RolesAsso fromString(String role_str) {
|
|
return switch (role_str) {
|
|
case "ROOT" -> RolesAsso.ROOT;
|
|
case "MODO" -> RolesAsso.MODO;
|
|
case "PINGOUIN" -> RolesAsso.PINGOUIN;
|
|
case "JI" -> RolesAsso.JI;
|
|
default -> throw new Error("Wrong role str");
|
|
};
|
|
}
|
|
}
|