197 lines
4.7 KiB
JavaScript
197 lines
4.7 KiB
JavaScript
![]() |
import { mapState, mapActions } from "pinia";
|
||
|
import { useAuthStore } from "~/stores/authStore";
|
||
|
|
||
|
export default {
|
||
|
data() {
|
||
|
return {
|
||
|
// mobile: "",
|
||
|
// username: "",
|
||
|
// password: "",
|
||
|
// email: "",
|
||
|
// repassword: "",
|
||
|
loading: false,
|
||
|
submitStatus: null,
|
||
|
enableResendCode: false,
|
||
|
};
|
||
|
},
|
||
|
computed: {
|
||
|
...mapState(useAuthStore, ["isGuest"]),
|
||
|
},
|
||
|
|
||
|
methods: {
|
||
|
...mapActions(useAuthStore, [
|
||
|
"login",
|
||
|
"logout",
|
||
|
"forget",
|
||
|
"register",
|
||
|
"getCaptcha",
|
||
|
"phoneLogin",
|
||
|
"loginAsGuest",
|
||
|
"resetPassword",
|
||
|
"loginWithGoogle",
|
||
|
"getActivationCode",
|
||
|
]),
|
||
|
// callFrom : page | modal
|
||
|
async authBase(methodName, callFrom = "page") {
|
||
|
// this.$v.$touch();
|
||
|
const route = useRoute();
|
||
|
const router = useRouter();
|
||
|
|
||
|
const isFormCorrect = await this.v$.$validate();
|
||
|
if (!isFormCorrect) {
|
||
|
// Notify user that the form is invalid
|
||
|
this.submitStatus = "ERROR";
|
||
|
return;
|
||
|
} else {
|
||
|
// do your submit logic here
|
||
|
this.submitStatus = "PENDING";
|
||
|
|
||
|
if (this.loading) return false;
|
||
|
this.loading = true;
|
||
|
|
||
|
this[methodName]()
|
||
|
.then((res) => {
|
||
|
// mySwalToast({
|
||
|
// title: res.message,
|
||
|
// icon: "success",
|
||
|
// timer: 2000,
|
||
|
// });
|
||
|
|
||
|
if (callFrom == "modal") {
|
||
|
// fired event cached in the Group.vue and ChatList.vue
|
||
|
const { $eventBus } = useNuxtApp();
|
||
|
$eventBus.emit("authenticated-by-modal", route.query["invite-id"]);
|
||
|
}
|
||
|
// if redirected from chat system to relogin.
|
||
|
else {
|
||
|
if (route.query.redirectBack) {
|
||
|
navigateTo({
|
||
|
path: route.query.path,
|
||
|
});
|
||
|
// router.push({ path: route.query.path });
|
||
|
}
|
||
|
// normal mode.
|
||
|
else {
|
||
|
navigateTo({
|
||
|
path: "/",
|
||
|
});
|
||
|
|
||
|
// router.push({ path: "/" });
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
.catch((err) => {
|
||
|
mySwalToast({
|
||
|
title: err.message,
|
||
|
icon: "error",
|
||
|
});
|
||
|
this.resetCaptcha();
|
||
|
})
|
||
|
.finally(() => {
|
||
|
this.loading = false;
|
||
|
});
|
||
|
}
|
||
|
},
|
||
|
doregister() {
|
||
|
return this.register({
|
||
|
name: this.name,
|
||
|
last_name: this.last_name,
|
||
|
username: this.username,
|
||
|
password: this.password,
|
||
|
email: this.email,
|
||
|
mobile: this.mobile,
|
||
|
captcha: this.captcha,
|
||
|
});
|
||
|
},
|
||
|
dologin() {
|
||
|
return this.login({
|
||
|
username: this.username,
|
||
|
password: this.password,
|
||
|
captcha: this.captcha,
|
||
|
});
|
||
|
},
|
||
|
loginGuest() {
|
||
|
if (this.loading) return false;
|
||
|
this.loading = true;
|
||
|
|
||
|
this.loginAsGuest()
|
||
|
.then((res) => {
|
||
|
// mySwalToast({
|
||
|
// title: "خوش آمدید.",
|
||
|
// icon: "success",
|
||
|
// timer: 1000,
|
||
|
// });
|
||
|
const router = useRouter();
|
||
|
|
||
|
router.push({
|
||
|
name: "dashboard",
|
||
|
});
|
||
|
})
|
||
|
.catch((err) => {
|
||
|
mySwalToast({
|
||
|
title: err.message,
|
||
|
icon: "error",
|
||
|
});
|
||
|
})
|
||
|
.finally(() => {
|
||
|
this.loading = false;
|
||
|
});
|
||
|
|
||
|
// return this.loginAsGuest();
|
||
|
},
|
||
|
loginWithGoogle() {
|
||
|
if (this.loading) return false;
|
||
|
|
||
|
this.loading = true;
|
||
|
var vm = this;
|
||
|
this.$gAuth
|
||
|
.signIn()
|
||
|
.then((GoogleUser) => {
|
||
|
var id_token = "";
|
||
|
for (var key in GoogleUser)
|
||
|
for (var k in GoogleUser[key])
|
||
|
if (k == "id_token") id_token = GoogleUser[key][k];
|
||
|
vm.doLoginGoogle(id_token);
|
||
|
})
|
||
|
.catch((error) => {
|
||
|
mySwalToast({
|
||
|
title: "خطا",
|
||
|
text: error,
|
||
|
icon: "error",
|
||
|
position: "bottom-end",
|
||
|
showConfirmButton: false,
|
||
|
toast: true,
|
||
|
timer: 1500,
|
||
|
});
|
||
|
})
|
||
|
.finally(() => {
|
||
|
this.loading = false;
|
||
|
});
|
||
|
},
|
||
|
doLoginGoogle(token) {
|
||
|
this.loginWithGoogle({
|
||
|
token: token,
|
||
|
})
|
||
|
.then(() => {
|
||
|
const router = useRouter();
|
||
|
router.push({
|
||
|
name: "systems",
|
||
|
});
|
||
|
})
|
||
|
.catch(() => {})
|
||
|
.finally(() => {
|
||
|
this.loading = false;
|
||
|
});
|
||
|
},
|
||
|
goBack() {
|
||
|
const router = useRouter();
|
||
|
router.go(-1);
|
||
|
},
|
||
|
resetCaptcha() {
|
||
|
this.getCaptcha().then((res) => {
|
||
|
this.captchaImage = `data:image/jpeg; charset=utf-8; base64, ${res}`;
|
||
|
});
|
||
|
},
|
||
|
},
|
||
|
};
|