Pular para o conteúdo principal

POST /api/login

Autentica um utilizador e retorna um token JWT.

Endpoint

POST /api/login

Headers

HeaderValorObrigatorio
Content-Typeapplication/jsonSim

Corpo da requisicao

{
"email": "string",
"password": "string"
}
CampoTipoObrigatorioDescricao
emailstringSimEndereco de email do utilizador
passwordstringSimPalavra-passe

Resposta de sucesso

Codigo: 200 OK

{
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE3MDUzMTIzNDUsImV4cCI6MTcwNTMxNTk0NSwicm9sZXMiOlsiUk9MRV9BRE1JTiJdLCJlbWFpbCI6ImFkbWluQHBjaC1zaWcuc24ifQ...",
"refresh_token": "d1f2a3b4c5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0",
"user": {
"id": 1,
"email": "admin@pch-sig.sn",
"nomComplet": "Administrateur",
"roles": ["ROLE_ADMIN"]
}
}
CampoTipoDescricao
tokenstringToken JWT de acesso (duracao: 1 hora)
refresh_tokenstringToken de atualizacao (duracao: 7 dias)
userobjectInformacoes do utilizador conectado

Respostas de erro

401 Unauthorized - Credenciais invalidas

{
"code": 401,
"message": "Invalid credentials."
}

400 Bad Request - Dados em falta

{
"code": 400,
"message": "The key \"email\" must be provided."
}

403 Forbidden - Conta desativada

{
"code": 403,
"message": "Account is disabled."
}

Exemplos

cURL

curl -X POST https://sig.ucp-pch.org/api/login \
-H "Content-Type: application/json" \
-d '{
"email": "admin@pch-sig.sn",
"password": "Admin123!"
}'

JavaScript

const login = async (email, password) => {
const response = await fetch('https://sig.ucp-pch.org/api/login', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ email, password })
});

if (!response.ok) {
throw new Error('Authentication failed');
}

const data = await response.json();

// Armazenar o token
localStorage.setItem('token', data.token);
localStorage.setItem('refresh_token', data.refresh_token);

return data;
};

Python

import requests

response = requests.post(
'https://sig.ucp-pch.org/api/login',
json={
'email': 'admin@pch-sig.sn',
'password': 'Admin123!'
}
)

if response.status_code == 200:
data = response.json()
token = data['token']
print(f"Conectado como {data['user']['email']}")
else:
print(f"Erro: {response.json()['message']}")

Utilizacao do token

Apos obter o token, inclua-o no header Authorization para as requisicoes seguintes:

curl https://sig.ucp-pch.org/api/menages \
-H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9..."

Estrutura do token JWT

O token contem as seguintes informacoes (payload descodificado):

{
"iat": 1705312345,
"exp": 1705315945,
"roles": ["ROLE_ADMIN"],
"email": "admin@pch-sig.sn",
"user_id": 1
}
CampoDescricao
iatTimestamp de criacao
expTimestamp de expiracao
rolesFuncoes do utilizador
emailEmail do utilizador
user_idID do utilizador

Notas

  • O token expira apos 1 hora
  • Utilize o refresh_token para obter um novo token sem reinserir as credenciais
  • Nunca armazene o token num local nao seguro
  • Em producao, utilize sempre HTTPS