123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- import { defineStore } from 'pinia'
- import { User } from '/admin/types/user'
- import http from '/admin/support/http'
- import { rememberAuthToken, removeAuthToken } from '/admin/support/helper'
- import Message from '/admin/support/message'
- import router from '/admin/router'
- import { Permission } from '/admin/types/permission'
- export const useUserStore = defineStore('UserStore', {
- state: (): User => {
- return {
- id: 0,
- username: '',
- avatar: '',
- email: '',
- remember_token: '',
- status: 0,
- permissions: [] as Permission[],
- roles: [] as string[],
- }
- },
- getters: {
- getId(): number {
- return this.id
- },
- getNickname(): string {
- return this.username
- },
- getAvatar(): string {
- return this.avatar
- },
- getRoles(): string[] | undefined {
- return this.roles
- },
- getPermissions(): Permission[] | undefined {
- return this.permissions
- },
- },
- actions: {
- isSuperAdmin(): boolean {
- return this.id === 1
- },
- setUsername(username: string) {
- this.username = username
- },
- setId(id: number) {
- this.id = id
- },
- setRememberToken(token: string) {
- this.remember_token = token
- },
- setAvatar(avatar: string) {
- this.avatar = avatar
- },
- setRoles(roles: string[]) {
- this.roles = roles
- },
- setPermissions(permissions: Permission[]) {
- this.permissions = permissions
- },
- setEmail(email: string) {
- this.email = email
- },
- setStatus(status: number) {
- this.status = status
- },
- /**
- * login
- *
- * @param params
- * @returns
- */
- login(params: Object) {
- return new Promise<void>((resolve, reject) => {
- http
- .post('/login', params)
- .then(response => {
- const { token } = response.data.data
- rememberAuthToken(token)
- this.setRememberToken(token)
- resolve()
- })
- .catch(e => {
- reject(e)
- })
- })
- },
- /**
- * logout
- */
- logout() {
- http
- .post('/logout')
- .then(() => {
- removeAuthToken()
- this.$reset()
- router.push({ path: '/login' })
- })
- .catch(e => {
- Message.error(e.message)
- })
- },
- /**
- * user info
- */
- getUserInfo() {
- return new Promise((resolve, reject) => {
- http
- .get('/user/online')
- .then(response => {
- const { id, username, email, avatar, permissions, roles, rememberToken, status } = response.data.data
- // set user info
- this.setId(id)
- this.setUsername(username)
- this.setEmail(email)
- this.setRoles(roles)
- this.setRememberToken(rememberToken)
- this.setStatus(status)
- this.setAvatar(avatar)
- this.setPermissions(permissions)
- resolve(response.data.data)
- })
- .catch(e => {
- reject(e)
- })
- })
- },
- },
- })
|