useAuth.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import api from "src/api";
  2. import { permissionStore } from "src/stores/permission";
  3. import { userStore } from "src/stores/user";
  4. export const useAuth = () => {
  5. const setAuthDataFromPayload = async (tokens) => {
  6. const { access_token, user } = tokens;
  7. userStore().user = user;
  8. userStore().accessToken = access_token;
  9. await permissionStore().fetchScopes();
  10. };
  11. const login = async (identifier, password, tipo) => {
  12. try {
  13. const response = await api.post("/login", {
  14. identifier,
  15. password,
  16. tipo,
  17. });
  18. if (response.status === 200) {
  19. await setAuthDataFromPayload(response.data.payload);
  20. }
  21. return response;
  22. } catch (error) {
  23. return Promise.reject(error);
  24. }
  25. };
  26. const logout = async () => {
  27. try {
  28. const response = await api.post("/logout");
  29. if (response.status === 200) {
  30. userStore().resetUser();
  31. permissionStore().resetScopes();
  32. }
  33. } catch {
  34. userStore().resetUser();
  35. permissionStore().resetScopes();
  36. }
  37. };
  38. const refresh = async () => {
  39. try {
  40. const response = await api.post("/refresh");
  41. if (response.status === 200) {
  42. await setAuthDataFromPayload(response.data.payload);
  43. }
  44. return response;
  45. } catch (error) {
  46. return Promise.reject(error);
  47. }
  48. };
  49. return {
  50. login,
  51. logout,
  52. refresh,
  53. setAuthDataFromPayload,
  54. };
  55. };