547 lines
16 KiB
TypeScript
547 lines
16 KiB
TypeScript
![]() |
import apis from "~/apis/authApi";
|
||
|
import { defineStore } from "pinia";
|
||
|
import { useCommonStore } from "./commonStore";
|
||
|
import type { User } from "~/types/commonTypes";
|
||
|
import { useStorage } from "@vueuse/core";
|
||
|
import { clearStorage } from "@/manuals/localStorage";
|
||
|
export const useAuthStore = defineStore("authStore", {
|
||
|
// persist: true,
|
||
|
persist: {
|
||
|
storage: piniaPluginPersistedstate.localStorage(),
|
||
|
pick: [
|
||
|
"mobile",
|
||
|
"fullName",
|
||
|
"isResetPassword",
|
||
|
|
||
|
"errors",
|
||
|
"user",
|
||
|
"isAuthenticated",
|
||
|
"isRealUser",
|
||
|
"authHttpService",
|
||
|
],
|
||
|
},
|
||
|
state: () => ({
|
||
|
mobile: null as string | null,
|
||
|
fullName: undefined as object | undefined,
|
||
|
isResetPassword: false as boolean,
|
||
|
|
||
|
errors: null as null | object,
|
||
|
user: {} as User,
|
||
|
isAuthenticated: false as boolean,
|
||
|
isRealUser: useStorage("user_stt", "user").value
|
||
|
? true
|
||
|
: (false as boolean),
|
||
|
// authHttpService: undefined as object | undefined,
|
||
|
}),
|
||
|
getters: {
|
||
|
currentUser(state) {
|
||
|
if ("user_id" in state.user) {
|
||
|
return state.user;
|
||
|
} else {
|
||
|
const defaultUserValue: User = {
|
||
|
user_id: 0,
|
||
|
user_level: 0,
|
||
|
token: "",
|
||
|
expire: 0,
|
||
|
type: 0,
|
||
|
refresh_token: "",
|
||
|
refresh_expire: 0,
|
||
|
user_data: {
|
||
|
first_name: "",
|
||
|
last_name: "",
|
||
|
avatar: "",
|
||
|
username: "",
|
||
|
},
|
||
|
};
|
||
|
|
||
|
const user = useStorage("user", defaultUserValue).value;
|
||
|
|
||
|
if (user) {
|
||
|
state.user = user;
|
||
|
return user;
|
||
|
}
|
||
|
return {};
|
||
|
}
|
||
|
},
|
||
|
isRealUserGetter(state) {
|
||
|
return state.isRealUser;
|
||
|
},
|
||
|
isGuest(state) {
|
||
|
return !state.isRealUser;
|
||
|
},
|
||
|
async isAuthenticatedGetter(state) {
|
||
|
let isAuthenticated = useStorage("id_token", "GuestAccess").value;
|
||
|
// updating value sample
|
||
|
// isAuthenticated.value = null
|
||
|
return isAuthenticated.length ? true : false;
|
||
|
},
|
||
|
getResetPasswordState(state) {
|
||
|
return state.isResetPassword;
|
||
|
},
|
||
|
getFullName(state) {
|
||
|
return state.fullName;
|
||
|
},
|
||
|
getMobile(state) {
|
||
|
return state.mobile;
|
||
|
},
|
||
|
},
|
||
|
actions: {
|
||
|
SET_USER_PHONE_NUMBER(mobile: string) {
|
||
|
this.mobile = mobile;
|
||
|
},
|
||
|
SET_USER_FULL_NAME(fullName: object) {
|
||
|
this.fullName = fullName;
|
||
|
// this.fullName.name = fullName?.first_name ?? undefined;
|
||
|
},
|
||
|
SET_IS_RESET_PASSWORD(isResetPassword = true) {
|
||
|
this.isResetPassword = isResetPassword;
|
||
|
},
|
||
|
setError(error = null) {
|
||
|
this.errors = error;
|
||
|
},
|
||
|
setUser(response) {
|
||
|
const myStore = useCommonStore();
|
||
|
|
||
|
this.isAuthenticated = true;
|
||
|
this.isRealUser = true;
|
||
|
this.user = response;
|
||
|
this.errors = {};
|
||
|
|
||
|
let id_token = useStorage("id_token", "");
|
||
|
id_token.value = this.user.token;
|
||
|
|
||
|
let user = useStorage("user", {});
|
||
|
user.value = this.user;
|
||
|
|
||
|
let user_stt = useStorage("user_stt", "");
|
||
|
user_stt.value = "user";
|
||
|
|
||
|
let USER_TYPE = useStorage("USER_TYPE", {});
|
||
|
USER_TYPE.value = this.user.type;
|
||
|
|
||
|
myStore.tokenIsValid = true;
|
||
|
},
|
||
|
setGuest(user: User) {
|
||
|
const myStore = useCommonStore();
|
||
|
|
||
|
this.isAuthenticated = true;
|
||
|
this.isRealUser = false;
|
||
|
this.user = user;
|
||
|
this.errors = {};
|
||
|
|
||
|
let id_token = useStorage("id_token", "");
|
||
|
id_token.value = "GuestAccess";
|
||
|
|
||
|
let userStr = useStorage("user", {});
|
||
|
userStr.value = this.user;
|
||
|
|
||
|
let user_stt = useStorage("user_stt", "");
|
||
|
user_stt.value = "c";
|
||
|
|
||
|
let USER_TYPE = useStorage("USER_TYPE", "-1");
|
||
|
USER_TYPE.value = "-1";
|
||
|
|
||
|
myStore.tokenIsValid = true;
|
||
|
},
|
||
|
logout() {
|
||
|
clearStorage();
|
||
|
const htmlElm = document.querySelector("html");
|
||
|
if (htmlElm) htmlElm.style.removeProperty("filter");
|
||
|
},
|
||
|
async getCaptcha() {
|
||
|
try {
|
||
|
const { $api } = useNuxtApp();
|
||
|
const response = await $api(apis.captcha, {
|
||
|
baseURL: import.meta.env.VITE_AUTH_BASE_URL,
|
||
|
method: "GET",
|
||
|
});
|
||
|
|
||
|
return response;
|
||
|
} catch (error) {
|
||
|
return error;
|
||
|
}
|
||
|
|
||
|
// const authHttpService = new HttpService(import.meta.env.VITE_AUTH_BASE_URL);
|
||
|
// return new Promise((resolve, reject) => {
|
||
|
// authHttpService
|
||
|
// .getRequest(apis.captcha)
|
||
|
// .then((response) => {
|
||
|
// resolve(response);
|
||
|
// })
|
||
|
// .catch((error) => {
|
||
|
// this.errors = error?.response?.data.message;
|
||
|
// reject(error?.response?.data);
|
||
|
// });
|
||
|
// });
|
||
|
},
|
||
|
async phoneLogin(credentials) {
|
||
|
try {
|
||
|
const { $api } = useNuxtApp();
|
||
|
const response = await $api(apis.phoneLogin, {
|
||
|
baseURL: import.meta.env.VITE_AUTH_BASE_URL,
|
||
|
method: "POST",
|
||
|
body: credentials,
|
||
|
});
|
||
|
|
||
|
this.setUser(response?.data);
|
||
|
return response;
|
||
|
} catch (error) {
|
||
|
this.errors = error?.response?.data.message;
|
||
|
return error;
|
||
|
}
|
||
|
|
||
|
// const authHttpService = new HttpService(import.meta.env.VITE_AUTH_BASE_URL);
|
||
|
|
||
|
// return new Promise((resolve, reject) => {
|
||
|
// authHttpService
|
||
|
// .postRequest(apis.phoneLogin, credentials)
|
||
|
// .then((response) => {
|
||
|
// resolve(response);
|
||
|
// })
|
||
|
// .catch((error) => {
|
||
|
// this.errors = error?.response?.data.message;
|
||
|
// reject(error?.response?.data);
|
||
|
// });
|
||
|
// });
|
||
|
},
|
||
|
async getActivationCode(credentials) {
|
||
|
try {
|
||
|
const { $api } = useNuxtApp();
|
||
|
const response = await $api(apis.activationCode, {
|
||
|
baseURL: import.meta.env.VITE_AUTH_BASE_URL,
|
||
|
method: "POST",
|
||
|
body: credentials,
|
||
|
});
|
||
|
|
||
|
this.setUser(response);
|
||
|
return response;
|
||
|
} catch (error) {
|
||
|
this.errors = error?.response?.data.message;
|
||
|
return error;
|
||
|
}
|
||
|
// const authHttpService = new HttpService(import.meta.env.VITE_AUTH_BASE_URL);
|
||
|
|
||
|
// return new Promise((resolve, reject) => {
|
||
|
// authHttpService
|
||
|
// .postRequest(apis.activationCode, credentials)
|
||
|
// .then((response) => {
|
||
|
// this.setUser(response.data);
|
||
|
// resolve(response);
|
||
|
// })
|
||
|
// .catch((error) => {
|
||
|
// this.errors = error?.response?.data.message;
|
||
|
// reject(error?.response?.data);
|
||
|
// });
|
||
|
// });
|
||
|
},
|
||
|
async loginWithGoogle(credentials) {
|
||
|
try {
|
||
|
const { $api } = useNuxtApp();
|
||
|
const response = await $api(apis.loginGoogle, {
|
||
|
baseURL: import.meta.env.VITE_AUTH_BASE_URL,
|
||
|
method: "POST",
|
||
|
body: credentials,
|
||
|
});
|
||
|
|
||
|
this.setUser(response?.data);
|
||
|
return response;
|
||
|
} catch (error) {
|
||
|
this.errors = error?.response?.data.message;
|
||
|
return error;
|
||
|
}
|
||
|
|
||
|
// const authHttpService = new HttpService(import.meta.env.VITE_AUTH_BASE_URL);
|
||
|
|
||
|
// return new Promise((resolve, reject) => {
|
||
|
// authHttpService
|
||
|
// .postRequest(apis.loginGoogle, credentials)
|
||
|
// .then((response) => {
|
||
|
// this.setUser(response.data);
|
||
|
// resolve(response);
|
||
|
// })
|
||
|
// .catch((error) => {
|
||
|
// this.errors = error?.response?.data.message;
|
||
|
// reject(error?.response?.data);
|
||
|
// });
|
||
|
// });
|
||
|
},
|
||
|
async login(credentials) {
|
||
|
try {
|
||
|
const { $api } = useNuxtApp();
|
||
|
const response = await $api(apis.login, {
|
||
|
baseURL: import.meta.env.VITE_AUTH_BASE_URL,
|
||
|
method: "POST",
|
||
|
body: credentials,
|
||
|
});
|
||
|
|
||
|
this.setUser(response.data);
|
||
|
return response;
|
||
|
} catch (error) {
|
||
|
this.errors = error?.response?.data.message;
|
||
|
return error;
|
||
|
}
|
||
|
// const authHttpService = new HttpService(import.meta.env.VITE_AUTH_BASE_URL);
|
||
|
|
||
|
// return new Promise((resolve, reject) => {
|
||
|
// authHttpService
|
||
|
// .postRequest(apis.login, credentials)
|
||
|
// .then((response) => {
|
||
|
// this.setUser(response.data);
|
||
|
// resolve(response);
|
||
|
// })
|
||
|
// .catch((error) => {
|
||
|
// this.errors = error?.response?.data.message;
|
||
|
// reject(error?.response?.data);
|
||
|
// });
|
||
|
// });
|
||
|
},
|
||
|
// called from the router.js
|
||
|
async loginAsGuest2() {
|
||
|
try {
|
||
|
const { $api } = useNuxtApp();
|
||
|
const response = await $api(apis.validateUser, {
|
||
|
baseURL: import.meta.env.VITE_AUTH_BASE_URL,
|
||
|
headers: {
|
||
|
"Content-Type": "application/x-www-form-urlencoded",
|
||
|
Authorization: "GuestAccess",
|
||
|
},
|
||
|
});
|
||
|
|
||
|
this.setUser(response?.data);
|
||
|
return response;
|
||
|
} catch (error) {
|
||
|
this.errors = error?.response?.data.message;
|
||
|
return error;
|
||
|
}
|
||
|
|
||
|
// return new Promise((resolve, reject) => {
|
||
|
// const httpService = new HttpService(import.meta.env.VITE_AUTH_BASE_URL);
|
||
|
// httpService
|
||
|
// .getRequest(apis.validateUser, {
|
||
|
// headers: {
|
||
|
// "Content-Type": "application/x-www-form-urlencoded",
|
||
|
// Authorization: "GuestAccess",
|
||
|
// },
|
||
|
// })
|
||
|
// .then((response) => {
|
||
|
// // let res = data.data;
|
||
|
// // res.data.user_data =res.data;
|
||
|
// this.setUser(response.data);
|
||
|
// resolve(response);
|
||
|
// })
|
||
|
// .catch((error) => {
|
||
|
// this.errors = error?.response?.data.message;
|
||
|
// reject(error?.response?.data);
|
||
|
// });
|
||
|
// });
|
||
|
},
|
||
|
// called from the auth mixin.
|
||
|
async loginAsGuest() {
|
||
|
try {
|
||
|
const { $api } = useNuxtApp();
|
||
|
const response = await $api(apis.validateUser, {
|
||
|
baseURL: import.meta.env.VITE_AUTH_BASE_URL,
|
||
|
headers: {
|
||
|
"Content-Type": "application/x-www-form-urlencoded",
|
||
|
Authorization: "GuestAccess",
|
||
|
},
|
||
|
});
|
||
|
|
||
|
this.setUser(response?.data);
|
||
|
return response;
|
||
|
} catch (error) {
|
||
|
this.errors = error?.response?.data.message;
|
||
|
return error;
|
||
|
}
|
||
|
|
||
|
// const authHttpService = new HttpService(import.meta.env.VITE_AUTH_BASE_URL);
|
||
|
|
||
|
// return new Promise((resolve, reject) => {
|
||
|
// authHttpService
|
||
|
// .getRequest(apis.validateUser, {
|
||
|
// headers: {
|
||
|
// "Content-Type": "application/x-www-form-urlencoded",
|
||
|
// Authorization: "GuestAccess",
|
||
|
// },
|
||
|
// })
|
||
|
// .then((response) => {
|
||
|
// // let res = data.data;
|
||
|
// // res.data.user_data =res.data;
|
||
|
// this.setUser(response.data);
|
||
|
// resolve(response);
|
||
|
// })
|
||
|
// .catch((error) => {
|
||
|
// this.errors = error?.response?.data.message;
|
||
|
// reject(error?.response?.data);
|
||
|
// });
|
||
|
// });
|
||
|
},
|
||
|
async forget(credentials) {
|
||
|
try {
|
||
|
const { $api } = useNuxtApp();
|
||
|
const response = await $api(apis.forget, {
|
||
|
baseURL: import.meta.env.VITE_AUTH_BASE_URL,
|
||
|
method: "POST",
|
||
|
body: credentials,
|
||
|
});
|
||
|
|
||
|
this.setUser(response?.data);
|
||
|
return response;
|
||
|
} catch (error) {
|
||
|
this.errors = error?.response?.data.message;
|
||
|
return error;
|
||
|
}
|
||
|
|
||
|
// const authHttpService = new HttpService(import.meta.env.VITE_AUTH_BASE_URL);
|
||
|
|
||
|
// return new Promise((resolve, reject) => {
|
||
|
// authHttpService
|
||
|
// .postRequest(apis.forget, credentials)
|
||
|
// .then((response) => {
|
||
|
// this.setUser(response.data);
|
||
|
// resolve(response);
|
||
|
// })
|
||
|
// .catch((error) => {
|
||
|
// this.errors = error?.response?.data.message;
|
||
|
// reject(error?.response?.data);
|
||
|
// });
|
||
|
// });
|
||
|
},
|
||
|
async resetPassword(credentials) {
|
||
|
try {
|
||
|
const { $api } = useNuxtApp();
|
||
|
const response = await $api(apis.resetPassword, {
|
||
|
baseURL: import.meta.env.VITE_AUTH_BASE_URL,
|
||
|
method: "POST",
|
||
|
body: credentials,
|
||
|
});
|
||
|
|
||
|
this.setUser(response?.data);
|
||
|
return response;
|
||
|
} catch (error) {
|
||
|
this.errors = error?.response?.data.message;
|
||
|
return error;
|
||
|
}
|
||
|
|
||
|
// const authHttpService = new HttpService(import.meta.env.VITE_AUTH_BASE_URL);
|
||
|
|
||
|
// return new Promise((resolve, reject) => {
|
||
|
// authHttpService
|
||
|
// .postRequest(apis.resetPassword, credentials)
|
||
|
// .then((response) => {
|
||
|
// this.setUser(response.data);
|
||
|
// resolve(response);
|
||
|
// })
|
||
|
// .catch((error) => {
|
||
|
// this.errors = error?.response?.data.message;
|
||
|
// reject(error?.response?.data);
|
||
|
// });
|
||
|
// });
|
||
|
},
|
||
|
|
||
|
async register(credentials) {
|
||
|
try {
|
||
|
const { $api } = useNuxtApp();
|
||
|
const response = await $api(apis.register, {
|
||
|
baseURL: import.meta.env.VITE_AUTH_BASE_URL,
|
||
|
method: "POST",
|
||
|
body: credentials,
|
||
|
});
|
||
|
|
||
|
this.setUser(response?.data);
|
||
|
return response;
|
||
|
} catch (error) {
|
||
|
this.errors = error?.response?.data.message;
|
||
|
return error;
|
||
|
}
|
||
|
|
||
|
// const authHttpService = new HttpService(import.meta.env.VITE_AUTH_BASE_URL);
|
||
|
|
||
|
// return new Promise((resolve, reject) => {
|
||
|
// authHttpService
|
||
|
// .postRequest(apis.register, credentials)
|
||
|
// .then((response) => {
|
||
|
// this.setUser(response.data);
|
||
|
// resolve(response);
|
||
|
// })
|
||
|
// .catch((error) => {
|
||
|
// this.errors = error?.response?.data.message;
|
||
|
// reject(error?.response?.data);
|
||
|
// });
|
||
|
// });
|
||
|
},
|
||
|
// verifyRealUser() {
|
||
|
// const authHttpService = new HttpService(
|
||
|
// import.meta.env.VITE_AUTH_BASE_URL
|
||
|
// );
|
||
|
|
||
|
// if (getUserStt() != "user") return false;
|
||
|
// if (getToken()) {
|
||
|
// authHttpService.updateHeaders();
|
||
|
// return true;
|
||
|
// }
|
||
|
// return false;
|
||
|
// },
|
||
|
// verifyAuth() {
|
||
|
// const authHttpService = new HttpService(
|
||
|
// import.meta.env.VITE_AUTH_BASE_URL
|
||
|
// );
|
||
|
|
||
|
// if (getToken()) {
|
||
|
// authHttpService.updateHeaders();
|
||
|
// return true;
|
||
|
// } else {
|
||
|
// logout();
|
||
|
// this.setGuest({
|
||
|
// id: 3,
|
||
|
// first_name: "کاربر",
|
||
|
// last_name: "مهمان",
|
||
|
// email: "",
|
||
|
// username: "Guest",
|
||
|
// user_id: 3,
|
||
|
// user_data: {
|
||
|
// first_name: "کاربر",
|
||
|
// last_name: "مهمان",
|
||
|
// username: "Guest",
|
||
|
// },
|
||
|
// });
|
||
|
// authHttpService.updateHeaders();
|
||
|
// return true;
|
||
|
// // logout();
|
||
|
// // return false;
|
||
|
// }
|
||
|
// },
|
||
|
async updatePassword(credentials) {
|
||
|
try {
|
||
|
const { $api } = useNuxtApp();
|
||
|
const response = await $api(apis.changePassword, {
|
||
|
baseURL: import.meta.env.VITE_AUTH_BASE_URL,
|
||
|
method: "POST",
|
||
|
body: credentials,
|
||
|
});
|
||
|
|
||
|
this.setUser(response?.data);
|
||
|
return response;
|
||
|
} catch (error) {
|
||
|
this.errors = error?.response?.data.message;
|
||
|
return error;
|
||
|
}
|
||
|
|
||
|
// const authHttpService = new HttpService(import.meta.env.VITE_AUTH_BASE_URL);
|
||
|
|
||
|
// return new Promise((resolve, reject) => {
|
||
|
// authHttpService
|
||
|
// .postRequest(apis.changePassword, credentials)
|
||
|
// .then((response) => {
|
||
|
// this.setUser(response.data);
|
||
|
// resolve(response);
|
||
|
// })
|
||
|
// .catch((error) => {
|
||
|
// this.errors = error?.response?.data.message;
|
||
|
// reject(error?.response?.data);
|
||
|
// });
|
||
|
// });
|
||
|
},
|
||
|
},
|
||
|
});
|