canaille-globuzma/canaille/oidc/basemodels.py

97 lines
2.1 KiB
Python

import datetime
from typing import List
from typing import Optional
from canaille.backends.models import Model
from canaille.core.models import User
class Client(Model):
"""
OpenID Connect client definition.
"""
id: str
description: Optional[str]
preconsent: Optional[bool]
post_logout_redirect_uris: List[str]
audience: List["Client"]
client_id: Optional[str]
client_secret: Optional[str]
client_id_issued_at: Optional[datetime.datetime]
client_secret_expires_at: Optional[datetime.datetime]
client_name: Optional[str]
contacts: List[str]
client_uri: Optional[str]
redirect_uris: List[str]
logo_uri: Optional[str]
grant_types: List[str]
response_types: List[str]
scope: List[str]
tos_uri: Optional[str]
policy_uri: Optional[str]
jwks_uri: Optional[str]
jwk: Optional[str]
token_endpoint_auth_method: Optional[str]
software_id: Optional[str]
software_version: Optional[str]
class AuthorizationCode(Model):
"""
OpenID Connect temporary authorization code definition.
"""
id: str
authorization_code_id: str
code: str
client: "Client"
subject: User
redirect_uri: Optional[str]
response_type: Optional[str]
scope: List[str]
nonce: Optional[str]
issue_date: datetime.datetime
lifetime: int
challenge: Optional[str]
challenge_method: Optional[str]
revokation_date: datetime.datetime
class Token(Model):
"""
OpenID Connect token definition.
"""
id: str
token_id: str
access_token: str
client: "Client"
subject: User
type: str
refresh_token: str
scope: List[str]
issue_date: datetime.datetime
lifetime: int
revokation_date: datetime.datetime
audience: List["Client"]
class Consent(Model):
"""
Long-term user consent to an application.
"""
id: str
consent_id: str
subject: User
client: "Client"
scope: List[str]
issue_date: datetime.datetime
revokation_date: datetime.datetime
def revoke(self):
raise NotImplementedError()
def restore(self):
raise NotImplementedError()