Files
we_pro_dock/FRONTEND/STORE/AUTH.TS.md
2024-05-14 11:39:33 +03:00

2.0 KiB
Raw Blame History

Импорт функции defineStore из библиотеки pinia для создания хранилища:

import { defineStore } from 'pinia'

Импорт типа User из файла с типами '@/types':

import { User } from '@/types'

Определение типа состояния для хранилища auth:

type authState = {
  currentUser: User | undefined;
};

В этом блоке определяется тип authState, который представляет состояние хранилища. currentUser может быть типа User или undefined.

Начальное состояние хранилища:

const defaultState: authState = {
  currentUser: undefined,
};

Здесь устанавливается начальное состояние хранилища authStore, в котором currentUser равен undefined.

Экспорт хранилища authStore с использованием defineStore:

export const authStore = defineStore({
  id: 'auth',
  state: () => defaultState,
  getters: {
    isAuthenticated: (state) => state.currentUser !== undefined,
    jwtToken: (state) => state.currentUser?.token,
  },
  actions: {
    signIn(user: User) {
      this.currentUser = user;
    },
    signOut() {
      this.currentUser = undefined;
    },
  },
  persist: true,
});

Здесь мы используем defineStore для создания хранилища authStore с определенными состоянием (state), геттерами (getters) для проверки аутентификации и получения токена, а также с действиями (actions) для входа и выхода пользователя. Флаг persist: true указывает, что состояние хранилища должно сохраняться между перезагрузками страницы.