U
    dz                     @   s  d dl mZ d dlmZ d dlmZmZmZmZ d dl	m
Z
mZmZ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Zd d	lmZ d d
lmZ d dlmZ e ZedddZejd Zedej Z!edej"Z#e$dG dd deZ%e$dG dd deZ&dS )    )Bcrypt)request)Api	NamespaceResourcefields)jwt_requiredget_jwt_identitycreate_access_tokencreate_refresh_token)User)Config)userN)
login_user)
send_email)configauthzAuthentication endpoints)descriptionZusersLoginr   z/loginc                   @   s.   e Zd Zejeddejg ddd ZdS )r   T)validatesecurityc                 C   s~   t jdd}t jdd}|r$|s0ddidfS tj|d}|rPt|d |s\ddid	fS d
|d t|dt|dddfS )z%
        Authenticate a user
        emailNpasswordmessagezEmail and password are required  )r   zInvalid email or passwordi  zAuthenticated successfully)identity)r   r   accessrefresh   )	r   jsongetr   Zget_by_emailbcryptcheck_password_hashr
   r   )selfr   r   r    r%   >/var/www/html/media_planing_auth/src/app/routes/api/v1/auth.pypost%   s,      z
Login.postN)__name__
__module____qualname__auth_namespaceexpectlogin_modeldocr'   r%   r%   r%   r&   r   "   s   
z	/registerc                   @   s*   e Zd Zeeejg ddd ZdS )Registerr   c                 C   s   t j}t| td|d i}|r2ddddfS |d |d krPdddd	fS |d= t|d
 |d t|d ddd}|	  |
|d }d| }tdtddtd|d gd|d  d|d  d| dd ddddfS )zN
        User register with email and password and more attribute(s).
        r   FzEmail already registered.)statusr   i  r   Zconfirm_passwordzPasswords do not matchr   usernamezutf-8)r1   r   r   Zis_verifiedz http://yourwebsite.com/activate/zActivate Your AccountMAIL_USERNAME )defaultcastzHello 	last_namez, Z
first_namezR,

Welcome to our platform! Please click the link below to activate your account:
z

Thank you,
The Platform Team)subjectZsender_emailZrecipient_emailbodyTzUser created successfully   )r   r    printusers_collectionfind_oner   r"   generate_password_hashdecodesaveZencode_auth_tokenr   r   str)r$   Znew_userZexisting_userZuser_objZactivation_tokenZactivation_linkr%   r%   r&   r'   E   sH    

zRegister.postN)r(   r)   r*   r+   r,   api_register_modelr.   r'   r%   r%   r%   r&   r/   C   s   
r/   )'Zflask_bcryptr   flaskr   flask_restxr   r   r   r   flask_jwt_extendedr   r	   r
   r   Zapp.models.userr   appr   Z
app.schemar   datetimeZflask_loginr   Z	app.utilsr   decoupler   r"   r+   dbr;   modelZLOGIN_MODEL_FIELDSr-   ZUSER_MODEL_FIELDSrA   router   r/   r%   r%   r%   r&   <module>   s4   
   