You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

99 lines
2.6 KiB

  1. package de.fd.fh.server.access.web;
  2. import com.fasterxml.jackson.core.JsonProcessingException;
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. import de.fd.fh.server.access.AccessService;
  5. import de.fd.fh.server.access.AccessToken;
  6. import de.fd.fh.server.user.UserId;
  7. import de.fd.fh.shared.Utils;
  8. import de.fd.fh.shared.network.messages.LoginRequest;
  9. import de.fd.fh.shared.network.messages.RegistrateRequest;
  10. import lombok.RequiredArgsConstructor;
  11. import spark.Request;
  12. import spark.Response;
  13. @RequiredArgsConstructor
  14. public class AccessController
  15. {
  16. private final ObjectMapper objectMapper = new ObjectMapper();
  17. private final AccessService service;
  18. public Response deletePlayer(Request request, Response response)
  19. {
  20. final UserId userId = UserId.of(request.params(":player_id"));
  21. final AccessToken token = request.session().attribute("userId");
  22. if (service.deleteAccount(userId, token))
  23. {
  24. response.status(200);
  25. }
  26. else
  27. {
  28. response.status(400);
  29. }
  30. return response;
  31. }
  32. public Object logout(Request request, Response response)
  33. {
  34. final String token = request.headers(Utils.AUTHENTICATION_HEADER);
  35. if (service.logout(token))
  36. {
  37. response.status(200);
  38. }
  39. else
  40. {
  41. response.status(400);
  42. }
  43. return response;
  44. }
  45. public Object login(Request request, Response response) throws JsonProcessingException
  46. {
  47. final String header = request.headers(Utils.AUTHENTICATION_HEADER);
  48. final LoginRequest login = service.authorization(header);
  49. if (login == null)
  50. {
  51. response.status(401);
  52. }
  53. else
  54. {
  55. response.status(200);
  56. response.type("application/json");
  57. response.body(objectMapper.writeValueAsString(login));
  58. }
  59. return response;
  60. }
  61. public Object registrate(Request request, Response response) throws java.io.IOException
  62. {
  63. final RegistrateRequest message =
  64. objectMapper.readValue(request.body(), RegistrateRequest.class);
  65. if (service.createPlayer(message))
  66. {
  67. response.status(201);
  68. }
  69. else
  70. {
  71. response.status(400);
  72. }
  73. return response;
  74. }
  75. public void before(final Request req)
  76. {
  77. final String path = req.pathInfo();
  78. final String token = req.headers(Utils.AUTHENTICATION_HEADER);
  79. final AccessToken accessToken = service.before(path, token);
  80. req.session().attribute("userId",
  81. accessToken);
  82. }
  83. }