mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-06-09 09:40:14 +08:00
refactor: replace Vuex with Pinia
This commit is contained in:
42
src/stores/auth.ts
Normal file
42
src/stores/auth.ts
Normal file
@@ -0,0 +1,42 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import type { authState } from '@/stores/types'
|
||||
|
||||
export const useAuthStore = defineStore('auth', {
|
||||
state: (): authState => ({
|
||||
token: null,
|
||||
remember: false,
|
||||
originalPath: null,
|
||||
}),
|
||||
|
||||
// 全局持久化
|
||||
persist: true,
|
||||
|
||||
actions: {
|
||||
setToken(token: string | null) {
|
||||
this.token = token
|
||||
},
|
||||
clearToken() {
|
||||
this.token = null
|
||||
},
|
||||
setRemember(remember: boolean) {
|
||||
this.remember = remember
|
||||
},
|
||||
setOriginalPath(originalPath: string | null) {
|
||||
this.originalPath = originalPath
|
||||
},
|
||||
login(payload: authState) {
|
||||
this.setToken(payload.token)
|
||||
this.setRemember(payload.remember)
|
||||
},
|
||||
logout() {
|
||||
this.clearToken()
|
||||
this.setOriginalPath(null)
|
||||
},
|
||||
},
|
||||
|
||||
getters: {
|
||||
getToken: state => state.token,
|
||||
getRemember: state => state.remember,
|
||||
getOriginalPath: state => state.originalPath,
|
||||
},
|
||||
})
|
||||
Reference in New Issue
Block a user