
    vqh                     N    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
 d dlmZ d Zy)    wraps)requestjsonifycurrent_appg)current_userAnonymousUserMixin
login_user)Userc                 .     t                fd       }|S )z
    Decorator for routes that require token authentication
    This works alongside Flask-Login to support both session and token authentication
    c                     t         j                  dk(  r | i |S t        j                  r+t	        t        t
              st        t         _         | i |S t         j                  j                  d      }t         j                  j                  dd      }|r|j                  d      st        ddd      d	f}t	        |t              r@|d
   j                  j                  d|       |d
   j                  j                  dd       |S |j                  j                  d|       |j                  j                  dd       |S |j                  d      d   }t        j                  j                  |      j!                         }|st        ddd      d	f}t	        |t              r@|d
   j                  j                  d|       |d
   j                  j                  dd       |S |j                  j                  d|       |j                  j                  dd       |S |j"                  st        ddd      d	f}t	        |t              r@|d
   j                  j                  d|       |d
   j                  j                  dd       |S |j                  j                  d|       |j                  j                  dd       |S |t         _        t        j$                         }t'        |d       |t(        _        	  | i |t-        t(        d      rt/        t(        d       S S # t-        t(        d      rt/        t(        d       w w xY w)NOPTIONSAuthorizationOriginzhttp://localhost:3001zBearer Fz'Missing or invalid authorization header)successmessagei  r   zAccess-Control-Allow-Originz Access-Control-Allow-Credentialstrue    )
auth_tokenzInvalid or expired tokenz1Your account is inactive. Please contact support.)remember_login_user)r   methodr	   is_authenticated
isinstancer
   headersget
startswithr   tupleaddsplitr   query	filter_byfirst	is_active_get_current_objectr   r   r   hasattrdelattr)	argskwargsauth_headeroriginresponsetokenuseroriginal_current_userfs	           /var/www/html/app/utils/auth.py	decoratedz!token_required.<locals>.decorated   s    >>Y&d%f%% ((LJ\1]#/G d%f%% oo))/:$$X/FG+"8"8"C D   H (E*##''(EvN##''(JFS
 O   $$%BFK  $$%GPO !!#&q) zz##u#5;;= 5   H (E*##''(EvN##''(JFS
 O   $$%BFK  $$%GPO ~~ N   H (E*##''(EvN##''(JFS
 O   $$%BFK  $$%GPO  $ !- @ @ B 	4%( 	*d%f% q-(=) )wq-(=) )s    L) )#Mr   )r2   r4   s   ` r3   token_requiredr5      s&    
 1XY* Y*v     N)	functoolsr   flaskr   r   r   r   flask_loginr	   r
   r   app.auth.modelsr   r5    r6   r3   <module>r<      s     2 2 D D  ar6   