
    yÚhi                     D    d Z ddlmZ ddlmZmZmZmZ ddlm	Z	 d Z
d Zy)	a+  
security.py

Purpose:
  Provide authentication and authorization decorators for views. This keeps
  access control concerns centralized and testable.

Exports:
  - login_required(view): redirects to login if not authenticated
  - admin_required(view): ensures the current user has admin privileges
    wraps)sessionredirecturl_forflash   )get_dbc                 .     t                fd       }|S )Nc                  L    dt         vrt        t        d            S  | i |S )Nuser_idviews.login_root)r   r   r   )argskwargs	view_funcs     GC:\Users\algun\Documents\ceba web\Ceba - Github\app_modules\security.pywrapperzlogin_required.<locals>.wrapper   s,    G#G$6788$)&))    r   r   r   s   ` r   login_requiredr      s!    
9* * Nr   c                 .     t                fd       }|S )Nc                     dt         vrt        t        d            S 	 t               }|j	                  dt         d   f      j                         }|rt        |d   xs d      dk7  r t        dd       t        t        d	            S 	  | i |S # t        $ r# t        dd       t        t        d	            cY S w xY w)
Nr   r   z'SELECT is_admin FROM users WHERE id = ?is_adminr   r	   zNema ovlasti.errorzviews.select_page)	r   r   r   r
   executefetchoneintr   	Exception)r   r   dbrowr   s       r   r   zadmin_required.<locals>.wrapper   s    G#G$6788	:B**FQZI[H]^ggiC#c*o23q8ow/(; <== 9 $)&))  	:/7+G$7899	:s   A(B )B=<B=r   r   s   ` r   admin_requiredr!      s!    
9* * Nr   N)__doc__	functoolsr   flaskr   r   r   r   r   r
   r   r!    r   r   <module>r&      s"   
  3 3 r   