| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import { defineStore } from 'pinia'
- import { useUserStore } from './user'
- import type { LockInfo } from '@/types/store'
- import { LOCK_INFO_KEY } from '@/enums/cacheEnum'
- import { Persistent } from '@/utils/cache/persistent'
- interface LockState {
- lockInfo: Nullable<LockInfo>
- }
- export const useLockStore = defineStore('app-lock', {
- state: (): LockState => ({
- lockInfo: Persistent.getLocal(LOCK_INFO_KEY),
- }),
- getters: {
- getLockInfo(state): Nullable<LockInfo> {
- return state.lockInfo
- },
- },
- actions: {
- setLockInfo(info: LockInfo) {
- this.lockInfo = Object.assign({}, this.lockInfo, info)
- Persistent.setLocal(LOCK_INFO_KEY, this.lockInfo, true)
- },
- resetLockInfo() {
- Persistent.removeLocal(LOCK_INFO_KEY, true)
- this.lockInfo = null
- },
- // Unlock
- async unLock(password?: string) {
- const userStore = useUserStore()
- if (this.lockInfo?.pwd === password) {
- this.resetLockInfo()
- return true
- }
- const tryLogin = async () => {
- // TODO 滑块验证码
- try {
- const username = userStore.getUserInfo?.user.nickname
- const res = await userStore.login({
- username,
- password: password!,
- goHome: false,
- mode: 'none',
- captchaVerification: '',
- })
- if (res)
- this.resetLockInfo()
- return res
- }
- catch (error) {
- return false
- }
- }
- return await tryLogin()
- },
- },
- })
|