Plan stuff. Log stuff.
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.

48 lines
1.0 KiB

4 years ago
  1. import { writable } from "svelte/store";
  2. import slApi from "../api/stufflog";
  3. import stufflogStore from "./stufflog";
  4. function createAuthStore() {
  5. const {set, update, subscribe} = writable({checked: false, user: null})
  6. return {
  7. subscribe,
  8. async check() {
  9. const data = await slApi.checkSession();
  10. set({checked: true, user: data.user || null});
  11. return data;
  12. },
  13. async login(username, password) {
  14. const data = await slApi.login(username, password);
  15. set({checked: true, user: data.user});
  16. return data;
  17. },
  18. async logout() {
  19. const data = await slApi.logout();
  20. stufflogStore.clearAll();
  21. set({checked: true, user: data.user || null});
  22. return data;
  23. },
  24. async register(username, password) {
  25. const data = await slApi.register(username, password);
  26. stufflogStore.clearAll();
  27. set({checked: true, user: data.user});
  28. return data;
  29. },
  30. }
  31. }
  32. const session = createAuthStore();
  33. export default session;