Files
boc/landvex/user-management
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
..

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
  • Rolleradmin, 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

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.