auth.ts 741 B

123456789101112131415161718192021222324252627282930
  1. import { defineStore } from 'pinia'
  2. import request from '@/utils/request'
  3. interface AuthState {
  4. token: string
  5. username: string
  6. }
  7. export const useAuthStore = defineStore('auth', {
  8. state: (): AuthState => ({
  9. token: localStorage.getItem('admin_token') || '',
  10. username: ''
  11. }),
  12. getters: {
  13. isLoggedIn: (state) => !!state.token
  14. },
  15. actions: {
  16. async login(username: string, password: string) {
  17. const data: any = await request.post('/auth/login', { username, password })
  18. this.token = data.token
  19. this.username = username
  20. localStorage.setItem('admin_token', data.token)
  21. },
  22. logout() {
  23. this.token = ''
  24. this.username = ''
  25. localStorage.removeItem('admin_token')
  26. }
  27. }
  28. })