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

45 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
**Импорт функции 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` указывает, что состояние хранилища должно сохраняться между перезагрузками страницы.