Files
Константин Лебединский b42a3c3d55 docs folder with steps
2026-03-21 16:06:24 +05:00

57 lines
1.5 KiB
Markdown

# Шаг 3: Аутентификация и авторизация
## Цель
Реализовать систему входа в систему и разграничения прав доступа.
---
## Задачи
### 3.1. Аутентификация
- **Эндпоинт:** `POST /api/auth/login`
- Принимает: `{ login, password }`
- Возвращает: JWT токен в httpOnly cookie
- Проверка пароля через bcrypt
### 3.2. Выход
- **Эндпоинт:** `POST /api/auth/logout`
- Очищает cookie с токеном
### 3.3. Защита роутов (Middleware)
- Проверка валидности JWT
- Извлечение user_id и роли из токена
### 3.4. Права доступа (RBAC)
| Роль | Доступ |
|------|--------|
| HR | Все операции |
| Manager | Своё подразделение |
| Employee | Только свои данные |
### 3.5. Middleware авторизации
```javascript
// Проверка роли
function requireRole(roles: string[]) {
// Проверяет, что user.role входит в массив roles
}
// Проверка подразделения (для manager)
function requireDepartment(departmentId: string) {
// Проверяет, что user.department_id === departmentId
}
```
---
## Результат
- Работающий вход по логину/паролю
- Защищённые API роуты
- Разграничение прав по ролям