- Description https://github.com/rolling-scopes-school/basic-nodejs-2021Q2/blob/master/descriptions/authentification-jwt.md
- Cross-check https://github.com/rolling-scopes-school/basic-nodejs-2021Q2/blob/master/cross-check/authentification-jwt.md
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 баллов. Штрафы отсутствуют
- Пароли пользователей сохраняются в базу в виде хэша с использованием
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 баллов