2025-08-22 11:57:41 +02:00

88 lines
2.5 KiB
Java

package fr.la_banquise.backend.rest;
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;
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;
/**
* UserEndpoints
*/
@Path("/api/users")
@Produces(MediaType.APPLICATION_JSON)
public class UserEndpoints {
@Inject SecurityIdentity identity;
@Inject UserService userService;
@GET
@Path("/me")
@Authenticated
public Response getCurrentUser() {
LoggedUserResponse user = new LoggedUserResponse(
identity.getPrincipal().getName(), identity.getRoles());
return Response.ok(user).build();
}
@GET
@RolesAllowed("root")
public Response getAllUsers() {
return Response.ok(userService.getAllUsers()).build();
}
@GET
@RolesAllowed("root")
@Path("{id}")
public Response getUser(@PathParam("id") Long id) {
return Response.ok(userService.getUser(id)).build();
}
@POST
@RolesAllowed("root")
public Response createUser(UserRequest user) {
return Response.ok(userService.createUser(user)).build();
}
@POST
@RolesAllowed("root") // TODO: respos JI doivent aussi pouvoir faire ca
@Path("/bulk")
// 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(BulkUserDelRequest users) {
userService.deleteUsers(
users); // TODO: adapter en focntion de la reponse
return Response.ok().build();
}
@DELETE
@RolesAllowed("root")
public Response deleteUser(@QueryParam("id") Long id) {
userService.deleteUser(id);
return Response.ok().build();
}
}