§
    øÁiß  ã                   óÄ   — d dl mZ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 d dlmZ  ed¬	¦  «        Z ee¦  «         ee¦  «        fd
ededefd„Zdefd„ZdS )é    )ÚDependsÚHTTPExceptionÚstatus)ÚOAuth2PasswordBearer)ÚAsyncSession)Úselect)Úget_db)ÚUser)Údecode_tokenz/api/v1/auth/login)ÚtokenUrlÚtokenÚdbÚreturnc              ƒ   ó´  K  — t          | ¦  «        }|st          t          j        d¬¦  «        ‚t	          |                     dd¦  «        ¦  «        }|                     t          t          ¦  «         	                    t          j
        |k    ¦  «        ¦  «        ƒ d {V —†}|                     ¦   «         }|r|j        st          t          j        d¬¦  «        ‚|S )NzInvalid token©Ústatus_codeÚdetailÚsubr   zUser not found or inactive)r   r   r   ÚHTTP_401_UNAUTHORIZEDÚintÚgetÚexecuter   r
   ÚwhereÚidÚscalar_one_or_noneÚ	is_active)r   r   ÚpayloadÚuser_idÚresultÚusers         ú0/var/www/html/jarvis.com/web/backend/app/deps.pyÚget_current_userr"      sÍ   è è € õ ˜5Ñ!Ô!€GØð ^Ý­Ô(DÈ_Ð]Ñ]Ô]Ð]Ý�'—+’+˜e QÑ'Ô'Ñ(Ô(€GØ—:’:�f¥T™lœl×0Ò0µ´¸GÒ1CÑDÔDÑEÔEÐEÐEÐEÐEÐEÐE€FØ×$Ò$Ñ&Ô&€DØð k�t”~ð kÝ­Ô(DÐMiÐjÑjÔjÐjØ€Kó    Úrolesc                  óX   ‡ — t          t          ¦  «        fdt          dt          fˆ fd„}|S )NÚcurrent_userr   c              “   óT   •K  — | j         ‰vrt          t          j        d¬¦  «        ‚| S )NzInsufficient permissionsr   )Úroler   r   ÚHTTP_403_FORBIDDEN)r&   r$   s    €r!   Úcheckerzrequire_role.<locals>.checker   s2   øè è € ØÔ EÐ)Ð)Ý­FÔ,EÐNhÐiÑiÔiÐiØÐr#   )r   r"   r
   )r$   r*   s   ` r!   Úrequire_roler+      sG   ø€ Ý+2Õ3CÑ+DÔ+Dð ð ¥Dð Íð ð ð ð ð ð ð €Nr#   N)Úfastapir   r   r   Úfastapi.securityr   Úsqlalchemy.ext.asyncior   Ú
sqlalchemyr   Úapp.databaser	   Úapp.models.userr
   Úapp.services.authr   Úoauth2_schemeÚstrr"   r+   © r#   r!   ú<module>r6      s  ðØ 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø /Ð /Ð /Ð /Ð /Ð /Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø *Ð *Ð *Ð *Ð *Ð *à$Ð$Ð.BÐCÑCÔC€ð �˜Ñ'Ô'Ø�w˜v‘”ðð Øðàðð 
ðð ð ð ð˜ð ð ð ð ð ð r#   