o
    z=gv
                     @   s~   d dl mZ ddlmZ d dlmZ d dlmZ d dlm	Z	 d dl m
Z
 G dd	 d	ejZG d
d deZG dd deZdS )    )serializers   )
AdminTable)RefreshToken)TokenObtainPairSerializer)failed_response)statusc                   @   s"   e Zd ZG dd dZdd ZdS )AdminRegistrationSerializerc                   @   s$   e Zd ZeZg dZdddiiZdS )z AdminRegistrationSerializer.Meta)
first_name	last_nameusernameemailpasswordis_super_adminr   
write_onlyTN)__name__
__module____qualname__r   modelfieldsextra_kwargs r   r   ;/var/www/html/authentication-server/adminapp/serializers.pyMeta	   s
    r   c                 C   s<   | dd}|rtjjdi |}|S tjjdi |}|S )Nr   Fr   )popr   objectscreate_superusercreate_user)selfvalidated_datar   userr   r   r   create   s   z"AdminRegistrationSerializer.createN)r   r   r   r   r!   r   r   r   r   r	      s    r	   c                   @   s$   e Zd Zedd Zedd ZdS )
AdminTokenc                 C   s
   |  dS )Nuser_id)get)r   r   r   r   r       s   
zAdminToken.userc                 C   sH   |  }|j r|jr|jstdtjd|j |d< |j|d< |j|d< |S )Nz)User must have an ID, email, and username)msgcoder#   r   r   )idr   r   r   r   HTTP_404_NOT_FOUND)clsr    tokenr   r   r   for_user   s   


zAdminToken.for_userN)r   r   r   propertyr    classmethodr+   r   r   r   r   r"      s
    
r"   c                   @   sF   e Zd ZejddZejddZejdddZe	dd Z
dd ZdS )	AdminTokenObtainPairSerializerT)required)r/   r   c                 C   s"   t |}|j|d< |j|d< |S )Nr   r   )r"   r+   r   r   )r)   adminr*   r   r   r   	get_token-   s   


z(AdminTokenObtainPairSerializer.get_tokenc              
   C   s   | d}| d}| d}|r|r|stddz
tjj ||d}W n tjy1   tddw ||s<tddz| |}t|t|jd	W S  t	y] } ztd
dd }~ww )Nr   r   r   z4All username, password and email fields are required)r%   )r   r   zInvalid username or passwordzInvalid password)refreshaccesszFailed to generate token)
r$   r   r   r   DoesNotExistcheck_passwordr1   straccess_token	Exception)r   attrsr   r   r   r0   r*   er   r   r   validate4   s*   








z'AdminTokenObtainPairSerializer.validateN)r   r   r   r   	CharFieldr   
EmailFieldr   r   r-   r1   r;   r   r   r   r   r.   (   s    
r.   N)rest_frameworkr   modelsr   rest_framework_simplejwt.tokensr   $rest_framework_simplejwt.serializersr   utils.helperr   r   ModelSerializerr	   r"   r.   r   r   r   r   <module>   s    