Core Docs
Backend

Usuários e Autenticação

Cadastro de usuários, login, refresh token e invalidação de sessão.

Usuário (user)

Entidade: UserEntity — estende BaseEntity. Campos: name, email (único), password (hash), phoneNumber, tokenVersion (contador usado pra invalidar tokens antigos, ver abaixo), lastPasswordChangeAt, userRoles (papéis atribuídos — ver Permissões).

Endpoints (/gnoqcore/v1/user)

MétodoRotaPermissão
POST/user:create
GET/{id}, /email/{email}, / (lista)user:read
PUT/{id}user:update
PATCH/{id}/passworduser:update — reset de senha feito por um admin
PATCH/{id}/restoreuser:update
DELETE/{id}/trash, /{id}/forceuser:delete

Autenticação (security/authentication)

Login por email/senha, com access token de vida curta e refresh token rotativo — sessões ficam registradas no banco (UserSessionEntity), não só no JWT, o que permite revogar remotamente.

Fluxo de login

  1. POST /gnoqcore/v1/auth/login com email/senha (email normalizado, case-insensitive)
  2. Backend gera dois JWTs:
    • Access token — expira em 15 min (configurável), carrega userId, tokenVersion, roles, permissions
    • Refresh token — expira em 7 dias (configurável), carrega userId, tokenVersion, jti (identifica a sessão)
  3. Uma UserSessionEntity é criada com o jti, device (user-agent), ipAddress e expiresAt

Refresh (rotativo)

POST /gnoqcore/v1/auth/refresh recebe o refresh token, valida assinatura + expiração + que a sessão (jti) ainda existe e não foi revogada, revoga a sessão antiga e emite um par novo (access + refresh). Isso significa que um refresh token só pode ser usado uma vez — se for reaproveitado após já ter sido trocado, a sessão associada já estará revogada e a chamada falha.

Logout

DELETE /gnoqcore/v1/auth/logout:

  • Sessão única: revoga só o jti daquele refresh token — outras sessões/dispositivos continuam válidas.
  • Todas as sessões (type=ALL_SESSIONS): revoga todas as sessões do usuário e incrementa tokenVersion, o que invalida imediatamente qualquer access token já emitido (mesmo os que ainda não expiraram), porque cada request valida tokenVersion do token contra o valor atual no banco.

Trocar de senha (PATCH /gnoqcore/v1/auth/change-password) também incrementa tokenVersion — força logout em todos os dispositivos.

Outros endpoints

MétodoRotaAuthDescrição
POST/auth/registerpúblicaCria usuário (valida política de senha, email único)
POST/auth/loginpúblicaLogin
POST/auth/refreshpública (token no body)Renova o par de tokens
DELETE/auth/logoutautenticadoLogout (sessão única ou todas)
GET/auth/meautenticadoDados do usuário logado (a partir das claims do JWT)
PATCH/auth/change-passwordautenticadoTroca de senha self-service

Usuário soft-deletado não consegue logar.

On this page