B
    ObH                 @   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mZ d dlmZ e Ze
jZe
jZe
jZe
jZG dd	 d	ejZG d
d dejZG dd deZdS )    )get_user_model)gettext_lazy)settings)serializers)api_settings)get_username_fieldPasswordField)Employeec               @   s<   e Zd ZejeddZejedddiddZdd	 Zd
S )AuthTokenSerializerZUsername)labelZPasswordZ
input_typepasswordF)r   ZstyleZtrim_whitespacec             C   s   | d}| d}|r||r|y*tjj |tjd}||r@|}nd }W n tk
r^   d }Y nX |std}tj	|ddntd}tj	|dd||d< |S )	Nusernamer   )emp_code
company_idz+Unable to log in with provided credentials.Zauthorization)codez'Must include "username" and "password".user)
getr	   objectsr   DEFAULT_COMPANY_IDcheck_password	Exception_r   ValidationError)selfattrsr   r   empr   msg r   QG:\easytimepro\master/mysite/staff\api\serializers\staff_auth_token_serializer.pyvalidate   s"    



zAuthTokenSerializer.validateN)	__name__
__module____qualname__r   	CharFieldr   r   r   r   r   r   r   r   r
      s   r
   c               @   s   e Zd Zedd ZdS )
Serializerc             C   s   | j S )N)Zvalidated_data)r   r   r   r   object;   s    zSerializer.objectN)r    r!   r"   propertyr%   r   r   r   r   r$   :   s   r$   c                   s4   e Zd ZdZ fddZedd Zdd Z  ZS )JSONWebTokenSerializerz
    Serializer class used to validate a username and password.

    'username' is identified by the custom UserModel.USERNAME_FIELD.

    Returns a JSON Web Token that can be used to authenticate later calls.
    c                s6   t t| j|| t | j| j< tdd| jd< dS )zD
        Dynamically add the USERNAME_FIELD to self.fields.
        T)Z
write_onlyr   N)superr'   __init__r   r#   Zfieldsusername_fieldr   )r   argskwargs)	__class__r   r   r)   I   s    zJSONWebTokenSerializer.__init__c             C   s   t  S )N)r   )r   r   r   r   r*   R   s    z%JSONWebTokenSerializer.username_fieldc             C   s   | j || j d|di}t| ry8tjj|| j tjd}||drZ|}nd }W n t	k
rx   d }Y nX |r|j
std}t|t|}t||dS td}t|n td}|j| j d}t|d S )Nr   )r   r   zUser account is disabled.)tokenr   z+Unable to log in with provided credentials.z/Must include "{username_field}" and "password".)r*   )r*   r   allvaluesr	   r   r   r   r   r   Z	is_activer   r   r   jwt_payload_handlerjwt_encode_handlerformat)r   r   Zcredentialsr   r   r   Zpayloadr   r   r   r   V   s.    


zJSONWebTokenSerializer.validate)	r    r!   r"   __doc__r)   r&   r*   r   __classcell__r   r   )r-   r   r'   @   s   	r'   N)Zdjango.contrib.authr   Zdjango.utils.translationr   r   Zdjango.confr   Zrest_frameworkr   Zrest_framework_jwt.settingsr   Zrest_framework_jwt.compatr   r   Z&mysite.personnel.models.model_employeer	   ZUserZJWT_PAYLOAD_HANDLERr1   ZJWT_ENCODE_HANDLERr2   ZJWT_DECODE_HANDLERZjwt_decode_handlerZ JWT_PAYLOAD_GET_USERNAME_HANDLERZjwt_get_username_from_payloadr$   r
   r'   r   r   r   r   <module>   s   %