a68331c86b
- PROJECT_STATUS: что сделано (черновики, версии, разбор, каталог) и планы - DEV_CONTOUR_USER_GUIDE: сценарии для проверяющих на dev-стенде - README, ТЗ, card1, журнал, бэклоги, шаги 01–11+README, спринты, TEST_TABLES: ссылки и примечания - backend/PROGRESS: ссылка на PROJECT_STATUS Made-with: Cursor
1.7 KiB
1.7 KiB
Шаг 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 авторизации
// Проверка роли
function requireRole(roles: string[]) {
// Проверяет, что user.role входит в массив roles
}
// Проверка подразделения (для manager)
function requireDepartment(departmentId: string) {
// Проверяет, что user.department_id === departmentId
}
Результат
- Работающий вход по логину/паролю
- Защищённые API роуты
- Разграничение прав по ролям
Актуальная привязка к коду: ../PROJECT_STATUS.md · индекс шагов: README.md.