o
    ã¨;i³  ã                   @   sJ  d dl 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„ 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ÚOptionalÚ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                       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__© úd/var/www/html/premium_crap/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   ÚUSER_AUTHENTICATION_RULEr   r   Úerror_messages)r"   r5   Úauthenticate_kwargsr'   r'   r(   Úvalidate,   s   þÿþzTokenObtainSerializer.validater9   c                 C   s   | j  |¡S )N)r/   Úfor_user)Úclsr9   r'   r'   r(   Ú	get_token@   s   zTokenObtainSerializer.get_tokenr)   )r*   r+   r,   r   ÚUSERNAME_FIELDr4   r/   r   Útyper   Ú__annotations__Ú_Údefault_error_messagesr    ÚdictÚ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   rG   Úaccess_tokenr   ÚUPDATE_LAST_LOGINr	   )r"   r5   ÚdatarK   r%   r'   r(   r=   H   s   z"TokenObtainPairSerializer.validate)
r*   r+   r,   r   r/   rF   rG   r   r=   r-   r'   r'   r%   r(   rJ   E   ó    .rJ   c                       rI   )ÚTokenObtainSlidingSerializerr5   r   c                    s:   t ƒ  |¡}|  | j¡}t|ƒ|d< tjrtd | jƒ |S ©NÚtoken)r   r=   r@   r9   rG   r   rN   r	   )r"   r5   rO   rS   r%   r'   r(   r=   Y   s   z%TokenObtainSlidingSerializer.validate)
r*   r+   r,   r   r/   rF   rG   r   r=   r-   r'   r'   r%   r(   rQ   V   rP   rQ   c                   @   sR   e Zd Ze ¡ Zejdd�ZeZde	dƒiZ
deeef deeef fdd„Zd	S )
ÚTokenRefreshSerializerT)Ú	read_onlyr0   z,No active account found for the given token.r5   r   c                 C   sÄ   |   |d ¡}|j tjd ¡}|r-tƒ jjdi tj|i¤Ž }r-t |¡s-t	| j
d dƒ‚dt|jƒi}tjr`tjrJz| ¡  W n	 tyI   Y nw | ¡  | ¡  | ¡  | ¡  t|ƒ|d< |S )NrK   r0   rL   r'   )r/   ÚpayloadÚgetr   ÚUSER_ID_CLAIMr   ÚobjectsÚUSER_ID_FIELDr:   r   r;   rG   rM   ÚROTATE_REFRESH_TOKENSÚBLACKLIST_AFTER_ROTATIONÚ	blacklistÚAttributeErrorÚset_jtiÚset_expÚset_iatÚoutstand)r"   r5   rK   Úuser_idr9   rO   r'   r'   r(   r=   o   s4   ÿÿ
þýzTokenRefreshSerializer.validateN)r*   r+   r,   r   r2   rK   rL   r   r/   rD   rE   rF   rG   r   r=   r'   r'   r'   r(   rT   f   s    ÿ&rT   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 rR   )r/   Ú	check_expr   ÚSLIDING_TOKEN_REFRESH_EXP_CLAIMr`   ra   rG   )r"   r5   rS   r'   r'   r(   r=   ˜   s
   z&TokenRefreshSlidingSerializer.validateN)r*   r+   r,   r   r2   rS   r   r/   rF   rG   r   r=   r'   r'   r'   r(   rd   ”   s    &rd   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   sJ   t |d ƒ}tjr#dtjv r#| tj¡}tjj	|d� 
¡ r#ttdƒƒ‚i S )NrS   z(rest_framework_simplejwt.token_blacklist)Ú
token__jtizToken is blacklisted)r   r   r\   r   ÚINSTALLED_APPSrW   Ú	JTI_CLAIMr   rY   ÚfilterÚexistsr   rD   )r"   r5   rS   Újtir'   r'   r(   r=   ©   s   ÿ
zTokenVerifySerializer.validate)
r*   r+   r,   r   r2   rS   rF   rG   r   r=   r'   r'   r'   r(   rg   ¦   s    &rg   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 )NrK   )r/   r]   r^   )r"   r5   rK   r'   r'   r(   r=   »   s   
þþz!TokenBlacklistSerializer.validateN)r*   r+   r,   r   r2   rK   r   r/   rF   rG   r   r=   r'   r'   r'   r(   rn   ·   s    &rn   N)+Útypingr   r   r   Údjango.confr   Údjango.contrib.authr   r   Údjango.contrib.auth.modelsr   r	   Údjango.utils.translationr
   rD   Úrest_frameworkr   r   Úrest_framework.exceptionsr   r   Úmodelsr   r   Útokensr   r   r   r   r   r\   Útoken_blacklist.modelsr   r2   r   Ú
Serializerr.   rJ   rQ   rT   rd   rg   rn   r'   r'   r'   r(   Ú<module>   s*    
'.