
    Ohw                     v    d dl Z d dlZd dlmZmZ d dlmZ d dlmZ  ej                  dd      Z	d
dZ
d Zd	 Zy)    N)datetime	timedelta)requestwraps
SECRET_KEY	secret123c                     | j                         }t        j                         t        |      z   |d<   t	        j
                  |t        d      }|S )zQ
    Generate a JWT token for a given payload.
    Default expiry = 30 days.
    )minutesexpHS256)	algorithm)copyr   utcnowr   jwtencoder   )payloadexpires_in_minutespayload_copytokens       -/var/www/html/eduruby.in/utils/jwt_service.pygenerate_tokenr   
   sB    
 <<>L"//+i@R.SSLJJ|Z7CEL    c                     	 t        j                  | t        dg      }|S # t         j                  $ r Y yt         j                  $ r Y yw xY w)zj
    Decode and verify a JWT token.
    Returns decoded payload if valid, None if invalid or expired.
    r   
algorithmsN)r   decoder   ExpiredSignatureErrorInvalidTokenError)r   r   s     r   decode_tokenr       sI    
**UJG9E$$    s   ! AA
Ac                 .     t                fd       }|S )Nc                  \   t         j                  j                  dd       }|sddddfS 	 |j                  d      d   }t	        j
                  |t        dg	      }|d
   t         _         | i |S # t        j                  $ r
 ddddfcY S t        j                  $ r
 ddddfcY S w xY w)NAuthorizationFzToken missing)statusmessagei      r   r   idzToken expiredzInvalid token)
r   headersgetsplitr   r   r   user_idr   r   )argskwargsauthr   r   fs        r   	decoratedzjwt_required.<locals>.decorated$   s    ""?D9#@#EE	FJJsOA&Ejj
yIG%dmGO $!&!! (( 	F#@#EE$$ 	F#@#EE	Fs   ?A3 3B+B+*B+r   )r0   r1   s   ` r   jwt_requiredr2   #   s!    
1X" " r   )i  )r   osr   r   flaskr   	functoolsr   getenvr   r   r    r2    r   r   <module>r8      s7    
 	 (   RYY|[1
	r   