Skip to content

Commit

Permalink
more types
Browse files Browse the repository at this point in the history
  • Loading branch information
rishabhpoddar committed Aug 13, 2024
1 parent 1cd37b7 commit 8b7e0c4
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 4 deletions.
6 changes: 3 additions & 3 deletions supertokens_python/recipe/multifactorauth/interfaces.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
if TYPE_CHECKING:
from supertokens_python.framework import BaseRequest, BaseResponse
from supertokens_python.recipe.session import SessionContainer
from .types import MFARequirementList, AccountLinkingConfig
from .types import MFARequirementList, MultiFactorAuthConfig


class RecipeInterface(ABC):
Expand Down Expand Up @@ -98,14 +98,14 @@ def __init__(
request: BaseRequest,
response: BaseResponse,
recipe_id: str,
config: AccountLinkingConfig,
config: MultiFactorAuthConfig,
recipe_implementation: RecipeInterface,
app_info: AppInfo,
):
self.request: BaseRequest = request
self.response: BaseResponse = response
self.recipe_id: str = recipe_id
self.config: AccountLinkingConfig = config
self.config = config
self.recipe_implementation: RecipeInterface = recipe_implementation
self.app_info = app_info

Expand Down
12 changes: 11 additions & 1 deletion supertokens_python/recipe/multifactorauth/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,17 @@ def __init__(
self.apis = apis


class AccountLinkingConfig:
class InputOverrideConfig:
def __init__(
self,
functions: Union[Callable[[RecipeInterface], RecipeInterface], None] = None,
apis: Union[Callable[[APIInterface], APIInterface], None] = None,
):
self.functions = functions
self.apis = apis


class MultiFactorAuthConfig:
def __init__(
self,
first_factors: Optional[List[str]],
Expand Down
36 changes: 36 additions & 0 deletions supertokens_python/recipe/multifactorauth/utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# 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 __future__ import annotations

from typing import TYPE_CHECKING, List, Optional, Union


if TYPE_CHECKING:
from .types import OverrideConfig, InputOverrideConfig, MultiFactorAuthConfig


def validate_and_normalise_user_input(
first_factors: Optional[List[str]],
override: Union[InputOverrideConfig, None] = None,
) -> MultiFactorAuthConfig:
if first_factors is not None and len(first_factors) == 0:
raise ValueError("'first_factors' can be either None or a non-empty list")

if override is None:
override = InputOverrideConfig()

return MultiFactorAuthConfig(
first_factors=first_factors,
override=OverrideConfig(functions=override.functions, apis=override.apis),
)

0 comments on commit 8b7e0c4

Please sign in to comment.