§
    ›ã h¯  ã                   ó”   — d dl Z d dlZd dl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 dd„Zd	„ Zd
„ Zd„ Zd„ Zd„ Zdd„ZdS )é    N)Úget_user_model)Útimegm)Údatetime)Úget_username)Úget_username_field)Úapi_settingsc                 óð   — t           j        r_t          ¦   «         }|j                             |                      d¦  «        ¬¦  «        }t          t          j        |¦  «        ¦  «        }|S t           j        S )zÙ
    For enhanced security you may want to use a secret key based on user.

    This way you have an option to logout only this user if:
        - token is compromised
        - password is changed
        - etc.
    Úuser_id)Úpk)r   ÚJWT_GET_USER_SECRET_KEYr   ÚobjectsÚgetÚstrÚJWT_SECRET_KEY)ÚpayloadÚUserÚuserÚkeys       úT/var/www/html/Sam_Eipo/venv/lib/python3.11/site-packages/rest_framework_jwt/utils.pyÚjwt_get_secret_keyr      sd   € õ Ô+ð ÝÑÔˆØŒ|×Ò 7§;¢;¨yÑ#9Ô#9ÐÑ:Ô:ˆÝ•,Ô6°tÑ<Ô<Ñ=Ô=ˆØˆ
ÝÔ&Ð&ó    c                 ó^  — t          ¦   «         }t          | ¦  «        }t          j        dt          ¦  «         | j        |t          j        ¦   «         t          j	        z   dœ}t          | d¦  «        r
| j        |d<   t          | j        t          j        ¦  «        rt          | j        ¦  «        |d<   |||<   t          j        r5t#          t          j        ¦   «                              ¦   «         ¦  «        |d<   t          j        t          j        |d<   t          j        t          j        |d<   |S )NzKThe following fields will be removed in the future: `email` and `user_id`. )r
   ÚusernameÚexpÚemailr
   Úorig_iatÚaudÚiss)r   r   ÚwarningsÚwarnÚDeprecationWarningr   r   Úutcnowr   ÚJWT_EXPIRATION_DELTAÚhasattrr   Ú
isinstanceÚuuidÚUUIDr   ÚJWT_ALLOW_REFRESHr   ÚutctimetupleÚJWT_AUDIENCEÚ
JWT_ISSUER)r   Úusername_fieldr   r   s       r   Újwt_payload_handlerr-       s  € Ý'Ñ)Ô)€NÝ˜DÑ!Ô!€Hå„Mð	"åñô ð ð ”7ØÝŒÑ Ô ¥<Ô#DÑDðð €Gõ
 ˆtWÑÔð &Øœ:ˆÑÝ$”'4œ9Ñ%Ô%ð *Ý  ¤™\œ\ˆ	Ñà&€GˆNÑõ Ô%ð 
Ý$ÝŒOÑÔ×*Ò*Ñ,Ô,ñ
ô 
ˆ
Ñõ Ô Ð,Ý%Ô2ˆ‰åÔÐ*Ý%Ô0ˆ‰à€Nr   c                 ó`   — t          j        dt          ¦  «         |                      d¦  «        S )zO
    Override this function if user_id is formatted differently in payload
    z\The following will be removed in the future. Use `JWT_PAYLOAD_GET_USERNAME_HANDLER` instead.r
   )r   r    r!   r   ©r   s    r   Ú$jwt_get_user_id_from_payload_handlerr0   F   s4   € õ „Mð	:åñô ð ð ;Š;yÑ!Ô!Ð!r   c                 ó,   — |                       d¦  «        S )zP
    Override this function if username is formatted differently in payload
    r   )r   r/   s    r   Ú%jwt_get_username_from_payload_handlerr2   S   s   € ð ;Š;zÑ"Ô"Ð"r   c                 óž   — t           j        pt          | ¦  «        }t          j        | |t           j        ¦  «                             d¦  «        S )Nzutf-8)r   ÚJWT_PRIVATE_KEYr   ÚjwtÚencodeÚJWT_ALGORITHMÚdecode)r   r   s     r   Újwt_encode_handlerr9   Z   sE   € Ý
Ô
&Ð
EÕ*<¸WÑ*EÔ*E€CÝŒ:ØØÝÔ"ñô ÷ ‚fˆWo„oð	r   c           
      ó  — dt           j        i}t          j        | d d¦  «        }t	          |¦  «        }t          j        | t           j        p|t           j        |t           j        t           j        t           j	        t           j
        g¬¦  «        S )NÚ
verify_expF)ÚoptionsÚleewayÚaudienceÚissuerÚ
algorithms)r   ÚJWT_VERIFY_EXPIRATIONr5   r8   r   ÚJWT_PUBLIC_KEYÚ
JWT_VERIFYÚ
JWT_LEEWAYr*   r+   r7   )Útokenr<   Úunverified_payloadÚ
secret_keys       r   Újwt_decode_handlerrH   c   s€   € à•lÔ8ð€Gõ œ E¨4°Ñ7Ô7ÐÝ#Ð$6Ñ7Ô7€JÝŒ:ØÝÔ#Ð1 zÝÔØÝÔ&ÝÔ*ÝÔ&Ý Ô.Ð/ð	ñ 	ô 	ð 	r   c                 ó
   — d| iS )aŒ  
    Returns the response data for both the login and refresh views.
    Override to return a custom response such as including the
    serialized representation of the User.

    Example:

    def jwt_response_payload_handler(token, user=None, request=None):
        return {
            'token': token,
            'user': UserSerializer(user, context={'request': request}).data
        }

    rE   © )rE   r   Úrequests      r   Újwt_response_payload_handlerrL   v   s   € ð  	ðð r   )N)NN)r5   r&   r   Údjango.contrib.authr   Úcalendarr   r   Úrest_framework_jwt.compatr   r   Úrest_framework_jwt.settingsr   r   r-   r0   r2   r9   rH   rL   rJ   r   r   ú<module>rQ      s
  ðØ 
€
€
€
Ø €€€Ø €€€à .Ð .Ð .Ð .Ð .Ð .à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4ð'ð 'ð 'ð 'ð"#ð #ð #ðL
"ð 
"ð 
"ð#ð #ð #ðð ð ðð ð ð&ð ð ð ð ð r   