+
    5)ir                     f    R t ^ RIHt ^ RIHtHtHt ^ RIHt ^ RI	H
t
  ! R R]4      t]! 4       tR# )zJ
Authentication Middleware
API key authentication for protected endpoints
wraps)requestgcurrent_app)ApiResponseMixin)
get_loggerc                   6   a  ] tR t^t o RtR tR tR tRtV t	R# )AuthMiddlewarez%Middleware for API key authenticationc                &    \        R 4      V n        R# )auth_middlewareN)r   logger)selfs   &KD:\Projects\python\client-ideal-oms_pyapi\app\middleware\auth_middleware.py__init__AuthMiddleware.__init__   s     !23    c                   \         P                  P                  R4      ;'       g     \         P                  P                  R4      pV P                  P	                  R\         P                  4       V P                  P	                  RV 24       V'       g   R# VP                  R4      '       d
   VR,          p\        P                  P                  R. 4      pV P                  P	                  R	V 24       W9   d   V\        n	        R
# R# )ze
Authenticate request using API key from header

Returns:
    True if authenticated, False otherwise
z	X-API-KeyAuthorizationzHeaders: %szExtracted API key: FzBearer :   NNAPI_KEYSzValid API keys: T)
r   headersgetr   debug
startswithr   configr   api_key)r   r   
valid_keyss   &  r   authenticate_api_key#AuthMiddleware.authenticate_api_key   s     //%%k2ZZgoo6I6I/6ZK'//:/y9: i((bkG !''++J;
,ZL9: AIr   c                4   a a \        S4      VV 3R l4       pV# )z
Decorator to require API key authentication for a route

Usage:
    @app.route('/protected')
    @auth_middleware.require_api_key
    def protected_route():
        return 'This is protected'
c                     < SP                  4       '       gB   SP                  P                  R \        P                   24       SP                  RRRR/4      # S! V / VB # )z#Unauthorized API access attempt to messagezValid API key requirederrorz#Missing or invalid X-API-Key header)r   r   warningr   pathunauthorized)argskwargsfr   s   *,r   decorated_function:AuthMiddleware.require_api_key.<locals>.decorated_function8   sf    ,,..##&I',,$XY((7B*  
 d%f%%r   r   )r   r)   r*   s   ff r   require_api_keyAuthMiddleware.require_api_key.   s#     
q	& 
	& "!r   )r   N)
__name__
__module____qualname____firstlineno____doc__r   r   r,   __static_attributes____classdictcell__)__classdict__s   @r   r
   r
      s     /48" "r   r
   N)r2   	functoolsr   flaskr   r   r   app.utils.api_response_mixinr   app.utils.helpersr   r
   r    r   r   <module>r;      s3   
  ) ) 9 (7"% 7"v !"r   