Source code for pyeudiw.satosa.frontends.openid4vci.models.auhtorization_detail

import logging
from typing import List, Optional

from pydantic import model_validator

from pyeudiw.satosa.exceptions import InvalidRequestException
from pyeudiw.satosa.frontends.openid4vci.models.openid4vci_basemodel import (
    OpenId4VciBaseModel,
    ENDPOINT_CTX
)

logger = logging.getLogger(__name__)
OPEN_ID_CREDENTIAL_TYPE = "openid_credential"

[docs] class AuthorizationDetail(OpenId4VciBaseModel): type: str = None credential_configuration_id: str = None credential_identifiers: Optional[List[str]] = None # for token response
[docs] @model_validator(mode='after') def check_authorization_detail(self) -> "AuthorizationDetail": endpoint = self.get_ctx(ENDPOINT_CTX) self.validate_type(endpoint) self.validate_credential_configuration_id(endpoint) return self
[docs] def validate_credential_configuration_id(self, endpoint: str): self.credential_configuration_id = self.strip(self.credential_configuration_id) self.check_missing_parameter(self.credential_configuration_id, "authorization_details.credential_configuration_id", endpoint) credential_configurations_supported = self.get_config_utils().get_credential_configurations_supported() if self.credential_configuration_id not in [ccs.id for ccs in credential_configurations_supported.values()]: logger.error(f"invalid credential_configuration_ids {self.credential_configuration_id} in request `{endpoint}` endpoint") raise InvalidRequestException("invalid `authorization_details.credential_configuration_id` parameter")
[docs] def validate_type(self, endpoint: str): self.type = self.strip(self.type) self.check_missing_parameter(self.type, "authorization_details.type", endpoint) if self.type != OPEN_ID_CREDENTIAL_TYPE : logger.error(f"invalid authorization_details.type {self.type} in request `{endpoint}` endpoint") raise InvalidRequestException("invalid `authorization_details.type` parameter")