Task 8. Authentication and JWT

Author: Alex Malagor

done deadline
28.06.2021 28.06.2021

Информация

Приложение работает в докере. При запуске приложение создает базу данных, запускает миграции и записывает пользователя "admin" в таблицу users. То есть можно сразу запускать тесты без дополнительных телодвижений. База данных размещается в отдельном томе в папке ./database/data Логи работы приложения будут сохранены в папке ./logs в корне проекта

Инструкция

  • Перейти в папку с проектом
  • Установить зависимости npm install
  • Запустить проект в докере npm run docker:up
  • Запустить тесты npm run test:auth
  • Для остановки докера можно воспользоваться командой npm run docker:down
  • Возможно при первом запуске потребуется несколько перезагрузок, прежде чем стартанет база данных.
  • В случае вопросов буду благодарен если сперва свяжетесь со мной для уточнения деталей. Дискорд @Malagor#6535

Самопроверка [100/100]

Максимальная оценка - 100 баллов. Штрафы отсутствуют

  • Пароли пользователей сохраняются в базу в виде хэша с использованием bcrypt. +20 баллов.
  • Добавлен роут /login, связанная с ним логика разделена между контроллером (middleware) и соответствующим сервисом. В случае отсутствия юзера в БД, возвращается 403 (Forbidden) HTTP статус. +20 баллов.
  • JWT токен содержит userId и login, секретный ключ хранится в .env +20 баллов.
  • Доступ ко всем роутам, за исключением /login, /doc и /, требует аутентификации +20 баллов.
  • Проверка на наличие токена в реквесте реализована в отдельной middleware на уровне приложения. В случае если токен не валидный, или отсутствует, возвращается 401 (Unauthorized) HTTP статус. +20 баллов.

Штрафы (отсутствуют):

  • Наличие изменений в тестах либо в workflow минус 100 баллов
  • Внесение изменений в репозиторий после дедлайна не считая коммиты, вносящие изменения только в Readme.md минус 30% от максимального балла за задание (для этого задания 30 баллов)
  • За каждую ошибку линтера при запуске npm run lint на основе локального конфига -20 баллов (именно errors, не warnings)
  • За каждую ошибку компилятора -20 баллов
  • Для успешного прохождения тестов обязательно наличие в БД юзера с логином - admin, паролем - admin. Все тесты npm run test:auth должны проходить успешно, каждый не пройденный тест минус 20 баллов.
  • Имеются явно указанные типы any, unknown -20 баллов за каждое использование
  • За отсутствие отдельной ветки для разработки -20 баллов
  • За отсутствие Pull Request -20 баллов
  • За неполную информацию в описании Pull Request (отсутствует либо некорректен один из 3 обязательных пунктов) -10 баллов
  • Меньше 3 коммитов в ветке разработки, не считая коммиты, вносящие изменения только в Readme.md-20 баллов