a
    xd                     @   s  d dl mZmZ d dl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mZmZ ejrvd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 )    )authenticateget_user_model)update_last_login)gettext_lazy)
exceptionsserializers)ValidationError   )api_settings)RefreshTokenSlidingTokenUntypedToken)BlacklistedTokenc                       s   e Zd Z fddZ  ZS )PasswordFieldc                    s6   | di  d|d d< d|d< t j|i | d S )NstylepasswordZ
input_typeTZ
write_only)
setdefaultsuper__init__selfargskwargs	__class__ \/var/www/html/Ranjet/env/lib/python3.9/site-packages/rest_framework_simplejwt/serializers.pyr      s    zPasswordField.__init__)__name__
__module____qualname__r   __classcell__r   r   r   r   r      s   r   c                       sD   e Zd Ze jZdediZ fddZdd Z	e
dd Z  ZS )	TokenObtainSerializerno_active_accountz2No active account found with the given credentialsc                    s2   t  j|i | t | j| j< t | jd< d S )Nr   )r   r   r   	CharFieldfieldsusername_fieldr   r   r   r   r   r      s    zTokenObtainSerializer.__init__c                 C   sp   | j || j  d|d i}z| jd |d< W n ty<   Y n0 tf i || _t| jslt| j	d di S )Nr   requestr"   )
r%   contextKeyErrorr   userr
   ZUSER_AUTHENTICATION_RULEr   ZAuthenticationFailedZerror_messages)r   attrsZauthenticate_kwargsr   r   r   validate%   s    zTokenObtainSerializer.validatec                 C   s   t dd S )NzHMust implement `get_token` method for `TokenObtainSerializer` subclasses)NotImplementedErrorclsr)   r   r   r   	get_token9   s    zTokenObtainSerializer.get_token)r   r   r   r   ZUSERNAME_FIELDr%   _Zdefault_error_messagesr   r+   classmethodr/   r    r   r   r   r   r!      s   r!   c                       s(   e Zd Zedd Z fddZ  ZS )TokenObtainPairSerializerc                 C   s
   t |S N)r   for_userr-   r   r   r   r/   ?   s    z#TokenObtainPairSerializer.get_tokenc                    sH   t  |}| | j}t||d< t|j|d< tjrDtd | j |S Nrefreshaccess)	r   r+   r/   r)   straccess_tokenr
   UPDATE_LAST_LOGINr   )r   r*   datar6   r   r   r   r+   C   s    z"TokenObtainPairSerializer.validater   r   r   r1   r/   r+   r    r   r   r   r   r2   >   s   
r2   c                       s(   e Zd Zedd Z fddZ  ZS )TokenObtainSlidingSerializerc                 C   s
   t |S r3   )r   r4   r-   r   r   r   r/   R   s    z&TokenObtainSlidingSerializer.get_tokenc                    s:   t  |}| | j}t||d< tjr6td | j |S Ntoken)r   r+   r/   r)   r8   r
   r:   r   )r   r*   r;   r?   r   r   r   r+   V   s    z%TokenObtainSlidingSerializer.validater<   r   r   r   r   r=   Q   s   
r=   c                   @   s(   e Zd Ze ZejddZdd ZdS )TokenRefreshSerializerT)Z	read_onlyc                 C   sn   t |d }dt|ji}tjrjtjrFz|  W n tyD   Y n0 |  |	  |
  t||d< |S r5   )r   r8   r9   r
   ZROTATE_REFRESH_TOKENSBLACKLIST_AFTER_ROTATION	blacklistAttributeErrorZset_jtiset_expset_iat)r   r*   r6   r;   r   r   r   r+   g   s    zTokenRefreshSerializer.validateN)r   r   r   r   r#   r6   r7   r+   r   r   r   r   r@   c   s   r@   c                   @   s   e Zd Ze Zdd ZdS )TokenRefreshSlidingSerializerc                 C   s4   t |d }|tj |  |  dt|iS r>   )r   Z	check_expr
   ZSLIDING_TOKEN_REFRESH_EXP_CLAIMrD   rE   r8   )r   r*   r?   r   r   r   r+      s
    z&TokenRefreshSlidingSerializer.validateNr   r   r   r   r#   r?   r+   r   r   r   r   rF      s   rF   c                   @   s   e Zd Ze Zdd ZdS )TokenVerifySerializerc                 C   s<   t |d }tjr8|tj}tjj|d r8t	di S )Nr?   )Z
token__jtizToken is blacklisted)
r   r
   rA   getZ	JTI_CLAIMr   Zobjectsfilterexistsr   )r   r*   r?   Zjtir   r   r   r+      s    zTokenVerifySerializer.validateNrG   r   r   r   r   rH      s   rH   c                   @   s   e Zd Ze Zdd ZdS )TokenBlacklistSerializerc                 C   s0   t |d }z|  W n ty*   Y n0 i S )Nr6   )r   rB   rC   )r   r*   r6   r   r   r   r+      s    z!TokenBlacklistSerializer.validateN)r   r   r   r   r#   r6   r+   r   r   r   r   rL      s   rL   N) Zdjango.contrib.authr   r   Zdjango.contrib.auth.modelsr   Zdjango.utils.translationr   r0   Zrest_frameworkr   r   Zrest_framework.exceptionsr   settingsr
   tokensr   r   r   rA   Ztoken_blacklist.modelsr   r#   r   
Serializerr!   r2   r=   r@   rF   rH   rL   r   r   r   r   <module>   s    
&