# Шаг 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 роуты - Разграничение прав по ролям