AuthenticationController.java 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package it.pcdev.dokskan.central.controller;
  2. import it.pcdev.dokskan.central.dto.UserDto;
  3. import it.pcdev.dokskan.central.service.impl.AuthenticationServiceImpl;
  4. import it.pcdev.dokskan.central.service.impl.strategy.docupload.DocumentUploadServiceAiImpl;
  5. import it.pcdev.dokskan.central.service.impl.UserServiceImpl;
  6. import jakarta.annotation.security.RolesAllowed;
  7. import jakarta.enterprise.context.ApplicationScoped;
  8. import jakarta.inject.Inject;
  9. import jakarta.persistence.PersistenceException;
  10. import jakarta.ws.rs.*;
  11. import jakarta.ws.rs.core.Response;
  12. import jakarta.ws.rs.core.SecurityContext;
  13. @ApplicationScoped
  14. @Path("/api/v1/auth")
  15. public class AuthenticationController {
  16. @Inject
  17. UserServiceImpl userService;
  18. @Inject
  19. AuthenticationServiceImpl authenticationServiceImpl;
  20. @Inject
  21. DocumentUploadServiceAiImpl documentUploadServiceImpl;
  22. @Inject
  23. SecurityContext securityContext;
  24. @POST
  25. @Path("/signup")
  26. public Response createUser(UserDto userDto) {
  27. userService.persist(userDto);
  28. return Response.status(Response.Status.CREATED).build();
  29. }
  30. @GET
  31. @Path("/signin")
  32. public Response signIn(@HeaderParam("USERNAME") String username, @HeaderParam("PASSWORD") String password) {
  33. try {
  34. return Response.status(Response.Status.OK).entity(authenticationServiceImpl.authenticate(username, password)).build();
  35. } catch (PersistenceException exc) {
  36. return Response.status(Response.Status.UNAUTHORIZED).build();
  37. } catch (Exception exc) {
  38. exc.printStackTrace();
  39. return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
  40. }
  41. }
  42. @DELETE
  43. @Path("/deleteUserAndRelatedData")
  44. @RolesAllowed("user")
  45. public Response deleteMe() {
  46. documentUploadServiceImpl.deleteDocumentDataByUser(securityContext.getUserPrincipal().getName());
  47. userService.deleteByUsername(securityContext.getUserPrincipal().getName());
  48. return Response.status(Response.Status.OK).build();
  49. }
  50. }