§
    t�’j¨  ã                  ó`   — d dl mZ d dlmZmZmZ d dlmZ d dlZd dlm	Z	  G d„ d¦  «        Z
dS )é    )Úannotations)ÚdatetimeÚ	timedeltaÚtimezone)ÚAnyN)ÚHTTPExceptionc                  ó"   — e Zd ZdZd
d„Zdd„Zd	S )ÚJwtTokensMixinz6JWT token creation, claims encoding, and verification.Úuserúdict[str, Any]ÚreturnÚstrc           
     ó®  — t          j        t          j        ¦  «        t	          | j        j        ¬¦  «        z   }t          |d         ¦  «        |d         |d         |d         t          |d         ¦  «        |                     d¦  «        |t          j        t          j        ¦  «        dœ}t          j
        || j        j        | j        j        ¬	¦  «        S )
zBCreate a signed JWT token containing user profile and role claims.)ÚminutesÚidÚemailÚ	full_nameÚroleÚ
company_idÚ
avatar_url)Úsubr   r   r   r   r   ÚexpÚiat)Ú	algorithm)r   Únowr   Úutcr   ÚsettingsÚjwt_access_token_expire_minutesr   ÚgetÚjwtÚencodeÚjwt_secret_keyÚjwt_algorithm)Úselfr   ÚexpireÚpayloads       ú2C:\Projects\DSCons\app\services\auth\jwt_tokens.pyÚcreate_jwt_tokenzJwtTokensMixin.create_jwt_token   s¿   € å”�hœlÑ+Ô+­iØ”MÔAð/
ñ /
ô /
ñ 
ˆõ �t˜D”z‘?”?Ø˜'”]Ø˜kÔ*Ø˜”LÝ˜d <Ô0Ñ1Ô1ØŸ(š( <Ñ0Ô0ØÝ”<¥¤Ñ-Ô-ð	
ð 	
ˆõ ŒzØ�T”]Ô1¸T¼]Ô=Xð
ñ 
ô 
ð 	
ó    Útokenc                óâ   — 	 t          j        || j        j        | j        j        g¬¦  «        S # t           j        $ r t          dd¬¦  «        ‚t           j        $ r t          dd¬¦  «        ‚w xY w)z'Decode and validate a JWT access token.)Ú
algorithmsi‘  uE   PhiÃªn Ä‘Äƒng nháº­p Ä‘Ã£ háº¿t háº¡n. Vui lÃ²ng Ä‘Äƒng nháº­p láº¡i.)Ústatus_codeÚdetailu&   MÃ£ xÃ¡c thá»±c JWT khÃ´ng há»£p lá»‡.)r    Údecoder   r"   r#   ÚExpiredSignatureErrorr   ÚInvalidTokenError)r$   r*   s     r'   Údecode_jwt_tokenzJwtTokensMixin.decode_jwt_token    s£   € ð	bÝ”:ØØ”Ô,Ø œMÔ7Ð8ðñ ô ð øõ
 Ô(ð 	ð 	ð 	ÝØØ^ðñ ô ð õ Ô$ð 	bð 	bð 	bÝ¨CÐ8`ÐaÑaÔaÐað	bøøøs
   ‚+. ®A A.N)r   r   r   r   )r*   r   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r(   r2   © r)   r'   r
   r
   
   sH   € € € € € Ø@Ð@ð
ð 
ð 
ð 
ð&bð bð bð bð bð br)   r
   )Ú
__future__r   r   r   r   Útypingr   r    Úfastapir   r
   r7   r)   r'   ú<module>r;      sž   ðØ "Ð "Ð "Ð "Ð "Ð "à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø Ð Ð Ð Ð Ð à 
€
€
€
Ø !Ð !Ð !Ð !Ð !Ð !ð$bð $bð $bð $bð $bñ $bô $bð $bð $bð $br)   