72 lines
1.3 KiB
Python
72 lines
1.3 KiB
Python
"""
|
|
Pydantic models for the user module
|
|
"""
|
|
|
|
from typing import Optional
|
|
from pydantic import EmailStr
|
|
|
|
from src.organisation.schemas import OrgSchema
|
|
from src.schemas import CustomBaseModel, OrgIDMixin, OrgSummary, UserSummary
|
|
|
|
|
|
class OIDCClaims(CustomBaseModel):
|
|
exp: int
|
|
iat: int
|
|
auth_time: int
|
|
jti: str
|
|
iss: str
|
|
aud: str
|
|
sub: str
|
|
typ: str
|
|
azp: str
|
|
sid: str
|
|
acr: str
|
|
allowed_origins: list[str]
|
|
realm_access: dict[str, list[str]]
|
|
resource_access: dict[str, dict[str, list[str]]]
|
|
scope: str
|
|
email_verified: bool
|
|
name: str
|
|
preferred_username: str
|
|
given_name: str
|
|
family_name: str
|
|
email: str
|
|
db_id: int
|
|
|
|
|
|
class OIDCUser(CustomBaseModel):
|
|
first_name: str
|
|
last_name: str
|
|
email: str
|
|
oidc_id: str
|
|
|
|
|
|
class UserResponse(CustomBaseModel):
|
|
id: int
|
|
first_name: str
|
|
last_name: str
|
|
email: str
|
|
organisations: list[Optional[dict[str, str | int]]]
|
|
groups: Optional[dict[str, list[dict[str, str | int]]]] = None
|
|
|
|
|
|
class UserPostInvitationRequest(OrgIDMixin):
|
|
user_email: EmailStr
|
|
|
|
|
|
class UserPostInvitationAcceptRequest(CustomBaseModel):
|
|
jwt: str
|
|
|
|
|
|
class UserGetSelfOrgsResponse(CustomBaseModel):
|
|
organisations: list[OrgSchema]
|
|
|
|
|
|
class UserPostInvitationResponse(CustomBaseModel):
|
|
organisation: OrgSummary
|
|
invited_email: EmailStr
|
|
|
|
|
|
class UserPostInvitationAcceptResponse(CustomBaseModel):
|
|
organisation: OrgSummary
|
|
user: UserSummary
|