Caminho no Gestor bibliotecas/usuario.php
Tudo o que acontece depois de a senha ser aceita: emitir o cookie de login, listar e encerrar sessões, pedir a senha de novo antes de ações sensíveis, emitir tokens pessoais para a API e guardar os códigos de recuperação do 2FA. Quem a usa é o perfil-usuario e a API.
O cookie de login
usuario_gerar_token_autorizacao(['id_usuarios' => …, 'sessao' => true]):
-
sorteia um
pubID(64 hex) e grava emusuarios_tokenscom o HMACUSUARIO_HASH_PASSWORD, a validade, o IP e o User-Agent; -
monta o token no formato RSA do Gestor (
usuario_gerar_jwt(), veja autenticacao.php) e o põe no cookieCOOKIE_AUTHNAME:HttpOnly,SameSite=Lax,Securefora do ambiente de desenvolvimento em HTTP; -
grava o cookie
COOKIE_AUTHPROFILEcom o SHA-256 do id do perfil (usado só para apresentação; não é assinado).
Com sessao, o cookie morre ao fechar o navegador; sem, dura COOKIE_LIFETIME (15 dias). A validação a cada requisição é do roteador (gestor_permissao_token(), ciclo de uma requisição).
usuario_app_gerar_token_autorizacao() (devolve o token em vez de gravar o cookie) e usuario_openssl_gerar_chaves() não têm chamadores.
Sessões ativas
| Função | |
|---|---|
usuario_sessoes_listar($id_usuario, $pubIdAtual = null) |
As sessões (linhas de usuarios_tokens) já formatadas por usuario_sessao_formatar(): navegador e sistema (usuario_user_agent_analisar(), vazios quando não reconhecidos), IP, datas e qual é a sessão atual |
usuario_sessao_revogar($pubID, $id_usuario) |
Encerra uma sessão; o id_usuarios entra no WHERE para um id adivinhado não derrubar a sessão de outra conta |
usuario_sessoes_revogar_outras($pubIdAtual, $id_usuario) |
Encerra todas, menos a atual (exige o pubID atual) |
Autorização provisória
Antes de ações sensíveis (trocar e-mail, senha, 2FA), o perfil-usuario pede a senha de novo. usuario_autorizacao_provisoria() controla essa janela, guardada na sessão com validade de USUARIO_AUTORIZACAO_LIFETIME (300 s):
-
['validar' => true]abre a janela;['invalidar' => true]fecha;['verificar' => true]diz se está aberta; -
['verificarModal' => ['cancelarUrl', 'confirmarUrl', 'autorizadoUrl', 'autorizadoUrlQuerystring']]mostra o modal de confirmação quando ela não está aberta.
Tokens pessoais de API
Tokens c2f_pat_<64 hex> (constante USUARIO_API_TOKEN_PREFIXO), aceitos no mesmo Authorization: Bearer dos tokens OAuth2:
-
usuario_api_token_gerar($id_usuario, $nome, $escopos = [], $dias_expiracao = null)devolve o token em texto uma única vez; o banco (usuarios_api_tokens) guarda só o SHA-256 (usuario_api_token_hash()) e um prefixo exibível (usuario_api_token_prefixo()); -
usuario_api_token_validar($token)confere hash, status e validade (usuario_api_token_situacao()distingue revogado de expirado), registra o uso e devolve o mesmo formato deoauth2_validar_token(); -
usuario_api_token_formato()só diz se a string tem o formato, para a API escolher o validador; -
usuario_api_token_revogar($id_token, $id_usuario),usuario_api_tokens_listar($id_usuario); -
usuario_api_tokens_disponivel(): a tabela existe (instalação migrada).
Códigos de recuperação do 2FA
usuario_recovery_codes_gerar($quantidade = 10) sorteia os códigos (sem 0, O, 1, I e L, para serem copiados à mão); o banco guarda só os hashes (usuario_recovery_code_hash() sobre a forma normalizada por usuario_recovery_code_normalizar(), que ignora hífen, espaço e caixa). usuario_recovery_code_consumir($codigo, $hashes) devolve se o código vale e a lista sem ele (uso único). usuario_recovery_codes_disponivel() informa se a coluna existe.
Legado
usuario_host_dados() devolve dados do usuário de host (modo multi-host, veja host.php) ou de um anônimo. Não tem chamadores.
Funções
Gerado a partir de gestor/bibliotecas/usuario.php · 25 funções
usuario_openssl_gerar_chaves
ver no código · linha 37 ↗usuario_openssl_gerar_chaves(array|false $params = false): array|falseGera par de chaves pública/privada OpenSSL.
Parâmetros
$paramsarray|false- Parâmetros da função.
Retorno
usuario_gerar_jwt
ver no código · linha 94 ↗usuario_gerar_jwt(array|false $params = false): string|falseGera token JWT assinado com RSA.
Parâmetros
$paramsarray|false- Parâmetros da função.
Retorno
usuario_gerar_token_autorizacao
ver no código · linha 166 ↗usuario_gerar_token_autorizacao(array|false $params = false): boolGera token de autorização para autenticação de usuários web.
Parâmetros
$paramsarray|false- Parâmetros da função.
Retorno
usuario_app_gerar_token_autorizacao
ver no código · linha 284 ↗usuario_app_gerar_token_autorizacao(array|false $params = false): array|falseGera token de autorização para aplicativos mobile.
Parâmetros
$paramsarray|false- Parâmetros da função.
Retorno
usuario_autorizacao_provisoria
ver no código · linha 373 ↗usuario_autorizacao_provisoria(array|false $params = false): bool|voidGerencia autorizações provisórias de usuários via sessão.
Parâmetros
$paramsarray|false- Parâmetros da função.
Retorno
usuario_user_agent_analisar
ver no código · linha 499 ↗usuario_user_agent_analisar(string $userAgent): array{navegador:string,sistema:string,dispositivo:string}Identifica navegador, sistema operacional e tipo de dispositivo a partir do User-Agent.
Parâmetros
$userAgentstring- Cabeçalho
User-Agentbruto (pode vir vazio).
Retorno
usuario_sessao_formatar
ver no código · linha 583 ↗usuario_sessao_formatar(array $registro, string|null $tokenAtual = null): arrayNormaliza uma linha de usuarios_tokens para exibição no painel de sessões.
Parâmetros
$registroarray- Linha de
usuarios_tokens(pubID,ip,user_agent,expiration, $tokenAtualstring|nullpubIDdo token da requisição corrente.
Retorno
atual, navegador, sistema, dispositivo e sessao.usuario_sessoes_listar
ver no código · linha 619 ↗usuario_sessoes_listar(int $id_usuario, string|null $token_atual_pubID = null): arrayLista as sessões ativas de um usuário, já normalizadas para exibição.
Parâmetros
$id_usuarioint- ID do usuário dono das sessões.
$token_atual_pubIDstring|nullpubIDdo token da requisição corrente (opcional).
Retorno
usuario_sessao_revogar
ver no código · linha 660 ↗usuario_sessao_revogar(string $pubID, int $id_usuario): boolRevoga uma sessão específica do usuário informado.
Parâmetros
$pubIDstring- Identificador público do token a remover.
$id_usuarioint- ID do usuário dono do token.
Retorno
usuario_sessoes_revogar_outras
ver no código · linha 686 ↗usuario_sessoes_revogar_outras(string $token_atual_pubID, int $id_usuario): boolEncerra todas as sessões do usuário, exceto a da requisição corrente.
Parâmetros
$token_atual_pubIDstringpubIDdo token que deve ser preservado.$id_usuarioint- ID do usuário dono dos tokens.
Retorno
usuario_api_tokens_disponivel
ver no código · linha 715 ↗usuario_api_tokens_disponivel(): boolDiz se o schema já suporta Personal Access Tokens (req-119 / BATCH-122).
Retorno
usuario_recovery_codes_disponivel
ver no código · linha 731 ↗usuario_recovery_codes_disponivel(): boolDiz se o schema já suporta códigos de recuperação de 2FA (req-119 / BATCH-122).
Retorno
usuario_api_token_formato
ver no código · linha 750 ↗usuario_api_token_formato(string $token): boolDiz se uma string TEM O FORMATO de um Personal Access Token.
Parâmetros
$tokenstring- Valor bruto recebido no cabeçalho.
Retorno
usuario_api_token_hash
ver no código · linha 770 ↗usuario_api_token_hash(string $token): stringCalcula o hash de armazenamento de um Personal Access Token.
Parâmetros
$tokenstring- Token em texto puro.
Retorno
usuario_api_token_prefixo
ver no código · linha 784 ↗usuario_api_token_prefixo(string $token): stringExtrai o prefixo exibível de um token.
Parâmetros
$tokenstring- Token em texto puro.
Retorno
usuario_api_token_situacao
ver no código · linha 804 ↗usuario_api_token_situacao(array $registro, int|null $agora = null): stringDecide se um token registrado está utilizável AGORA.
Parâmetros
$registroarray- Linha de
usuarios_api_tokens(status,expiracao). $agoraint|null- Timestamp de referência; omitido usa
time().
Retorno
ativo, revogado ou expirado.usuario_api_token_gerar
ver no código · linha 838 ↗usuario_api_token_gerar(int $id_usuario, string $nome, array $escopos = Array(), int|null $dias_expiracao = null): array|falseGera um Personal Access Token para o usuário.
Parâmetros
$id_usuarioint- Dono do token.
$nomestring- Identificador amigável.
$escoposarray- Permissões autorizadas.
$dias_expiracaoint|null- Validade em dias;
nullpara token sem expiração.
Retorno
['token' => …, 'prefixo' => …, 'expiracao' => …] ou false se inválido.usuario_api_token_validar
ver no código · linha 892 ↗usuario_api_token_validar(string $token_puro): array|falseValida um Personal Access Token e registra o uso.
Parâmetros
$token_purostring- Token recebido no cabeçalho.
Retorno
usuario_api_token_revogar
ver no código · linha 956 ↗usuario_api_token_revogar(int $id_token, int $id_usuario): boolRevoga um Personal Access Token do usuário informado.
Parâmetros
$id_tokenint- Identificador do token.
$id_usuarioint- Dono do token.
Retorno
usuario_api_tokens_listar
ver no código · linha 982 ↗usuario_api_tokens_listar(int $id_usuario): arrayLista os tokens de um usuário, já anotados com a situação corrente.
Parâmetros
$id_usuarioint- Dono dos tokens.
Retorno
usuario_recovery_codes_gerar
ver no código · linha 1034 ↗usuario_recovery_codes_gerar(int $quantidade = 10): arrayGera códigos de recuperação em texto puro.
Parâmetros
$quantidadeint- Quantos códigos gerar.
Retorno
XXXX-XXXX.usuario_recovery_code_normalizar
ver no código · linha 1063 ↗usuario_recovery_code_normalizar(string $codigo): stringNormaliza um código de recuperação para comparação.
Parâmetros
$codigostring- Código digitado.
Retorno
usuario_recovery_code_hash
ver no código · linha 1077 ↗usuario_recovery_code_hash(string $codigo): stringCalcula o hash de armazenamento de um código de recuperação.
Parâmetros
$codigostring- Código em texto puro.
Retorno
usuario_recovery_code_consumir
ver no código · linha 1092 ↗usuario_recovery_code_consumir(string $codigo, array $hashes): array{valido:bool,restantes:array}Consome um código de recuperação de uma lista de hashes.
Parâmetros
$codigostring- Código digitado pelo usuário.
$hashesarray- Lista de hashes ainda válidos.
Retorno
usuario_host_dados
ver no código · linha 1131 ↗usuario_host_dados(array|false $params = false): mixed|arrayObtém dados do usuário do host atual.
Parâmetros
$paramsarray|false- Parâmetros da função.
Retorno