# scopes.api.auth user from fastapi import APIRouter from pwdlib import PasswordHash from pydantic import BaseModel, Field from typing import List from scopes.api import deps from scopes.storage import user as st_user class User(BaseModel): uid: str | None = None name: str login: str display_name: str email: str | None = None pw_hash: str | None = Field(exclude=True, default=None) groups: List[str] = Field(default_factory=list) # password handling pw_hash = PasswordHash.recommended() def hashPassword(pw): return pw_hash.hash(pw) def verifyPassword(plain, hashed): return pw_hash.verify(plain, hashed) # routes router = APIRouter() @router.get('/users', response_model=list[User]) async def get_users(storage: deps.Storage): users = storage.create(st_user.Users) result = [tr.toObject(User) for tr in users.query()] return result