Сервис авторизации — Тестовое задание
Реализовать бэкенд апи для реализации централизованной авторизации для группы сервисов.
Инструменты:
- python3
- poetry
- fastapi
- alembic
- sqlalchemy
- postgresql
- jwt
Цель сервиса: центральный сервис авторизации, выдает jwt токен при авторизации, позволяет выполнять операции CRUD над пользователями.
Сущность Пользователь:
- username
- password
Пользователь может иметь доступ к одному или множеству сервисов в виде единственной роли на каждый сервис.
Примеры структуры доступа:
Верно:
| username | role | service |
|---|---|---|
| supersu | admin | scheduler |
| supersu | client | graphics |
| externaluser | client | scheduler |
Ошибка:
| username | role | service |
|---|---|---|
| supersu | admin | scheduler |
| supersu | client | scheduler |
| externaluser | client | scheduler |
Функционал пользователя сервиса:
- Получить jwt токен по паре (username или email) и password
Функционал администратора:
- Получить список всех пользователей (с пагинацией)
- Создать пользователя передав логин и пароль
- Добавить доступ для пользователя (роль в сервисе)
- Удалить пользователя по логину
Дополнительно:
- Можно расширить функционал сервиса на усмотрение собеседуемого