Files
boc/landvex/user-management/README.md
T
Bernt aee0f09db8 landvex: Fixar och tester klara för alla komponenter
- Datafabrik: Dockerfile fix, agentorkestrering fungerar
- Vision: Identify-modell, FAISS, OCR alla testade
- API: Alla 7 integrationstester passerade
- Upplösare: Entitetsupplösning verifierad
2026-07-05 06:41:32 +00:00

111 lines
3.6 KiB
Markdown

# 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`, `viewer` med 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
```bash
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
```bash
pytest tests/ -v
```
## Docker
```bash
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.