Skip to content

ProgrammistNik/shift

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Salary Service

REST-сервис для просмотра текущей зарплаты и даты следующего повышения.
Каждый сотрудник может видеть только свою сумму: данные доступа к защищённым эндпоинтам выдаются по логину/паролю через JWT-токен.


Задание

Реализуйте REST-сервис просмотра текущей зарплаты и даты следующего повышения. Из-за того, что такие данные очень важны и критичны, каждый сотрудник может видеть только свою сумму. Для обеспечения безопасности, вам потребуется реализовать метод где по логину и паролю сотрудника будет выдан секретный токен, который действует в течение определенного времени. Запрос данных о зарплате должен выдаваться только при предъявлении валидного токена.


Требования

  • Python 3.11+
  • PostgreSQL 15+
  • Docker & Docker Compose (Опционально)

Быстрый старт

  1. Клонировать репозиторий

  2. Установка зависимостей

    poetry install
  3. Создать файл окружения .env

    # === Database Configuration ===
    DB_HOST=localhost
    DB_PORT=5432
    DB_NAME=your_database_name
    DB_USER=your_db_user
    DB_PASSWORD=your_db_password
    # === JWT Configuration ===
    SECRET_KEY=<ваш_секретный_ключ>
    ALGORITHM=HS256
    ACCESS_TOKEN_EXPIRE_MINUTES=<время_жизни_токена_в_минутах_int>
  4. Инициализация БД и миграции

    poetry run alembic upgrade head
  5. Запуск

    poetry run uvicorn app.main:app --reload
  6. Проверить работу

    curl http://localhost:8000/
    # {"message":"Salary-service!"}

Запуск с помощью Docker

  1. Клонировать репозиторий

  2. Создать файл окружения .env

    # === Database Configuration ===
    DB_HOST=localhost
    DB_PORT=5432
    DB_NAME=your_database_name
    DB_USER=your_db_user
    DB_PASSWORD=your_db_password
    # === JWT Configuration ===
    SECRET_KEY=<ваш_секретный_ключ>
    ALGORITHM=HS256
    ACCESS_TOKEN_EXPIRE_MINUTES=<время_жизни_токена_в_минутах_int>
  3. Соберите и запустите контейнеры

    docker compose up --build
  4. Проверить работу

    curl http://localhost:8000/
    # {"message":"Salary-service!"}

Эндпоинты

Аутентификация

Метод Путь Описание
POST /auth/register/ Регистрация нового пользователя
POST /auth/login/ Авторизация: выдать JWT-токен в cookie
POST /logout/ Выход: удалить JWT-cookie

Пользователь

Все эндпоинты требуют валидного users_access_token в HTTP-куках.

Метод Путь Описание
GET /users/me/ Получить данные текущего пользователя
PATCH /users/update/me Частичное обновление данных пользователя
DELETE /users/delete/me Удаление текущего пользователя

Зарплата

Метод Путь Описание
GET /salary/me/ Получить текущую зарплату и дату повышения

Тестирование

poetry run pytest

Тесты находятся в директории tests/ и покрывают:

  • Аутентификацию (регистрация, логин, логаут)

  • Получение, обновление и удаление данных пользователя

  • Получение зарплаты (включая защиту по токену)

  • Проверку авторизации и ошибок доступа

  • Граничные и невалидные случаи


Документация OpenAPI

После запуска сервис предоставляет интерактивную документацию API в двух вариантах:

  • Swagger UI (интерактивный и удобный интерфейс):
http://localhost:8000/docs
  • ReDoc (альтернативная, более формальная документация):
http://localhost:8000/redoc

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published