Advertisement
Mochinov

Untitled

Jan 13th, 2023 (edited)
888
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.16 KB | None | 0 0
  1. class RequestIdentificationMixin:
  2.     """Mixin class for detect user request"""
  3.  
  4.     @classmethod
  5.     def protected_request(cls, async_function):
  6.  
  7.         @wraps
  8.         async def wrapper(*args, **kwargs):
  9.             self, request = args
  10.             self.user = None
  11.             self.session = config.async_session()
  12.             headers = request.headers
  13.  
  14.             try:
  15.  
  16.                 if config.DEBUG:
  17.                     is_valid, errors, self.user = await User.get_object_from_field(
  18.                         select_value=1,
  19.                         session=self.session,
  20.                     )
  21.                     if is_valid:
  22.                         return await async_function(*args, **kwargs)
  23.  
  24.                     return JSONResponse(
  25.                         content=errors,
  26.                         status_code=HTTP_404_NOT_FOUND,
  27.                     )
  28.  
  29.                 if ("platon-user-token" and "platon-user-id") in headers:
  30.                     if (token := headers["platon-user-token"]) and (
  31.                         user_id := headers["platon-user-id"]
  32.                     ):
  33.                         valid_request = await User.objects.user_authorization_check(
  34.                             token=token,
  35.                             user_id=user_id,
  36.                         )
  37.                         if valid_request:
  38.                             (
  39.                                 is_valid,
  40.                                 errors,
  41.                                 self.user,
  42.                             ) = await User.get_object_from_field(
  43.                                 select_value=user_id,
  44.                                 session=self.session,
  45.                             )
  46.                         if is_valid:
  47.                             return await async_function(*args, **kwargs)
  48.  
  49.                         return JSONResponse(
  50.                             content=errors,
  51.                             status_code=HTTP_404_NOT_FOUND,
  52.                         )
  53.  
  54.                 return JSONResponse(HTTP_401_UNAUTHORIZED)
  55.             except KeyError as error:
  56.                 return JSONResponse(HTTP_401_UNAUTHORIZED)
  57.  
  58.         return wrapper
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement