You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1.5 KiB
1.5 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 роуты
- Разграничение прав по ролям