Smail/frontend/src/views/Login/Login.js
smail 581e70b2ca
Some checks are pending
Security Checks / security (push) Waiting to run
完善独立匿名密码恢复页面
2026-09-16 13:06:15 +08:00

63 lines
1.5 KiB
JavaScript

import { reactive, ref } from "vue"
import { ElMessage } from "element-plus"
import { useRouter } from "vue-router"
import lang from "../../i18n/i18n"
import { http } from "@/utils/axios"
import { useGlobalStatusStore } from "@/stores/useGlobalStatusStore"
import { getSafeLoginRedirect } from "@/utils/navigation.mjs"
export function usePage() {
const router = useRouter()
const globalStatus = useGlobalStatusStore()
const loading = ref(false)
const form = reactive({
account: "",
password: "",
})
const onSubmit = async () => {
if (!form.account || !form.password) {
ElMessage.warning(lang.login_fill_required)
return
}
loading.value = true
try {
const res = await http.post("/api/v1/login", form)
if (res.errorNo !== 0) {
ElMessage.error(res.errorMsg)
return
}
const redirect = getSafeLoginRedirect(router.currentRoute.value.query.redirect)
if (res.data?.pending) {
globalStatus.setPendingLogin({ ...res.data, redirect })
await router.replace({ name: "login-verification" })
return
}
globalStatus.clearPendingLogin()
globalStatus.setUser(res.data, true)
await router.replace(redirect)
} catch (error) {
ElMessage.error("登录请求失败,请稍后重试")
} finally {
loading.value = false
}
}
const goForgotPassword = () => {
window.location.assign('/public-password-recovery')
}
return {
lang,
form,
onSubmit,
loading,
goForgotPassword
}
}