Ë
    |Ñjy  ã                   ó$  — d dl mZ d dlmZmZmZmZ d dl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efd	„Zddeed
z   ed¬«      f   defd„Zdee ee
«      f   dee ee«      f   defd„Zdee ee
«      f   dee ee«      f   defd„Zy
)é    )Ú	Annotated)ÚDependsÚHeaderÚHTTPExceptionÚstatus)ÚSession)Úget_db)ÚUserÚUserRole)ÚRoleEnum)Údecode_tokenÚreturnc                  ó>   — t        t        j                  dddi¬«      S )NzCould not validate credentialszWWW-AuthenticateÚBearer)Ústatus_codeÚdetailÚheaders)r   r   ÚHTTP_401_UNAUTHORIZED© ó    ú5/var/www/html/kelly/kelly-backend/app/dependencies.pyÚ_credentials_exceptionr      s#   € ÜÜ×0Ñ0Ø/Ø# XÐ.ôð r   NÚauthorizationÚAuthorization)Úaliasc                 ó¦   — | r| j                  «       x}s
t        «       ‚|j                  «       j                  d«      r|dd j                  «       S |S )z‚
    Accepts either:
    - Raw JWT: Authorization: eyJhbGciOiJ...
    - Standard Bearer: Authorization: Bearer eyJhbGciOiJ...
    zbearer é   N)Ústripr   ÚlowerÚ
startswith)r   Úraws     r   Ú	get_tokenr"      sN   € ñ ¨×(;Ñ(;Ó(=Ð!= Ð!=Ü$Ó&Ð&Ø
‡y�yƒ{×Ñ˜iÔ(Ø�1�2ˆw�}‰}‹ÐØ€Jr   ÚdbÚtokenc                 ó  — t        |«      }|�|j                  t        j                  k7  r
t	        «       ‚| j                  t        |j                  «      }|�)|j                  r|j                  t        j                  k7  r
t	        «       ‚|S ©N)
r   Úroler   Úadminr   Úgetr
   ÚsubÚ	is_activer   )r#   r$   ÚpayloadÚusers       r   Úrequire_admin_tokenr.   !   sg   € ô ˜5Ó!€GØ€˜'Ÿ,™,¬(¯.©.Ò8Ü$Ó&Ð&Ø�6‰6”$˜Ÿ™Ó$€DØ€|˜4Ÿ>š>¨T¯Y©Y¼(¿.¹.Ò-HÜ$Ó&Ð&Ø€Kr   c                 ó:  — t        |«      }|�|j                  t        j                  k7  r
t	        «       ‚| j                  t        |j                  «      }|�)|j                  r|j                  t        j                  k7  r
t	        «       ‚ddl
m}  || |d¬«       |S )Nr   )Útouch_user_last_activeT)Úcommit)r   r'   r   r-   r   r)   r
   r*   r+   r   Ú-app.services.member_inactive_followup_servicer0   )r#   r$   r,   r-   r0   s        r   Úrequire_user_tokenr3   .   sv   € ô ˜5Ó!€GØ€˜'Ÿ,™,¬(¯-©-Ò7Ü$Ó&Ð&Ø�6‰6”$˜Ÿ™Ó$€DØ€|˜4Ÿ>š>¨T¯Y©Y¼(¿-¹-Ò-GÜ$Ó&Ð&ÝTá˜2˜t¨DÕ1Ø€Kr   r&   )Útypingr   Úfastapir   r   r   r   Úsqlalchemy.ormr   Úapp.databaser	   Ú
app.modelsr
   r   Úapp.schemasr   Úapp.securityr   r   Ústrr"   r.   r3   r   r   r   Ú<module>r<      sÈ   ðÝ ç :Ó :Ý "å ß %Ý  Ý %ð ó ñ
˜Y s¨T¡z±6ÀÔ3PÐ'PÑQð 
Ð]`ó 
ð
Ø�'™7 6›?Ð*Ñ+ð
à�S™' )Ó,Ð,Ñ-ð
ð 
ó
ðØ�'™7 6›?Ð*Ñ+ðà�S™' )Ó,Ð,Ñ-ðð 
ôr   