Source code for mindroot.coreplugins.user_service.models

from pydantic import BaseModel, EmailStr, Field
from datetime import datetime
from typing import Optional, List, Set

[docs] class UserBase(BaseModel): """Base user data that's safe to expose""" username: str = Field(..., min_length=3, max_length=32) email: Optional[EmailStr] created_at: str last_login: Optional[str] = None email_verified: bool = False roles: List[str] = Field(default_factory=lambda: ["user"]) # Default role is 'user'
[docs] class UserAuth(UserBase): """User data including auth-sensitive fields""" password_hash: str verification_token: Optional[str] = None verification_expires: Optional[str] = None
[docs] class UserCreate(BaseModel): """Data required to create a new user""" username: str = Field(..., min_length=3, max_length=32, pattern="^[a-zA-Z0-9_]+$") email: EmailStr password: str = Field(..., min_length=8)
[docs] class UserInRequest(UserBase): """User data as attached to request.state.user""" token_data: dict
[docs] class PasswordResetToken(BaseModel): """Data for password reset tokens""" token: str expires_at: str is_admin_reset: bool = False