"""User model with role-based access control.""" import enum from datetime import datetime from sqlalchemy import String, DateTime, Enum from sqlalchemy.orm import Mapped, mapped_column from app.database import Base class UserRole(str, enum.Enum): VIEWER = "viewer" # View projects and download exports EDITOR = "editor" # Create/edit projects, run matching, build ratecards ADMIN = "admin" # All editor permissions + GMAL management, user management, data ingest class AppUser(Base): __tablename__ = "app_users" id: Mapped[int] = mapped_column(primary_key=True) email: Mapped[str] = mapped_column(String(255), unique=True, nullable=False) name: Mapped[str | None] = mapped_column(String(255)) role: Mapped[UserRole] = mapped_column(Enum(UserRole), default=UserRole.EDITOR) azure_oid: Mapped[str | None] = mapped_column(String(100)) created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow) last_login: Mapped[datetime | None] = mapped_column(DateTime)