o
    h                     @   s   d 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mZmZ ddlZeeZedeZejddgd	d
d Zejddgd	e	 dd Zejddgd	e	 dd ZdS )z0
Authentication routes for JWT token management
    )	Blueprintrequestjsonifycurrent_app)create_access_tokenget_jwt_identityjwt_requiredget_jwt)authenticate_usercreate_user_tokenget_current_userNauthz
/api/loginPOST)methodsc               
   C   s  zet  } | stddddfW S | d}| d}|r|s)tddddfW S t||}|s:td	d
ddfW S t|}|sJtddddfW S td| d tdd|dtj	d d|iddfW S  t
y } ztd|  tddddfW  Y d}~S d}~ww )zLogin endpoint to get JWT tokenzInvalid requestzRequest body must be JSONerrormessagei  usernamepasswordzMissing credentialsz"Username and password are requiredzInvalid credentialsz!Username or password is incorrect  zToken creation failedz%Could not create authentication token  zUser z logged in successfullyTzLogin successfulBearerJWT_ACCESS_TOKEN_EXPIRES)successr   access_token
token_type
expires_inuser   zLogin error: zLogin failedzAn error occurred during loginN)r   get_jsonr   getr
   r   loggerinfor   config	Exceptionr   )datar   r   r   tokene r(   #/var/www/html/routes/auth_routes.pylogin   sp   


	r*   z/api/profileGETc               
   C   sz   zt  } | stddddfW S td| ddfW S  ty< } ztd|  td	d
ddfW  Y d}~S d}~ww )zGet current user profilezAuthentication requiredz$Please login to access this resourcer   r   T)r   r   r   zProfile error: zProfile retrieval failedz*An error occurred while retrieving profiler   Nr   r   r$   r!   r   current_userr'   r(   r(   r)   get_profileG   s2   r/   z/api/verifyc               
   C   sd   zt  } tdd| ddfW S  ty1 } ztd|  tdddd	fW  Y d
}~S d
}~ww )z Verify if current token is validTzToken is valid)r   r   r   r   zToken verification error: zToken verification failedzToken is invalid or expiredr   r   Nr,   r-   r(   r(   r)   verify_token`   s&   r0   )__doc__flaskr   r   r   r   flask_jwt_extendedr   r   r   r	   auth.jwt_authr
   r   r   logging	getLogger__name__r!   auth_bprouter*   r/   r0   r(   r(   r(   r)   <module>   s    


8