Lewati ke konten utama

API Autentikasi

Gunakan endpoint berikut untuk membuat, memeriksa, memperbarui, dan mencabut sesi pengguna.

Path dasar: /api/auth

Ringkasan endpoint

MetodePathAutentikasiTujuan
POST/loginPublikMenukar kredensial dengan token akses
GET/sessionHeader AuthorizationMemvalidasi sesi saat ini
GET/meToken bearerMengambil data pengguna saat ini
POST/logoutToken dalam body JSONMencabut token sesi yang diberikan
POST/logout-allToken bearerMencabut seluruh sesi milik pengguna saat ini

Autentikasi bearer

Kirim token yang diperoleh dari proses login pada endpoint yang dilindungi:

Authorization: Bearer <access_token>

Login

POST /api/auth/login

Lakukan autentikasi dengan nama pengguna dan kata sandi.

Autentikasi: Publik

Body permintaan: application/json

KolomTipeWajibDeskripsi
usernamestringYaNama pengguna Sociovite
passwordstringYaKata sandi akun
{
"username": "your_username",
"password": "your_password"
}

Respons berhasil — 200 OK:

{
"token": "eyJhbGciOi...",
"expires_at": "2026-07-29T23:26:03.041292+07:00",
"roles": [
"user"
],
"user": {
"userId": "user_id",
"name": "user",
"email": "user@example.com",
"username": "user"
}
}

Gunakan token sebagai token akses bearer. Kontrak API mendefinisikan expires_at sebagai string dan tidak membatasi format tanggalnya.

Respons lainnya:

StatusArti
400Body permintaan tidak valid atau kredensial tidak lengkap
401Kredensial tidak valid
curl -X POST \
"$SOCIOVITE_API_URL/api/auth/login" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"username": "your_username",
"password": "your_password"
}'

Memvalidasi sesi

GET /api/auth/session

Validasi token akses yang diberikan dan kembalikan identitas sesi.

Header wajib:

Authorization: Bearer <access_token>

Respons berhasil — 200 OK:

{
"valid": true,
"expires_at": "2026-07-29T23:26:03.041292+07:00",
"roles": [
"admin"
],
"user": {
"userId": "user_id",
"name": "Admin",
"email": "admin@example.com",
"username": "admin"
}
}

Respons lainnya: 401 jika token tidak valid atau tidak diberikan.

curl \
"$SOCIOVITE_API_URL/api/auth/session" \
-H 'accept: application/json' \
-H 'Authorization: Bearer <access_token>'

Mengambil data pengguna saat ini

GET /api/auth/me

Kembalikan data pengguna yang diwakili oleh token bearer.

Autentikasi: Token bearer

Respons berhasil — 200 OK:

{
"userId": "user_id",
"name": "Admin",
"email": "admin@example.com",
"username": "admin"
}

Respons lainnya: 401 jika token tidak memiliki otorisasi atau tidak valid.

curl \
"$SOCIOVITE_API_URL/api/auth/me" \
-H 'accept: application/json' \
-H 'Authorization: Bearer <access_token>'

Logout dari satu sesi

POST /api/auth/logout

Batalkan sesi yang diwakili oleh token yang diberikan. Swagger mendeskripsikan nilai body ini sebagai token refresh.

Autentikasi: Tidak ada header bearer yang didefinisikan. Token dikirim melalui body.

Body permintaan: application/json

KolomTipeWajib
tokenstringYa
{
"token": "current_access_token"
}

Respons berhasil — 200 OK:

{
"success": true,
"message": "Logout successful"
}

Respons lainnya:

StatusArti
400Permintaan tidak valid
401Token tidak valid
curl -X POST \
"$SOCIOVITE_API_URL/api/auth/logout" \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"token": "current_access_token"
}'

Logout dari semua perangkat

POST /api/auth/logout-all

Batalkan seluruh sesi yang terkait dengan pengguna terautentikasi.

Autentikasi: Token bearer

Body permintaan: Tidak ada

Respons berhasil — 200 OK:

{
"success": true,
"message": "All sessions revoked",
"revoked": 3
}

revoked adalah jumlah sesi yang dibatalkan.

Respons lainnya: 401 jika permintaan tidak memiliki otorisasi.

curl -X POST \
"$SOCIOVITE_API_URL/api/auth/logout-all" \
-H 'accept: application/json' \
-H 'Authorization: Bearer <access_token>'

Bentuk respons error

Error autentikasi menggunakan model error bersama:

{
"success": false,
"error": "Invalid credentials",
"message": "Unable to authenticate the request"
}