U
    h                     @   sz   d dl mZ d dlmZmZ d dlmZ d dlmZ G dd dej	Z
G dd dej	Zd dl mZ G d	d
 d
ej	ZdS )    )serializers)RefreshToken
TokenError)Users)auth_pwd_hashc                   @   s@   e Zd ZejddddidZejdddddd	d
Zdd ZdS )LoginSerializerTzUsername untuk loginexamplejohndoe)required	help_textstylezPassword userpasswordZ	secret123)
input_typer   )r
   
write_onlyr   r   c                 C   s   | d}| d}|r|s*tddiztjdj |d}W n$ tjk
rf   tddiY nX |jt|krtddit	 }|j
|d	< |j|d
< t|dd r|jjnd |d< |j}t|t||j
|jt|dd r|jjnd ddS )Nusrr   detailz"Username dan password wajib diisi.pk_roles)r   zUser tidak ditemukan.zPassword salah.user_idusernameroleidr   r   )refreshaccessuser)getr   ValidationErrorr   objectsselect_relatedDoesNotExistpwdr   r   _pkr   getattrr   r   access_tokenstr)selfattrsr   r   r   r   r#    r'   @D:\Project\agus\mfile_papteng_new\webapp\api\auth\serializers.pyvalidate   s,    



zLoginSerializer.validateN)__name__
__module____qualname__r   	CharFieldr   r   r)   r'   r'   r'   r(   r      s   r   c                   @   s&   e Zd ZejdddidZdd ZdS )CustomTokenRefreshSerializerz1Refresh token untuk mendapatkan access token barur   z'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...)r   r   c                 C   sn   | d}zt|}W n" tk
r8   tddiY nX t|j}|t|| d| d| dddS )	Nr   r   z-Refresh token tidak valid atau sudah expired.r   r   r   r   )r   r   r   )r   r   r   r   r   r$   r#   )r%   r&   refresh_tokenr   r   r'   r'   r(   r)   <   s    

z%CustomTokenRefreshSerializer.validateN)r*   r+   r,   r   r-   r   r)   r'   r'   r'   r(   r.   6   s
   r.   c                   @   s   e Zd ZdZdd ZdS )LogoutSerializerz2Serializer kosong karena logout hanya hapus cookiec                 K   s&   | d}|r"|d |d d S )Nresponser#   r/   )r   delete_cookie)r%   kwargsr1   r'   r'   r(   saveS   s    

zLogoutSerializer.saveN)r*   r+   r,   __doc__r4   r'   r'   r'   r(   r0   Q   s   r0   N)rest_frameworkr   Zrest_framework_simplejwt.tokensr   r   webapp.models.masterr   Zwebapp.authr   
Serializerr   r.   r0   r'   r'   r'   r(   <module>   s   /