login_manager.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import { user } from "./user.js";
  2. export class login_manager {
  3. get apikey() {
  4. return localStorage.getItem("apikey");
  5. }
  6. get logged_in() {
  7. return localStorage.getItem("apikey") !== null;
  8. }
  9. #create_request(data) {
  10. return {
  11. method: "POST",
  12. body: JSON.stringify(data),
  13. headers: {
  14. "Content-Type": "application/json"
  15. }
  16. };
  17. }
  18. async get_user() {
  19. if (!this.logged_in) {
  20. return null;
  21. }
  22. const request_data = this.#create_request({
  23. apikey: this.apikey
  24. });
  25. const request = await fetch("/user", request_data);
  26. const response = await request.json();
  27. if (response.result !== "success") {
  28. return null;
  29. }
  30. return new user(
  31. response.nick,
  32. response.apikey
  33. );
  34. }
  35. async login(nick, password) {
  36. const request_data = this.#create_request({
  37. nick: nick,
  38. password: password
  39. });
  40. const request = await fetch("/user/login", request_data);
  41. const response = await request.json();
  42. if (response.result !== "success") {
  43. return false;
  44. }
  45. localStorage.setItem("apikey", response.apikey);
  46. return true;
  47. }
  48. logout() {
  49. localStorage.removeItem("apikey");
  50. }
  51. }