U
    2j                     @  sX   d Z ddlmZ ddlmZ ddlmZ dZdddd	d
ZeddG dd dZ	dS )ue  
Modelos e contratos relacionados a usuários / autenticação.

A tabela `usuarios` no MySQL (loja2001) expõe tipicamente:
- chave (PK)
- usuario (login, único por instalação ou combinado com id_cliente)
- senha (legado em texto plano; pode evoluir para hash bcrypt)
- id_cliente (tenant)
- ativo, data_criacao
- funcao (opcional: gerente | atendente)
    )annotations)	dataclass)Anyu=   Credenciais inválidas. Verifique os dados e tente novamente.r   str)rawreturnc                 C  s$   t | pd  }|dkr |S dS )u-   Normaliza papel do usuário para RBAC visual.gerente)r   Z	atendente)r   striplower)r   val r   "/var/www/html/LojaOnline/models.pynormalize_funcao   s    r   T)frozenc                   @  sJ   e Zd ZU dZded< ded< ded< dZded< ed	d
dddZdS )UsuarioAuthRowu=   Subconjunto de colunas usadas após SELECT na autenticação.r   usuariosenhaz
int | None
id_clienter   funcaozdict[str, Any] | NonezUsuarioAuthRow | None)rowr   c                 C  sD   |sd S | t |dpdt |dp(d|dt|ddS )Nr    r   r   r   )r   r   r   r   )r   getr   )clsr   r   r   r   from_db_row%   s    zUsuarioAuthRow.from_db_rowN)__name__
__module____qualname____doc____annotations__r   classmethodr   r   r   r   r   r      s   
r   N)
r   
__future__r   dataclassesr   typingr   AUTH_CREDENTIALS_INVALID_MSGr   r   r   r   r   r   <module>   s   