o
    Ng                     @   s8   d dl mZ d dlmZ d dlmZ G dd deZdS )    )BaseMiddlewareAccessToken)database_sync_to_asyncc                       s0   e Zd Z fddZdd Zedd Z  ZS )JWTAuthMiddlewarec                    s`   |  |}|d kr| |I d H }|r||d< nd|d< |d kr%d|d< t |||I d H S )Nuser_idzInvalid tokenerrorzprovide an auth token)get_token_from_scopeget_user_from_tokensuper__call__)selfscopereceivesendtokenr   	__class__ @/var/www/html/Testing_prj/Navya-Bakers/chatbot/jwt_middleware.pyr      s   

zJWTAuthMiddleware.__call__c                 C   s>   t |dg }|ddd}|dr|dd S d S )Nheaderss   authorization    zutf-8zBearer     )dictgetdecode
startswithsplit)r   r   r   auth_headerr   r   r   r	      s
   
z&JWTAuthMiddleware.get_token_from_scopec                 C   s    z	t |}|d W S    Y d S )Nr   r   )r   r   access_tokenr   r   r   r
   $   s
   
z%JWTAuthMiddleware.get_user_from_token)__name__
__module____qualname__r   r	   r   r
   __classcell__r   r   r   r   r      s
    r   N)channels.middlewarer   rest_framework_simplejwt.tokensr   channels.dbr   r   r   r   r   r   <module>   s    