Files
TestingWebApp/docs/шаги/03-auth.md
T
Константин Лебединский a68331c86b docs: статус проекта, инструкция dev, обновление всех .md
- PROJECT_STATUS: что сделано (черновики, версии, разбор, каталог) и планы
- DEV_CONTOUR_USER_GUIDE: сценарии для проверяющих на dev-стенде
- README, ТЗ, card1, журнал, бэклоги, шаги 01–11+README, спринты, TEST_TABLES: ссылки и примечания
- backend/PROGRESS: ссылка на PROJECT_STATUS

Made-with: Cursor
2026-04-24 22:12:06 +05:00

62 lines
1.7 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 роуты
- Разграничение прав по ролям
---
*Актуальная привязка к коду: [../PROJECT_STATUS.md](../PROJECT_STATUS.md) · индекс шагов: [README.md](README.md).*