a
    bd                     @   sv   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T e ZG dd de	ZG d	d
 d
eZdS )    )authenticateget_user_model)update_last_login)F)TokenObtainPairSerializerTokenObtainSerializer)api_settings)*c                   @   s   e Zd Zdd ZdS )UserTokenObtainSerializerc                 C   s   | j || j  d|d i}z| jd |d< W n ty<   Y n0 tf i || _d }| jd u rtjj|| j  d}|d ur|jt	dd d nBd| j_
| j  tjj| jd }|jstt |_|  t| jst|dkr|d j
ndd	d
S i S )Npasswordrequest)usernamefail_to_login   )r   r   userMSG018)Z
fail_logindetail)username_fieldcontextKeyErrorr   r   Userobjectsfilterupdater   r   saveProfilefirstconnect_tokenstruuiduuid4r   USER_AUTHENTICATION_RULElen)selfattrsauthenticate_kwargsget_userprofile r)   J/var/www/html/Ranjet/backend/verify_trusted/users/api/serializers/token.pyvalidate   s0    

z"UserTokenObtainSerializer.validateN)__name__
__module____qualname__r+   r)   r)   r)   r*   r
      s   r
   c                       s<   e Zd Zdd Zeed fddZG dd dZ  ZS )UserTokenObtainPairSerializerc                 C   s   t  }||}t|dkr |S | |j}t||d< t|j|d< |jj|jj|jj	|jj
|jjd|d< tjrtd |j |S )Nr   refreshaccessidnamer   emailis_superuserr   )r
   r+   r#   	get_tokenr   r   access_tokenr3   r4   r   r5   r6   r   UPDATE_LAST_LOGINr   )r$   r%   Z	userTokendatar0   r)   r)   r*   r+   4   s     

z&UserTokenObtainPairSerializer.validater   c                    s2   t  |}|j|j|j|j|jd}||d< |S )Nr2   r   )superr7   r3   r4   r   r5   r6   )clsr   tokenZuser_claims	__class__r)   r*   r7   K   s    z'UserTokenObtainPairSerializer.get_tokenc                   @   s   e Zd ZdddiiZdS )z"UserTokenObtainPairSerializer.Metar5   trim_whitespaceTN)r,   r-   r.   extra_kwargsr)   r)   r)   r*   Meta\   s   rB   )	r,   r-   r.   r+   classmethodr   r7   rB   __classcell__r)   r)   r>   r*   r/   2   s   r/   N)django.contrib.authr   r   django.contrib.auth.modelsr   django.db.modelsr   Z$rest_framework_simplejwt.serializersr   r   Z!rest_framework_simplejwt.settingsr   Zverify_trusted.users.modelsr   r
   r/   r)   r)   r)   r*   <module>   s   $