76 lines
2.7 KiB
Java
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();
|
|
}
|
|
}
|