Module supertokens_python.recipe.totp.utils

Expand source code
# Copyright (c) 2024, VRAI Labs and/or its affiliates. All rights reserved.
#
# This software is licensed under the Apache License, Version 2.0 (the
# "License") as published by the Apache Software Foundation.
#
# You may not use this file except in compliance with the License. You may
# obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.

from typing import Union

from supertokens_python import AppInfo
from .types import TOTPConfig, TOTPNormalisedConfig, OverrideConfig


def validate_and_normalise_user_input(
    app_info: AppInfo, config: Union[TOTPConfig, None]
) -> TOTPNormalisedConfig:
    if config is None:
        config = TOTPConfig()

    issuer = config.issuer if config.issuer is not None else app_info.app_name
    default_skew = config.default_skew if config.default_skew is not None else 1
    default_period = config.default_period if config.default_period is not None else 30

    if config.override is None:
        override = OverrideConfig()
    else:
        override = OverrideConfig(
            functions=config.override.functions,
            apis=config.override.apis,
        )

    return TOTPNormalisedConfig(
        issuer=issuer,
        default_skew=default_skew,
        default_period=default_period,
        override=override,
    )

Functions

def validate_and_normalise_user_input(app_info: AppInfo, config: Optional[TOTPConfig]) ‑> TOTPNormalisedConfig