package fr.la_banquise.backend.rest; import fr.la_banquise.backend.rest.request.BulkUserRequest; 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.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() { System.out.println("=== DEBUG /me endpoint ==="); System.out.println("Identity: " + identity); System.out.println("Principal: " + identity.getPrincipal()); System.out.println("Principal name: " + identity.getPrincipal().getName()); System.out.println("Roles: " + identity.getRoles()); 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") @Path("/jdmi") public Response createJdmiUsers(BulkUserRequest users) { userService.createJdmiUser(users); return Response.ok().build(); } @DELETE @RolesAllowed("root") public Response deleteJDMI() { userService.deleteJDMI(); return Response.ok().build(); }*/ @DELETE @RolesAllowed("root") @Path("/{id}") public Response deleteUser(@PathParam("id") Long id) { userService.deleteUser(id); return Response.ok().build(); } }