B
    ADb                 @   s
  d dl Z d dlmZ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 d dlmZ d d	lmZmZ G d
d deZG dd deZG dd deeZG dd deZG dd deZG dd deZe Ze Ze Ze Ze Ze Z dS )    N)ObtainJSONWebTokenjwt_response_payload_handler)ObtainAuthToken)api_settings)Token)coreapi
coreschema)Response)ManualSchema)AuthTokenCompanySerializerJSONWebTokenCompanySerializerc               @   s   e Zd ZdZdd ZdS )SuperuserObtainAuthTokenzuse for no-cloud under mysitec             O   s`   | j |jd|id}|jdd |jd }|js@tddidd	S tjj|d
\}}td|j	iS )Nrequest)datacontextT)Zraise_exceptionuserdetailzsuperuser required.i  )status)r   token)
serializer_classr   is_validZvalidated_datais_superuserr	   r   ZobjectsZget_or_createkey)selfr   argskwargs
serializerr   r   Zcreated r   3G:\easytimepro\master/mysite/api\authtoken_views.pypost   s    
zSuperuserObtainAuthToken.postN)__name__
__module____qualname____doc__r   r   r   r   r   r      s   r   c               @   s~   e Zd ZdZeZedk	rzedk	rzeej	dddej
dddd	ej	d
ddej
dddd	ej	dddej
dddd	gddZdS )ObtainAuthCompanyTokenzuse for cloud under mysite/apiNemailTformEmailzValid email for authentication)titledescription)namerequiredlocationschemapasswordPasswordz!Valid password for authenticationcompanyCompanyz Valid company for authenticationzapplication/json)fieldsencoding)r    r!   r"   r#   r   r   r   r   r
   FieldStringr-   r   r   r   r   r$      s4   

r$   c               @   sz   e Zd ZdZedk	rvedk	rveejdddejdddd	ejd
ddejdddd	ejdddejdddd	gddZ	dS )SuperuserObtainAuthCompanyTokenzuse for cloud under mysiteNr%   Tr&   r'   zValid email for authentication)r(   r)   )r*   r+   r,   r-   r.   r/   z!Valid password for authenticationr0   r1   z Valid company for authenticationzapplication/json)r2   r3   )
r    r!   r"   r#   r   r   r
   r4   r5   r-   r   r   r   r   r6   F   s2   

r6   c               @   s   e Zd ZdZdd ZdS )SuperuserObtainJSONWebTokenz
    use for no-cloud under mysite

    API View that receives a POST with a user's username and password.

    Returns a JSON Web Token that can be used for authenticated requests.
    c       
      O   s   | j |jd}| r|jdp&|j}|js>tddiddS |jd}t|||}t|}t	j
rt t	j }	|jt	j
||	dd	 |S t|jddS )
N)r   r   r   zsuperuser required.i  )r   r   T)ZexpiresZhttponly)Zget_serializerr   r   objectgetr   r   r	   r   r   ZJWT_AUTH_COOKIEdatetimeZutcnowZJWT_EXPIRATION_DELTAZ
set_cookieerrors)
r   r   r   r   r   r   r   Zresponse_dataZresponseZ
expirationr   r   r   r   t   s"    z SuperuserObtainJSONWebToken.postN)r    r!   r"   r#   r   r   r   r   r   r7   k   s   r7   c               @   s   e Zd ZdZeZdS )ObtainJSONWebCompanyTokenzuse for cloud under mysite/apiN)r    r!   r"   r#   r   r   r   r   r   r   r<      s   r<   c               @   s   e Zd ZdZeZdS )"SuperuserObtainJSONWebCompanyTokenzuse for cloud under mysiteN)r    r!   r"   r#   r   r   r   r   r   r   r=      s   r=   )!r:   Zrest_framework_jwt.viewsr   r   Zrest_framework.authtoken.viewsr   Zrest_framework_jwt.settingsr   Zrest_framework.authtoken.modelsr   Zrest_framework.compatr   r   Zrest_framework.responser	   Zrest_framework.schemasr
   Zmysite.api.authtoken_serializerr   r   r   r$   r6   r7   r<   r=   Zas_viewZobtain_auth_company_tokenZobtain_jwt_company_tokenZsuperuser_obtain_auth_tokenZsuperuser_obtain_jwt_tokenZ#superuser_obtain_auth_company_tokenZ"superuser_obtain_jwt_company_tokenr   r   r   r   <module>   s(   '%