o
    TiH                     @   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passwordZ
input_typeT
write_only)
setdefaultsuper__init__selfargskwargs	__class__ d/var/www/html/evchargy.com/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   requestr0   r'   )
r4   contextKeyErrorr   userr   ZUSER_AUTHENTICATION_RULEr   ZAuthenticationFailedZerror_messages)r"   r5   Zauthenticate_kwargsr'   r'   r(   validate,   s   zTokenObtainSerializer.validater9   c                 C   s   | j |S )N)r/   Zfor_user)clsr9   r'   r'   r(   	get_token@   s   zTokenObtainSerializer.get_tokenr)   )r*   r+   r,   r	   ZUSERNAME_FIELDr4   r/   r   r   r   __annotations___Zdefault_error_messagesr    r   strr   r:   classmethodr   r<   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 )TokenObtainPairSerializerr5   r   c                    sH   t  |}| | j}t||d< t|j|d< tjr"td | j |S Nrefreshaccess)	r   r:   r<   r9   r?   access_tokenr   UPDATE_LAST_LOGINr   )r"   r5   datarD   r%   r'   r(   r:   H   s   z"TokenObtainPairSerializer.validate)
r*   r+   r,   r   r/   r   r?   r   r:   r-   r'   r'   r%   r(   rB   E       .rB   c                       rA   )TokenObtainSlidingSerializerr5   r   c                    s:   t  |}| | j}t||d< tjrtd | j |S Ntoken)r   r:   r<   r9   r?   r   rG   r   )r"   r5   rH   rL   r%   r'   r(   r:   Y   s   z%TokenObtainSlidingSerializer.validate)
r*   r+   r,   r   r/   r   r?   r   r:   r-   r'   r'   r%   r(   rJ   V   rI   rJ   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)Z	read_onlyr5   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 rC   )r/   r?   rF   r   ZROTATE_REFRESH_TOKENSBLACKLIST_AFTER_ROTATION	blacklistAttributeErrorZset_jtiset_expset_iat)r"   r5   rD   rH   r'   r'   r(   r:   k   s   zTokenRefreshSerializer.validateN)r*   r+   r,   r   r2   rD   rE   r   r/   r   r?   r   r:   r'   r'   r'   r(   rM   f   s
    &rM   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 )TokenRefreshSlidingSerializerr5   r   c                 C   s6   |  |d }|tj |  |  dt|iS rK   )r/   Z	check_expr   ZSLIDING_TOKEN_REFRESH_EXP_CLAIMrQ   rR   r?   )r"   r5   rL   r'   r'   r(   r:      s
   z&TokenRefreshSlidingSerializer.validateN)r*   r+   r,   r   r2   rL   r   r/   r   r?   r   r:   r'   r'   r'   r(   rS      s    &rS   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 )TokenVerifySerializerTr1   r5   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 )NrL   z(rest_framework_simplejwt.token_blacklist)Z
token__jtizToken is blacklisted)r   r   rN   r   ZINSTALLED_APPSgetZ	JTI_CLAIMr   objectsfilterexistsr   )r"   r5   rL   Zjtir'   r'   r(   r:      s   
zTokenVerifySerializer.validate)
r*   r+   r,   r   r2   rL   r   r?   r   r:   r'   r'   r'   r(   rT      s    &rT   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 )TokenBlacklistSerializerTr1   r5   r   c                 C   s2   |  |d }z|  W i S  ty   Y i S w )NrD   )r/   rO   rP   )r"   r5   rD   r'   r'   r(   r:      s   
z!TokenBlacklistSerializer.validateN)r*   r+   r,   r   r2   rD   r   r/   r   r?   r   r:   r'   r'   r'   r(   rY      s    &rY   N),typingr   r   r   r   r   Zdjango.confr   Zdjango.contrib.authr   r	   Zdjango.contrib.auth.modelsr
   r   Zdjango.utils.translationr   r>   Zrest_frameworkr   r   Zrest_framework.exceptionsr   modelsr   r   tokensr   r   r   r   r   rN   Ztoken_blacklist.modelsr   r2   r   
Serializerr.   rB   rJ   rM   rS   rT   rY   r'   r'   r'   r(   <module>   s*    
'