o
    Fý¤hi  ã                   @   sH   d Z ddlmZ ddlmZmZmZmZ ddlm	Z	 dd„ Z
dd	„ Zd
S )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d„ƒ}|S )Nc                     s"   dt vr
ttdƒƒS ˆ | i |¤ŽS )NÚuser_idúviews.login_root)r   r   r   )ÚargsÚkwargs©Ú	view_func© ú%/var/www/html/app_modules/security.pyÚwrapper   s   zlogin_required.<locals>.wrapperr   ©r   r   r   r   r   Úlogin_required   s   r   c                    r
   )Nc                     sœ   dt vr
ttdƒƒS z(tƒ }| dt d f¡ ¡ }|r%t|d p!dƒdkr1tddƒ ttd	ƒƒW S W n tyF   tddƒ ttd	ƒƒ Y S w ˆ | i |¤ŽS )
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   r   r   r      s   
þ
þzadmin_required.<locals>.wrapperr   r   r   r   r   Úadmin_required   s   r   N)Ú__doc__Ú	functoolsr   Úflaskr   r   r   r   r   r	   r   r   r   r   r   r   Ú<module>   s    	