This commit is contained in:
2024-05-14 11:39:33 +03:00
commit 2762ac794a
26 changed files with 1506 additions and 0 deletions

45
FRONTEND/STORE/AUTH.TS.md Normal file
View File

@@ -0,0 +1,45 @@
**Импорт функции 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` указывает, что состояние хранилища должно сохраняться между перезагрузками страницы.