event decarotor checked & event 2 endpoint dynmc create is tested
This commit is contained in:
78
ApiServices/Token/token_handler.py
Normal file
78
ApiServices/Token/token_handler.py
Normal file
@@ -0,0 +1,78 @@
|
||||
from typing import Union
|
||||
|
||||
from AllConfigs.Token.config import Auth
|
||||
from ErrorHandlers import HTTPExceptionApi
|
||||
from Services.Redis import RedisActions, AccessToken
|
||||
from fastapi import Request
|
||||
from ApiValidations.Custom.token_objects import EmployeeTokenObject, OccupantTokenObject
|
||||
|
||||
|
||||
class TokenService:
|
||||
|
||||
@classmethod
|
||||
def raise_error_if_request_has_no_token(cls, request: Request) -> None:
|
||||
"""Get access token from request headers."""
|
||||
if not hasattr(request, "headers"):
|
||||
raise HTTPExceptionApi(
|
||||
error_code="",
|
||||
lang="en",
|
||||
)
|
||||
if not request.headers.get(Auth.ACCESS_TOKEN_TAG):
|
||||
raise HTTPExceptionApi(
|
||||
error_code="",
|
||||
lang="en",
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def get_access_token_from_request(cls, request: Request) -> str:
|
||||
"""Get access token from request headers."""
|
||||
cls.raise_error_if_request_has_no_token(request=request)
|
||||
return request.headers.get(Auth.ACCESS_TOKEN_TAG)
|
||||
|
||||
@classmethod
|
||||
def get_object_via_access_key(cls, access_token: str) -> Union[EmployeeTokenObject, OccupantTokenObject]:
|
||||
"""Get access token from request headers."""
|
||||
access_token = AccessToken(
|
||||
accessToken=access_token,
|
||||
userUUID="",
|
||||
)
|
||||
if redis_object := RedisActions.get_json(
|
||||
list_keys=access_token.to_list()
|
||||
).first.data:
|
||||
access_token.userUUID = redis_object.get("user_uu_id")
|
||||
if redis_object.get("user_type") == 1:
|
||||
if not redis_object.get("selected_company", None):
|
||||
redis_object["selected_company"] = None
|
||||
return EmployeeTokenObject(**redis_object)
|
||||
elif redis_object.get("user_type") == 2:
|
||||
if not redis_object.get("selected_occupant", None):
|
||||
redis_object["selected_occupant"] = None
|
||||
return OccupantTokenObject(**redis_object)
|
||||
raise HTTPExceptionApi(
|
||||
error_code="",
|
||||
lang="en",
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def get_object_via_user_uu_id(cls, user_id: str) -> Union[EmployeeTokenObject, OccupantTokenObject]:
|
||||
"""Get access token from user uuid."""
|
||||
access_token = AccessToken(
|
||||
accessToken="",
|
||||
userUUID=user_id,
|
||||
)
|
||||
if redis_object := RedisActions.get_json(
|
||||
list_keys=access_token.to_list()
|
||||
).first.data:
|
||||
access_token.userUUID = redis_object.get("user_uu_id")
|
||||
if redis_object.get("user_type") == 1:
|
||||
if not redis_object.get("selected_company", None):
|
||||
redis_object["selected_company"] = None
|
||||
return EmployeeTokenObject(**redis_object)
|
||||
elif redis_object.get("user_type") == 2:
|
||||
if not redis_object.get("selected_occupant", None):
|
||||
redis_object["selected_occupant"] = None
|
||||
return OccupantTokenObject(**redis_object)
|
||||
raise HTTPExceptionApi(
|
||||
error_code="",
|
||||
lang="en",
|
||||
)
|
||||
Reference in New Issue
Block a user