useAuth.js 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import { api } from "src/boot/axios";
  2. import { Cookies } from "quasar";
  3. import { permissionStore } from "src/stores/permission";
  4. import { userStore } from "src/stores/user";
  5. export const useAuth = () => {
  6. const login = async (email, password) => {
  7. try {
  8. const response = await api.post("/login", {
  9. email: email,
  10. password: password,
  11. });
  12. if (response.status === 200) {
  13. const payload = response.data.payload;
  14. const accessTokenExpiresIn = new Date(
  15. new Date().getTime() + payload.access_token_expires_in * 1000,
  16. );
  17. const refreshTokenExpiresIn = new Date(
  18. new Date().getTime() + payload.refresh_token_expires_in * 1000,
  19. );
  20. Cookies.set("access_token", payload.access_token, {
  21. expires: accessTokenExpiresIn,
  22. });
  23. Cookies.set("refresh_token", payload.refresh_token, {
  24. expires: refreshTokenExpiresIn,
  25. });
  26. userStore().user = payload.user;
  27. await permissionStore().fetchScopes();
  28. }
  29. return response;
  30. } catch (error) {
  31. return Promise.reject(error);
  32. }
  33. };
  34. const logout = async () => {
  35. try {
  36. const response = await api.post("/logout");
  37. if (response.status === 200) {
  38. Cookies.remove("access_token");
  39. Cookies.remove("refresh_token");
  40. await permissionStore().fetchScopes();
  41. }
  42. } catch (error) {
  43. console.error(error);
  44. }
  45. };
  46. const refreshToken = async () => {
  47. try {
  48. const refresh_token = Cookies.get("refresh_token");
  49. const response = await api.post("/refresh", {
  50. refresh_token: refresh_token,
  51. });
  52. if (response.status === 200) {
  53. const payload = response.data.payload;
  54. const accessTokenExpiresIn = new Date(
  55. new Date().getTime() + payload.access_token_expires_in * 1000,
  56. );
  57. const refreshTokenExpiresIn = new Date(
  58. new Date().getTime() + payload.refresh_token_expires_in * 1000,
  59. );
  60. Cookies.set("access_token", payload.access_token, {
  61. expires: accessTokenExpiresIn,
  62. });
  63. Cookies.set("refresh_token", payload.refresh_token, {
  64. expires: refreshTokenExpiresIn,
  65. });
  66. userStore().user = payload.user;
  67. }
  68. } catch (error) {
  69. return Promise.reject(error);
  70. }
  71. };
  72. return {
  73. login,
  74. logout,
  75. refreshToken,
  76. };
  77. };