Add new alert architecture
This commit is contained in:
@@ -1,129 +0,0 @@
|
||||
# ================================================================
|
||||
# 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
|
||||
|
||||
```bash
|
||||
# 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
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
```bash
|
||||
# Run all tests
|
||||
pytest
|
||||
|
||||
# Run with coverage
|
||||
pytest --cov=app
|
||||
|
||||
# Run specific test file
|
||||
pytest tests/test_auth.py -v
|
||||
```
|
||||
|
||||
## Database Migrations
|
||||
|
||||
```bash
|
||||
# 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
|
||||
Reference in New Issue
Block a user