Files
bakery-ia/services/auth
2025-08-03 14:42:33 +02:00
..
2025-08-03 14:42:33 +02:00
2025-07-17 21:48:41 +02:00
2025-07-20 18:08:24 +02:00
2025-07-20 23:15:57 +02:00
2025-07-17 15:55:23 +02:00
2025-07-18 17:14:30 +02:00
2025-07-26 22:03:55 +02:00

================================================================

services/auth/README.md

================================================================

Authentication Service

Microservice for user authentication and authorization in the bakery forecasting platform.

Features

  • User registration and login
  • JWT access and refresh tokens
  • Password security validation
  • Rate limiting and login attempt tracking
  • Multi-tenant user management
  • Session management
  • Event publishing for user actions

Quick Start

Development

# Start dependencies
docker-compose up -d auth-db redis rabbitmq

# Install dependencies
pip install -r requirements.txt

# Run migrations
alembic upgrade head

# Start service
uvicorn app.main:app --reload --host 0.0.0.0 --port 8001

With Docker

# Start everything
docker-compose up -d

# View logs
docker-compose logs -f auth-service

# Run tests
docker-compose exec auth-service pytest

API Endpoints

Authentication

  • POST /api/v1/auth/register - Register new user
  • POST /api/v1/auth/login - User login
  • POST /api/v1/auth/refresh - Refresh access token
  • POST /api/v1/auth/verify - Verify token
  • POST /api/v1/auth/logout - Logout user

User Management

  • GET /api/v1/users/me - Get current user
  • PUT /api/v1/users/me - Update current user
  • POST /api/v1/users/change-password - Change password

Health

  • GET /health - Health check
  • GET /metrics - Prometheus metrics

Configuration

Set these environment variables:

DATABASE_URL=postgresql+asyncpg://auth_user:auth_pass123@auth-db:5432/auth_db
REDIS_URL=redis://redis:6379/0
RABBITMQ_URL=amqp://bakery:forecast123@rabbitmq:5672/
JWT_SECRET_KEY=your-super-secret-jwt-key-change-in-production
JWT_ACCESS_TOKEN_EXPIRE_MINUTES=30
JWT_REFRESH_TOKEN_EXPIRE_DAYS=7
MAX_LOGIN_ATTEMPTS=5
LOCKOUT_DURATION_MINUTES=30

Testing

# Run all tests
pytest

# Run with coverage
pytest --cov=app

# Run specific test file
pytest tests/test_auth.py -v

Database Migrations

# Create migration
alembic revision --autogenerate -m "description"

# Apply migrations
alembic upgrade head

# Rollback
alembic downgrade -1

Monitoring

  • Health endpoint: /health
  • Metrics endpoint: /metrics (Prometheus format)
  • Logs: Structured JSON logging
  • Tracing: Request ID tracking

Security Features

  • Bcrypt password hashing
  • JWT tokens with expiration
  • Rate limiting on login attempts
  • Account lockout protection
  • IP and user agent tracking
  • Token revocation support

Events Published

  • user.registered - When user registers
  • user.login - When user logs in
  • user.logout - When user logs out
  • user.password_changed - When password changes