Path in the Gestor bibliotecas/usuario.php
Everything that happens after the password is accepted: issuing the login cookie, listing and ending sessions, asking for the password again before sensitive actions, issuing personal tokens for the API and keeping the 2FA recovery codes. It is used by perfil-usuario and the API.
The login cookie
usuario_gerar_token_autorizacao(['id_usuarios' => …, 'sessao' => true]):
-
draws a
pubID(64 hex) and stores it inusuarios_tokenswith theUSUARIO_HASH_PASSWORDHMAC, the expiration, the IP and the User-Agent; -
builds the token in the Gestor RSA format (
usuario_gerar_jwt(), see autenticacao.php) and puts it in theCOOKIE_AUTHNAMEcookie:HttpOnly,SameSite=Lax,Secureexcept in the development environment over HTTP; -
writes the
COOKIE_AUTHPROFILEcookie with the SHA-256 of the profile id (used only for presentation; it is not signed).
With sessao, the cookie dies when the browser closes; without it, it lasts COOKIE_LIFETIME (15 days). Validation on every request is the router's job (gestor_permissao_token(), request lifecycle).
usuario_app_gerar_token_autorizacao() (returns the token instead of writing the cookie) and usuario_openssl_gerar_chaves() have no callers.
Active sessions
| Function | |
|---|---|
usuario_sessoes_listar($id_usuario, $currentPubId = null) |
The sessions (usuarios_tokens rows) already formatted by usuario_sessao_formatar(): browser and system (usuario_user_agent_analisar(), empty when unrecognized), IP, dates and which one is the current session |
usuario_sessao_revogar($pubID, $id_usuario) |
Ends one session; id_usuario goes into the WHERE so a guessed id cannot drop another account's session |
usuario_sessoes_revogar_outras($currentPubId, $id_usuario) |
Ends all but the current one (requires the current pubID) |
Provisional authorization
Before sensitive actions (changing e-mail, password, 2FA), perfil-usuario asks for the password again. usuario_autorizacao_provisoria() controls that window, kept in the session for USUARIO_AUTORIZACAO_LIFETIME (300 s):
-
['validar' => true]opens the window;['invalidar' => true]closes it;['verificar' => true]tells whether it is open; -
['verificarModal' => ['cancelarUrl', 'confirmarUrl', 'autorizadoUrl', 'autorizadoUrlQuerystring']]shows the confirmation modal when it is not open.
Personal API tokens
c2f_pat_<64 hex> tokens (constant USUARIO_API_TOKEN_PREFIXO), accepted in the same Authorization: Bearer as the OAuth2 tokens:
-
usuario_api_token_gerar($id_usuario, $name, $scopes = [], $expiration_days = null)returns the plain token only once; the database (usuarios_api_tokens) keeps only its SHA-256 (usuario_api_token_hash()) and a displayable prefix (usuario_api_token_prefixo()); -
usuario_api_token_validar($token)checks hash, status and expiration (usuario_api_token_situacao()tells revoked from expired), records the use and returns the same format asoauth2_validar_token(); -
usuario_api_token_formato()only tells whether the string has the format, so the API picks the right validator; -
usuario_api_token_revogar($id_token, $id_usuario),usuario_api_tokens_listar($id_usuario); -
usuario_api_tokens_disponivel(): the table exists (migrated installation).
2FA recovery codes
usuario_recovery_codes_gerar($amount = 10) draws the codes (without 0, O, 1, I and L, to be copied by hand); the database keeps only the hashes (usuario_recovery_code_hash() over the form normalized by usuario_recovery_code_normalizar(), which ignores hyphens, spaces and case). usuario_recovery_code_consumir($code, $hashes) returns whether the code is valid and the list without it (single use). usuario_recovery_codes_disponivel() tells whether the column exists.
Legacy
usuario_host_dados() returns data of the host user (multi-host mode, see host.php) or of an anonymous one. It has no callers.
Functions
Generated from gestor/bibliotecas/usuario.php · 25 functions
usuario_openssl_gerar_chaves
view source · line 37 ↗usuario_openssl_gerar_chaves(array|false $params = false): array|falseGera par de chaves pública/privada OpenSSL.
Parameters
$paramsarray|false- Parâmetros da função.
Returns
usuario_gerar_jwt
view source · line 94 ↗usuario_gerar_jwt(array|false $params = false): string|falseGera token JWT assinado com RSA.
Parameters
$paramsarray|false- Parâmetros da função.
Returns
usuario_gerar_token_autorizacao
view source · line 166 ↗usuario_gerar_token_autorizacao(array|false $params = false): boolGera token de autorização para autenticação de usuários web.
Parameters
$paramsarray|false- Parâmetros da função.
Returns
usuario_app_gerar_token_autorizacao
view source · line 284 ↗usuario_app_gerar_token_autorizacao(array|false $params = false): array|falseGera token de autorização para aplicativos mobile.
Parameters
$paramsarray|false- Parâmetros da função.
Returns
usuario_autorizacao_provisoria
view source · line 373 ↗usuario_autorizacao_provisoria(array|false $params = false): bool|voidGerencia autorizações provisórias de usuários via sessão.
Parameters
$paramsarray|false- Parâmetros da função.
Returns
usuario_user_agent_analisar
view source · line 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.
Parameters
$userAgentstring- Cabeçalho
User-Agentbruto (pode vir vazio).
Returns
usuario_sessao_formatar
view source · line 583 ↗usuario_sessao_formatar(array $registro, string|null $tokenAtual = null): arrayNormaliza uma linha de usuarios_tokens para exibição no painel de sessões.
Parameters
$registroarray- Linha de
usuarios_tokens(pubID,ip,user_agent,expiration, $tokenAtualstring|nullpubIDdo token da requisição corrente.
Returns
atual, navegador, sistema, dispositivo e sessao.usuario_sessoes_listar
view source · line 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.
Parameters
$id_usuarioint- ID do usuário dono das sessões.
$token_atual_pubIDstring|nullpubIDdo token da requisição corrente (opcional).
Returns
usuario_sessao_revogar
view source · line 660 ↗usuario_sessao_revogar(string $pubID, int $id_usuario): boolRevoga uma sessão específica do usuário informado.
Parameters
$pubIDstring- Identificador público do token a remover.
$id_usuarioint- ID do usuário dono do token.
Returns
usuario_sessoes_revogar_outras
view source · line 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.
Parameters
$token_atual_pubIDstringpubIDdo token que deve ser preservado.$id_usuarioint- ID do usuário dono dos tokens.
Returns
usuario_api_tokens_disponivel
view source · line 715 ↗usuario_api_tokens_disponivel(): boolDiz se o schema já suporta Personal Access Tokens (req-119 / BATCH-122).
Returns
usuario_recovery_codes_disponivel
view source · line 731 ↗usuario_recovery_codes_disponivel(): boolDiz se o schema já suporta códigos de recuperação de 2FA (req-119 / BATCH-122).
Returns
usuario_api_token_formato
view source · line 750 ↗usuario_api_token_formato(string $token): boolDiz se uma string TEM O FORMATO de um Personal Access Token.
Parameters
$tokenstring- Valor bruto recebido no cabeçalho.
Returns
usuario_api_token_hash
view source · line 770 ↗usuario_api_token_hash(string $token): stringCalcula o hash de armazenamento de um Personal Access Token.
Parameters
$tokenstring- Token em texto puro.
Returns
usuario_api_token_prefixo
view source · line 784 ↗usuario_api_token_prefixo(string $token): stringExtrai o prefixo exibível de um token.
Parameters
$tokenstring- Token em texto puro.
Returns
usuario_api_token_situacao
view source · line 804 ↗usuario_api_token_situacao(array $registro, int|null $agora = null): stringDecide se um token registrado está utilizável AGORA.
Parameters
$registroarray- Linha de
usuarios_api_tokens(status,expiracao). $agoraint|null- Timestamp de referência; omitido usa
time().
Returns
ativo, revogado ou expirado.usuario_api_token_gerar
view source · line 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.
Parameters
$id_usuarioint- Dono do token.
$nomestring- Identificador amigável.
$escoposarray- Permissões autorizadas.
$dias_expiracaoint|null- Validade em dias;
nullpara token sem expiração.
Returns
['token' => …, 'prefixo' => …, 'expiracao' => …] ou false se inválido.usuario_api_token_validar
view source · line 892 ↗usuario_api_token_validar(string $token_puro): array|falseValida um Personal Access Token e registra o uso.
Parameters
$token_purostring- Token recebido no cabeçalho.
Returns
usuario_api_token_revogar
view source · line 956 ↗usuario_api_token_revogar(int $id_token, int $id_usuario): boolRevoga um Personal Access Token do usuário informado.
Parameters
$id_tokenint- Identificador do token.
$id_usuarioint- Dono do token.
Returns
usuario_api_tokens_listar
view source · line 982 ↗usuario_api_tokens_listar(int $id_usuario): arrayLista os tokens de um usuário, já anotados com a situação corrente.
Parameters
$id_usuarioint- Dono dos tokens.
Returns
usuario_recovery_codes_gerar
view source · line 1034 ↗usuario_recovery_codes_gerar(int $quantidade = 10): arrayGera códigos de recuperação em texto puro.
Parameters
$quantidadeint- Quantos códigos gerar.
Returns
XXXX-XXXX.usuario_recovery_code_normalizar
view source · line 1063 ↗usuario_recovery_code_normalizar(string $codigo): stringNormaliza um código de recuperação para comparação.
Parameters
$codigostring- Código digitado.
Returns
usuario_recovery_code_hash
view source · line 1077 ↗usuario_recovery_code_hash(string $codigo): stringCalcula o hash de armazenamento de um código de recuperação.
Parameters
$codigostring- Código em texto puro.
Returns
usuario_recovery_code_consumir
view source · line 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.
Parameters
$codigostring- Código digitado pelo usuário.
$hashesarray- Lista de hashes ainda válidos.
Returns
usuario_host_dados
view source · line 1131 ↗usuario_host_dados(array|false $params = false): mixed|arrayObtém dados do usuário do host atual.
Parameters
$paramsarray|false- Parâmetros da função.
Returns