o
    ih                     @   s   d dl mZmZmZmZ d dlmZ d dlZd dlZd dl	Z	d dl
Z
d dlZededdZe
ddZd	d
 Zejddgddd Zejddgddd Zejddgddd ZdS )    )	Blueprintrequestjsonifycurrent_app)get_mongo_clientNauthz	/api/auth)
url_prefixZJWT_SECRET_KEYZsupersecretkeyc                 C   s6   | d | d t j  t jdd d}tj|tddS )Nemailusername   )days)r	   r
   expHS256)	algorithm)datetimeutcnow	timedeltajwtencode
SECRET_KEY)userpayload r   8/var/www/html/aiverses.in/BackEnd/app/api/auth/routes.pygenerate_token   s
   r   z	/registerPOST)methodsc               
   C   s   t  } | dp| d}| d}| d}t|||gs'tddidfS t }|d }|d	 }|d|irAtdd
idfS t|	dt
 }tj }dtt d d  }	||	|||g ||d t||d}
td|
|	||ddS )Nnamer
   r	   passworderrorMissing fields  character_testclientszEmail already registeredutf-8ZCLIENT_   )	client_idr
   r	   r   
characters
created_at
last_loginr
   r	   zUser registered successfullyr&   r
   r	   messagetokenr   )r   get_jsongetallr   r   find_onebcryptZhashpwr   Zgensaltr   r   struuiduuid4
insert_oner   )datar
   r	   r   clientdbusers_collectionZ	hashed_pwnowr&   r.   r   r   r   register   s2   


	r=   z/loginc                  C   s   t  } | d}| d}t||gstddidfS t }|d }|d }|d|i}|r;t|	d|d sCtdd	id
fS |
d|iddtj ii t|}td||d|d |d ddS )Nr	   r   r   r    r!   r"   r#   r$   zInvalid email or password  z$setr)   zUser logged in successfullyr&   r
   r+   r,   )r   r/   r0   r1   r   r   r2   r3   Zcheckpwr   
update_oner   r   r   )r8   r	   r   r9   r:   r;   r   r.   r   r   r   login1   s   

&r@   z/meGETc                  C   s   t jd} | r| dstddidfS | dd }ztj|tdgd	}td
|d |d diW S  tj	yE   tddidf Y S  tj
yV   tddidf Y S w )NAuthorizationzBearer r   zMissing or invalid tokenr>       r   )
algorithmsr   r
   r	   r*   zToken expiredzInvalid token)r   headersr0   
startswithr   splitr   decoder   ZExpiredSignatureErrorZInvalidTokenError)auth_headerr.   r   r   r   r   meC   s   rK   )flaskr   r   r   r   app.database.fetch_datar   r3   r   r   osr5   __name__auth_bpgetenvr   r   router=   r@   rK   r   r   r   r   <module>   s     

