o
     eH                     @   sN  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 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 dej"Z#G dd dej$Z%G dd de%Z&G dd de%Z'G dd dej$Z(G dd dej$Z)G dd dej$Z*G dd dej$Z+dS )    )AnyDictOptionalTypeTypeVar)settings)authenticateget_user_model)AbstractBaseUserupdate_last_login)gettext_lazy)
exceptionsserializers)ValidationError   )	TokenUser)api_settings)RefreshTokenSlidingTokenTokenUntypedTokenAuthUser)BlacklistedTokenc                       s   e Zd Zd fddZ  ZS )PasswordFieldreturnNc                    s6   | di  d|d d< d|d< t j|i | d S )Nstylepassword
input_typeT
write_only)
setdefaultsuper__init__selfargskwargs	__class__ W/var/www/html/venv/lib/python3.10/site-packages/rest_framework_simplejwt/serializers.pyr!      s   zPasswordField.__init__r   N)__name__
__module____qualname__r!   __classcell__r(   r(   r&   r)   r      s    r   c                       s   e Zd ZU e jZdZeee	  e
d< dediZd fddZdeeef deeef fd	d
Zedede	fddZ  ZS )TokenObtainSerializerNtoken_classno_active_accountz2No active account found with the given credentialsr   c                    s6   t  j|i | tjdd| j| j< t | jd< d S )NTr   r   )r    r!   r   	CharFieldfieldsusername_fieldr   r"   r&   r(   r)   r!   &   s   zTokenObtainSerializer.__init__attrsc                 C   sp   | j || j  d|d i}z	| jd |d< W n	 ty   Y nw tdi || _t| js6t| j	d di S )Nr   requestr1   r(   )
r5   contextKeyErrorr   userr   USER_AUTHENTICATION_RULEr   AuthenticationFailederror_messages)r#   r6   authenticate_kwargsr(   r(   r)   validate,   s   zTokenObtainSerializer.validater:   c                 C   s   | j |S )N)r0   for_user)clsr:   r(   r(   r)   	get_token@   s   zTokenObtainSerializer.get_tokenr*   )r+   r,   r-   r	   USERNAME_FIELDr5   r0   r   r   r   __annotations___default_error_messagesr!   r   strr   r?   classmethodr   rB   r.   r(   r(   r&   r)   r/      s   
 "r/   c                       :   e Zd ZeZdeeef deeef f fddZ  Z	S )TokenObtainPairSerializerr6   r   c                    sH   t  |}| | j}t||d< t|j|d< tjr"td | j |S Nrefreshaccess)	r    r?   rB   r:   rG   access_tokenr   UPDATE_LAST_LOGINr   )r#   r6   datarL   r&   r(   r)   r?   H   s   z"TokenObtainPairSerializer.validate)
r+   r,   r-   r   r0   r   rG   r   r?   r.   r(   r(   r&   r)   rJ   E       .rJ   c                       rI   )TokenObtainSlidingSerializerr6   r   c                    s:   t  |}| | j}t||d< tjrtd | j |S Ntoken)r    r?   rB   r:   rG   r   rO   r   )r#   r6   rP   rT   r&   r(   r)   r?   Y   s   z%TokenObtainSlidingSerializer.validate)
r+   r,   r-   r   r0   r   rG   r   r?   r.   r(   r(   r&   r)   rR   V   rQ   rR   c                   @   sF   e Zd Ze ZejddZeZde	e
ef de	e
e
f fddZdS )TokenRefreshSerializerT)	read_onlyr6   r   c                 C   sp   |  |d }dt|ji}tjr6tjr$z|  W n	 ty#   Y nw |  |	  |
  t||d< |S rK   )r0   rG   rN   r   ROTATE_REFRESH_TOKENSBLACKLIST_AFTER_ROTATION	blacklistAttributeErrorset_jtiset_expset_iat)r#   r6   rL   rP   r(   r(   r)   r?   k   s   zTokenRefreshSerializer.validateN)r+   r,   r-   r   r3   rL   rM   r   r0   r   rG   r   r?   r(   r(   r(   r)   rU   f   s
    &rU   c                   @   s:   e Zd Ze ZeZdee	e
f dee	e	f fddZdS )TokenRefreshSlidingSerializerr6   r   c                 C   s6   |  |d }|tj |  |  dt|iS rS   )r0   	check_expr   SLIDING_TOKEN_REFRESH_EXP_CLAIMr\   r]   rG   )r#   r6   rT   r(   r(   r)   r?      s
   z&TokenRefreshSlidingSerializer.validateN)r+   r,   r-   r   r3   rT   r   r0   r   rG   r   r?   r(   r(   r(   r)   r^      s    &r^   c                   @   s:   e Zd ZejddZdeedf deeef fddZ	dS )TokenVerifySerializerTr2   r6   Nr   c                 C   sF   t |d }tjr!dtjv r!|tj}tjj	|d
 r!tdi S )NrT   z(rest_framework_simplejwt.token_blacklist)
token__jtizToken is blacklisted)r   r   rX   r   INSTALLED_APPSget	JTI_CLAIMr   objectsfilterexistsr   )r#   r6   rT   jtir(   r(   r)   r?      s   
zTokenVerifySerializer.validate)
r+   r,   r-   r   r3   rT   r   rG   r   r?   r(   r(   r(   r)   ra      s    &ra   c                   @   s>   e Zd ZejddZeZdee	e
f dee
e
f fddZdS )TokenBlacklistSerializerTr2   r6   r   c                 C   s2   |  |d }z|  W i S  ty   Y i S w )NrL   )r0   rY   rZ   )r#   r6   rL   r(   r(   r)   r?      s   
z!TokenBlacklistSerializer.validateN)r+   r,   r-   r   r3   rL   r   r0   r   rG   r   r?   r(   r(   r(   r)   rj      s    &rj   N),typingr   r   r   r   r   django.confr   django.contrib.authr   r	   django.contrib.auth.modelsr
   r   django.utils.translationr   rE   rest_frameworkr   r   rest_framework.exceptionsr   modelsr   r   tokensr   r   r   r   r   rX   token_blacklist.modelsr   r3   r   
Serializerr/   rJ   rR   rU   r^   ra   rj   r(   r(   r(   r)   <module>   s*    
'