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

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