
    b6i                         d dl mZmZmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZmZ d d	lmZmZmZmZmZmZmZ  ed
      Z e       Z ee       ee      fdededefdZdefdZ y)    )DependsHTTPExceptionstatus)OAuth2PasswordBearer)Sessionselect)JWTError)decode_token)get_settings)get_session)UserRole)ERR_INVALID_TOKENERR_NOT_VALID_CREDERR_USER_NOT_FOUNDERR_INACTIVE_USERERR_USER_DELETEDERR_FORBIDDEN
ERR_NO_SUBz/api/auth/login)tokenUrltokensessionreturnc                    	 t        |       }|j                  d      dk7  rt        t        j                  t
              |j                  d      }|st        t        j                  t              	 t        t              j                  t        j                  |k(        }|j                  |      j                         }|st        t        j                  t               |j"                  st        t        j$                  t&              |j(                  rt        t        j*                  t,              |S # t        $ r0}t        d|       t        t        j                  t              d }~ww xY w)Ntypeaccessstatus_codedetailsubz	JWTError:)r
   getr   r   HTTP_401_UNAUTHORIZEDr   r   r	   printr   r   r   whereemailexecfirstr   	is_activeHTTP_403_FORBIDDENr   
is_deletedHTTP_410_GONEr   )r   r   payloadr    equsers          >/var/www/html/story-book/Story-Book-python-api/app/api/deps.pyget_current_userr1      s   	au%;;v(*F,H,HQbcckk% F,H,HQ[\\  	t4::,-A<<?  "D(D(DM_``>>(A(AJ[\\(<(<EUVVK  ak1(D(DM_``as   A0D: :	E3+E..E3allowed_rolesc                  >     t        t              fdt        f fd}|S )z]
    Correct FastAPI-compatible role checker.
    Must return a callable, NOT Depends().
    current_userc                 j   K   | j                   vrt        t        j                  t              | S w)Nr   )roler   r   r)   r   )r4   r2   s    r0   role_checkerz#require_roles.<locals>.role_checker2   s6     M1"55$  s   03)r   r1   r   )r2   r7   s   ` r0   require_rolesr8   -   s"    
 188H0I       N)!fastapir   r   r   fastapi.securityr   sqlmodelr   r   joser	   app.utils.tokensr
   app.core.configr   app.db.sessionr   
app.modelsr   r   app.core.constantsr   r   r   r   r   r   r   oauth2_schemesettingsstrr1   r8    r9   r0   <module>rG      sz    2 2 1 $  ) ( & !   %.?@>")-"8WU`Ma C 7 fj .$ r9   