
    Vwg                        d dl mZmZmZmZmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZ d dlmZ d dlmZmZ d dlmZmZ dd	lmZ dd
lmZ ddlmZmZmZmZ  edee      Zej@                  rddl!m"Z"  G d dejF                        Z$ G d dejJ                        Z& G d de&      Z' G d de&      Z( G d dejJ                        Z) G d dejJ                        Z* G d dejJ                        Z+ G d dejJ                        Z,y)    )AnyDictOptionalTypeTypeVar)settings)authenticateget_user_model)AbstractBaseUserupdate_last_login)gettext_lazy)
exceptionsserializers)AuthenticationFailedValidationError   )	TokenUser)api_settings)RefreshTokenSlidingTokenTokenUntypedTokenAuthUser)BlacklistedTokenc                         e Zd Zd fdZ xZS )PasswordFieldc                 b    |j                  di        d|d   d<   d|d<   t        |   |i | y )Nstylepassword
input_typeT
write_only)
setdefaultsuper__init__selfargskwargs	__class__s      [/var/www/horilla/myenv/lib/python3.12/site-packages/rest_framework_simplejwt/serializers.pyr$   zPasswordField.__init__   s=    '2&(2w%#|$)&)    returnN)__name__
__module____qualname__r$   __classcell__r)   s   @r*   r   r      s    * *r+   r   c                        e Zd ZU  e       j                  ZdZeee	      e
d<   d ed      iZd fdZdeeef   deeef   fdZed	ede	fd
       Z xZS )TokenObtainSerializerNtoken_classno_active_accountz2No active account found with the given credentialsr-   c                     t        |   |i | t        j                  d      | j                  | j
                  <   t               | j                  d<   y )NTr!   r   )r#   r$   r   	CharFieldfieldsusername_fieldr   r%   s      r*   r$   zTokenObtainSerializer.__init__&   sD    $)&)+6+@+@D+QD''("//Jr+   attrsc                 .   | j                   || j                      d|d   i}	 | j                  d   |d<   t        di || _        t        j                  | j                        s#t        j                  | j                  d   d      i S # t        $ r Y _w xY w)Nr   requestr6    )
r;   contextKeyErrorr	   userr   USER_AUTHENTICATION_RULEr   r   error_messages)r&   r<   authenticate_kwargss      r*   validatezTokenObtainSerializer.validate,   s    t':':!;j)
	-1\\)-D	* !7#67	44TYY?11##$78# 
 	  		s   B 	BBrB   c                 8    | j                   j                  |      S )N)r5   for_user)clsrB   s     r*   	get_tokenzTokenObtainSerializer.get_token@   s    ''--r+   r,   )r.   r/   r0   r
   USERNAME_FIELDr;   r5   r   r   r   __annotations___default_error_messagesr$   r   strr   rF   classmethodr   rJ   r1   r2   s   @r*   r4   r4      s    #%44N)-K$u+&- 	QST2d38n c3h ( .X .% . .r+   r4   c                   @     e Zd ZeZdeeef   deeef   f fdZ xZ	S )TokenObtainPairSerializerr<   r-   c                     t         |   |      }| j                  | j                        }t	        |      |d<   t	        |j
                        |d<   t        j                  rt        d | j                         |S )Nrefreshaccess)	r#   rF   rJ   rB   rO   access_tokenr   UPDATE_LAST_LOGINr   )r&   r<   datarT   r)   s       r*   rF   z"TokenObtainPairSerializer.validateH   sa    w&..+g,YW112X))dDII.r+   )
r.   r/   r0   r   r5   r   rO   r   rF   r1   r2   s   @r*   rR   rR   E   s0    Kd38n c3h  r+   rR   c                   @     e Zd ZeZdeeef   deeef   f fdZ xZ	S )TokenObtainSlidingSerializerr<   r-   c                     t         |   |      }| j                  | j                        }t	        |      |d<   t
        j                  rt        d | j                         |S Ntoken)r#   rF   rJ   rB   rO   r   rW   r   )r&   r<   rX   r]   r)   s       r*   rF   z%TokenObtainSlidingSerializer.validateY   sM    w&tyy)E
W))dDII.r+   )
r.   r/   r0   r   r5   r   rO   r   rF   r1   r2   s   @r*   rZ   rZ   V   s0    K
d38n 
c3h 
 
r+   rZ   c                       e Zd Z ej                         Z ej                  d      ZeZd e	d      iZ
deeef   deeef   fdZy)	TokenRefreshSerializerT)	read_onlyr6   z,No active account found for the given token.r<   r-   c                 x   | j                  |d         }|j                  j                  t        j                  d       }|rd t               j                  j                  di t        j                  |ix}r.t        j                  |      st        | j                  d   d      dt        |j                        i}t        j                  r_t        j                  r	 |j                          |j#                          |j%                          |j'                          t        |      |d<   |S # t         $ r Y Kw xY w)NrT   r6   rU   r?   )r5   payloadgetr   USER_ID_CLAIMr
   objectsUSER_ID_FIELDrC   r   rD   rO   rV   ROTATE_REFRESH_TOKENSBLACKLIST_AFTER_ROTATION	blacklistAttributeErrorset_jtiset_expset_iat)r&   r<   rT   user_idrB   rX   s         r*   rF   zTokenRefreshSerializer.validateo   s   ""5#34//%%l&@&@$G0N$,,00 --w7 D   88>*''(;<' 
 #g2234--44%%' OOOOOO!'lDO &  s   D- -	D98D9N)r.   r/   r0   r   r9   rT   rU   r   r5   rM   rN   r   rO   r   rF   r?   r+   r*   r_   r_   f   sa    #k##%G"[""T2FK 	QMN!d38n !c3h !r+   r_   c                   V    e Zd Z ej                         ZeZdee	e
f   dee	e	f   fdZy)TokenRefreshSlidingSerializerr<   r-   c                     | j                  |d         }|j                  t        j                         |j	                          |j                          dt        |      iS r\   )r5   	check_expr   SLIDING_TOKEN_REFRESH_EXP_CLAIMrl   rm   rO   )r&   r<   r]   s      r*   rF   z&TokenRefreshSlidingSerializer.validate   sM      w0 	DDE 	U$$r+   N)r.   r/   r0   r   r9   r]   r   r5   r   rO   r   rF   r?   r+   r*   rp   rp      s:    !K!!#EK%d38n %c3h %r+   rp   c                   V    e Zd Z ej                  d      Zdeedf   deeef   fdZ	y)TokenVerifySerializerTr8   r<   Nr-   c                    t        |d         }t        j                  rjdt        j                  v rX|j                  t        j                        }t        j                  j                  |      j                         rt        d      i S )Nr]   z(rest_framework_simplejwt.token_blacklist)
token__jtizToken is blacklisted)r   r   rh   r   INSTALLED_APPSrc   	JTI_CLAIMr   re   filterexistsr   )r&   r<   r]   jtis       r*   rF   zTokenVerifySerializer.validate   sn    U7^, 11:h>U>UU))L223C''..#.>EEG%&<==	r+   )
r.   r/   r0   r   r9   r]   r   rO   r   rF   r?   r+   r*   ru   ru      s7    !K!!T2Ed39o $sCx. r+   ru   c                   Z    e Zd Z ej                  d      ZeZdee	e
f   dee
e
f   fdZy)TokenBlacklistSerializerTr8   r<   r-   c                 p    | j                  |d         }	 |j                          i S # t        $ r Y i S w xY w)NrT   )r5   ri   rj   )r&   r<   rT   s      r*   rF   z!TokenBlacklistSerializer.validate   sH    ""5#34	 	  			s   ( 	55N)r.   r/   r0   r   r9   rT   r   r5   r   rO   r   rF   r?   r+   r*   r~   r~      s<    #k##t4GKd38n c3h r+   r~   N)-typingr   r   r   r   r   django.confr   django.contrib.authr	   r
   django.contrib.auth.modelsr   r   django.utils.translationr   rM   rest_frameworkr   r   rest_framework.exceptionsr   r   modelsr   r   tokensr   r   r   r   r   rh   token_blacklist.modelsr   r9   r   
Serializerr4   rR   rZ   r_   rp   ru   r~   r?   r+   r*   <module>r      s    5 5   < J 6 2 K  " C C:/;((8*K)) *$.K22 $.N 5 "#8  *[33 *Z%K$:$: %$K22 "
{55 
r+   