Arthur Wambst 8f8fc804f8
dodo
2025-10-18 02:32:18 +02:00

76 lines
2.7 KiB
Java

package fr.la_banquise.backend.rest;
import fr.la_banquise.backend.data.model.RolesAsso;
import fr.la_banquise.backend.data.model.User;
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.BulkUserDelResponse;
import fr.la_banquise.backend.rest.response.BulkUserPostResponse;
import fr.la_banquise.backend.rest.response.LoggedUserResponse;
import fr.la_banquise.backend.services.UserService;
import io.quarkus.security.Authenticated;
import io.quarkus.security.identity.SecurityIdentity;
import jakarta.annotation.security.RolesAllowed;
import jakarta.inject.Inject;
import jakarta.ws.rs.DELETE;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.PathParam;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.QueryParam;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import java.util.HashMap;
import java.util.Map;
/**
* UserEndpoints
*/
@Path("/api/users")
@Produces(MediaType.APPLICATION_JSON)
public class UsersEndpoints {
@Inject SecurityIdentity identity;
@Inject UserService userService;
@GET
@RolesAllowed("ROOT")
public Response getAllUsers() {
return Response.ok(userService.getAllUsers()).build();
}
@POST
@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 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))
.build();
}
@DELETE
@RolesAllowed("ROOT")
public Response deleteUserBulk(BulkUserDelRequest users) {
BulkUserDelResponse response = userService.deleteUsers(users);
if (response.successNames.size() == users.usernames.size())
return Response.ok().build();
Map<String, String> retour = new HashMap<String, String>();
for (int id = 0; id < response.failedNames.size(); id++) {
retour.put(response.failedNames.get(id),
response.failedReasons.get(id));
}
return Response.status(202).entity(retour).build();
}
}