aee0f09db8
- Datafabrik: Dockerfile fix, agentorkestrering fungerar - Vision: Identify-modell, FAISS, OCR alla testade - API: Alla 7 integrationstester passerade - Upplösare: Entitetsupplösning verifierad
3.6 KiB
3.6 KiB
LandveX User Management API
FastAPI-baserad adminbackend för användarhantering med PostgreSQL.
Funktioner
- CRUD för användare — skapa, läsa, uppdatera, ta bort
- Roller —
admin,manager,analyst,viewermed hierarkisk åtkomstkontroll - JWT-auth — access token + refresh token
- Lösenordshantering — bcrypt-hashning, lösenordsbyte
- Inbjudningsflöde — skicka inbjudan → acceptera via token → sätt lösenord
- Tenant-stöd — flerklientsisolering
- Alembic-migrationer — databasversionshantering
Snabbstart
cd landvex/user-management
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# Kopiera env-fil
cp .env.example .env
# Kör migrationer
alembic upgrade head
# Starta server
uvicorn app.main:app --reload
API-endpoints
| Metod | Endpoint | Beskrivning | Rollkrav |
|---|---|---|---|
| POST | /api/v1/auth/login |
Logga in | Öppen |
| POST | /api/v1/auth/refresh |
Förnya access token | Öppen |
| GET | /api/v1/auth/me |
Aktuell användare | Inloggad |
| POST | /api/v1/auth/change-password |
Byt lösenord | Inloggad |
| GET | /api/v1/users |
Lista användare | Manager+ |
| GET | /api/v1/users/{id} |
Hämta användare | Inloggad |
| POST | /api/v1/users |
Skapa användare | Admin+ |
| PATCH | /api/v1/users/{id} |
Uppdatera användare | Inloggad (egen eller lägre roll) |
| DELETE | /api/v1/users/{id} |
Ta bort användare | Admin+ |
| GET | /api/v1/invitations |
Lista inbjudningar | Manager+ |
| POST | /api/v1/invitations |
Skapa inbjudan | Admin+ |
| GET | /api/v1/invitations/validate/{token} |
Validera inbjudan | Öppen |
| POST | /api/v1/invitations/accept |
Acceptera inbjudan | Öppen |
| DELETE | /api/v1/invitations/{id} |
Återkalla inbjudan | Admin+ |
| GET | /api/v1/tenants |
Lista tenants | Admin+ |
| GET | /api/v1/tenants/{id} |
Hämta tenant | Admin+ |
| POST | /api/v1/tenants |
Skapa tenant | Admin+ |
| PATCH | /api/v1/tenants/{id} |
Uppdatera tenant | Admin+ |
| DELETE | /api/v1/tenants/{id} |
Ta bort tenant | Admin+ |
Tester
pytest tests/ -v
Docker
docker build -t landvex-user-management .
docker run -p 8000:8000 --env-file .env landvex-user-management
Arkitektur
app/
├── config.py # Inställningar (pydantic-settings)
├── database.py # SQLAlchemy async engine + session
├── models.py # SQLAlchemy-modeller (User, Tenant, Invitation)
├── schemas.py # Pydantic request/response-scheman
├── security.py # JWT, bcrypt, roll-hierarki
├── dependencies.py # FastAPI dependencies (get_current_user, RoleChecker)
├── main.py # FastAPI-app med routers
├── routers/
│ ├── auth.py # Login, refresh, change-password, me
│ ├── users.py # User CRUD
│ ├── invitations.py # Invitation-flöde
│ └── tenants.py # Tenant CRUD
└── services/
├── user_service.py # Business logic: användare
├── invitation_service.py # Business logic: inbjudningar
└── tenant_service.py # Business logic: tenants
alembic/
└── versions/ # Databas-migrationer
tests/
├── conftest.py # Fixtures
├── test_auth.py
├── test_users.py
└── test_invitations.py
Roll-hierarki
| Roll | Nivå | Kan hantera |
|---|---|---|
| admin | 3 | Alla roller |
| manager | 2 | analyst, viewer |
| analyst | 1 | viewer |
| viewer | 0 | — |
En användare kan inte tilldela eller modifiera en användare med samma eller högre roll.