U
    ÚÖFj  ã                   @   s€   d Z ddlmZ ddlmZmZmZmZmZm	Z	 ddl
mZ ddlmZ ddlmZ dd„ Zd	d
„ Zdd„ Zdd„ Zdd„ ZdS )zShared Flask route decorators.é    ©Úwraps)ÚflashÚjsonifyÚredirectÚrequestÚsessionÚurl_for)ÚConfig)Únormalize_funcao)Ú	is_retailc                    s   t ˆ ƒ‡ fdd„ƒ}|S )Nc                     sP   dt krFtj d¡dks(tj d¡dkr:tdddœƒd	fS ttd
ƒƒS ˆ | |ŽS )NÚusuario_logadozX-Requested-WithÚXMLHttpRequestÚAcceptzapplication/jsonFu%   SessÃ£o expirada ou nÃ£o autenticada.)ÚsucessoÚmensagemé‘  úauth.login_page)r   r   ÚheadersÚgetr   r   r	   ©ÚargsÚkwargs©Úf© ú*/var/www/html/LojaOnline_hml/decorators.pyÚdecorated_function   s    ÿþz*login_required.<locals>.decorated_functionr   ©r   r   r   r   r   Úlogin_required   s    	r   c                    s   t ˆ ƒ‡ fdd„ƒ}|S )uB   Restringe rotas Ã  equipe tÃ©cnica (PLATFORM_ADMIN_USERS no .env).c                     s€   dt kr2tj d¡r&tdddœƒdfS ttdƒƒS t t  	d¡¡svtj d¡r`tdddœƒd	fS t
d
dƒ ttdƒƒS ˆ | |ŽS )Nr   ú/api/Fu   SessÃ£o expirada. FaÃ§a login.©r   Úerror   r   u1   Acesso restrito Ã  administraÃ§Ã£o da plataforma.é“  u]   Acesso restrito. Seu usuÃ¡rio nÃ£o estÃ¡ autorizado a cadastrar lojas (PLATFORM_ADMIN_USERS).ÚerrorÚindex)r   r   ÚpathÚ
startswithr   r   r	   r
   Úis_platform_adminr   r   r   r   r   r   r      s    þz3platform_admin_required.<locals>.decorated_functionr   r   r   r   r   Úplatform_admin_required   s    r)   c                    s   t ˆ ƒ‡ fdd„ƒ}|S )z8Bloqueia rotas de mesa/delivery/entrega em lojas varejo.c                     sD   t ƒ r:tj d¡stjr*tdddœƒdfS ttdƒd ƒS ˆ | |ŽS )Nr    Fu%   Recurso indisponÃ­vel no modo varejo.r!   r#   Úcasaz?modo=balcao©r   r   r&   r'   Úis_jsonr   r   r	   r   r   r   r   Úwrapped2   s
    z restaurant_only.<locals>.wrappedr   ©r   r-   r   r   r   Úrestaurant_only/   s    r/   c                    s   t ˆ ƒ‡ fdd„ƒ}|S )u3   Restringe rotas ao catÃ¡logo retail (lojas varejo).c                     s@   t ƒ s6tj d¡stjr*tdddœƒdfS ttdƒƒS ˆ | |ŽS )Nr    Fu*   Recurso disponÃ­vel apenas no modo varejo.r!   r#   Úconfiguracoesr+   r   r   r   r   r-   @   s
    zretail_only.<locals>.wrappedr   r.   r   r   r   Úretail_only=   s    r1   c                    s   t ˆ ƒ‡ fdd„ƒ}|S )u:   Restringe rotas a usuÃ¡rios com funcao gerente na sessÃ£o.c                     sL   t t d¡ƒdkrBtj d¡s$tjr6tdddœƒdfS tt	dƒƒS ˆ | |ŽS )	NÚfuncaoÚgerenter    FzAcesso restrito a gerentes.r!   r#   r0   )
r   r   r   r   r&   r'   r,   r   r   r	   r   r   r   r   r-   N   s
    z!gerente_required.<locals>.wrappedr   r.   r   r   r   Úgerente_requiredK   s    r4   N)Ú__doc__Ú	functoolsr   Úflaskr   r   r   r   r   r	   Úconfigr
   Úmodelsr   Úservices.business_moder   r   r)   r/   r1   r4   r   r   r   r   Ú<module>   s    