auth.js 883 B

12345678910111213141516171819202122232425262728293031
  1. import { defineStore } from 'pinia'
  2. import api from '../api'
  3. export const useAuthStore = defineStore('auth', {
  4. state: () => ({
  5. token: localStorage.getItem('token') || '',
  6. user: JSON.parse(localStorage.getItem('user')) || null,
  7. }),
  8. actions: {
  9. async login(username, password) {
  10. try {
  11. const response = await api.post('/login', { username, password })
  12. this.token = response.data.access_token
  13. this.user = { username: response.data.username }
  14. localStorage.setItem('token', this.token)
  15. localStorage.setItem('user', JSON.stringify(this.user))
  16. return true
  17. } catch (error) {
  18. console.error(error)
  19. return false
  20. }
  21. },
  22. logout() {
  23. this.token = ''
  24. this.user = null
  25. localStorage.removeItem('token')
  26. localStorage.removeItem('user')
  27. location.reload()
  28. }
  29. }
  30. })