2025-08-23 06:25:55 +02:00

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");
};
}
}