Skip to Content
BackofficeAccountLinked Devices

Linked Devices (Perangkat Terhubung)

CodeACC-DEV
ModuleAccount
TypeSession management
StatusImplemented
PriorityP1
ProcessKeamanan akun pribadi
API[URL Postman]

1. Overview

Perangkat Terhubung menampilkan semua sesi login aktif milik pengguna: perangkat, platform, browser, alamat IP, lokasi (kota/negara), dan waktu aktivitas terakhir. Perangkat yang sedang dipakai ditandai Perangkat Ini. Pengguna bisa mencabut satu perangkat, yaitu mengeluarkan sesi di perangkat itu, atau mencabut semua perangkat sekaligus. Perangkat bisa dilihat sebagai kartu (grid) atau di peta.

Hasil yang diharapkan: pengguna bisa mendeteksi login yang tidak dikenal dan segera mengeluarkannya.

2. Problem

  • Pengguna sering login di perangkat bersama (komputer kasir, ponsel rekan) dan lupa logout.
  • Login dari lokasi tak dikenal tidak terdeteksi tanpa daftar sesi.
  • Setelah perangkat hilang, pengguna perlu cara mengeluarkan sesi dari jarak jauh.

3. Goals & Non-goals

Goals

  • Pengguna melihat semua sesi aktifnya. Indikator: daftar perangkat dengan lokasi dan aktivitas terakhir.
  • Pengguna bisa mengeluarkan sesi mana pun. Indikator: cabut satu perangkat atau semua perangkat.

Non-goals

  • Admin mencabut sesi pengguna lain
  • Notifikasi otomatis saat ada login baru
  • Memberi nama perangkat secara manual

4. User Scenarios

RoleScenario
KasirMencabut sesi di komputer kasir lama yang lupa di-logout
OwnerMelihat peta dan menemukan login dari kota yang tidak dikenal, lalu mencabutnya
Semua penggunaPonsel hilang; mencabut semua perangkat dari laptop

5. User Flow

  1. Daftar perangkat — Perangkat Ini selalu di urutan pertama dan ditandai cincin warna utama. Setiap kartu menampilkan nama perangkat, ikon sesuai tipe, badge Perangkat Ini / Perangkat Lain, tipe, platform, browser, user agent, IP, kota, negara, dan aktivitas terakhir. Pilihan tampilan grid/peta disimpan di browser.
  2. Cari — Menyaring berdasarkan nama perangkat (di sisi klien).
  3. Cabut satu — Tombol cabut hanya ada pada perangkat lain; konfirmasi “Perangkat akan langsung dikeluarkan”.
  4. Cabut semua — Tombol di header; konfirmasi “Anda akan keluar dari semua sesi aktif”.
  5. Sesi berakhir — Toast sukses, daftar dimuat ulang.
  6. Semua sesi berakhir — Toast sukses, daftar dimuat ulang (lihat EC-01).

Alternative paths

  • Tampilan peta — Perangkat yang punya koordinat tampil sebagai marker. Peta menyesuaikan batas agar semua marker terlihat, atau berpusat pada satu titik bila hanya satu. Marker menampilkan tooltip dan popup detail beserta tombol cabut.

6. User Stories

Prioritas: P0 wajib untuk rilis, P1 penting, P2 kalau sempat.

US-01 — Melihat perangkat terhubung (P1)

Sebagai pengguna, saya ingin melihat semua sesi login saya, agar tahu perangkat mana yang masih masuk.

IDKriteria penerimaan
AC-01.1Perangkat Ini ditampilkan paling atas dan ditandai.
AC-01.2Setiap perangkat menampilkan tipe, platform, browser, user agent, IP, kota, negara, dan aktivitas terakhir; nilai kosong memakai fallback.
AC-01.3Pencarian menyaring berdasarkan nama perangkat.
AC-01.4Skeleton tampil selama data dimuat.

US-02 — Tampilan peta (P2)

Sebagai owner, saya ingin melihat lokasi login di peta, agar login mencurigakan mudah terlihat.

IDKriteria penerimaan
AC-02.1Hanya perangkat dengan latitude dan longitude yang tampil sebagai marker.
AC-02.2Peta menyesuaikan batas ke semua marker; bila satu marker, peta berpusat padanya.
AC-02.3Marker punya tooltip dan popup detail dengan aksi cabut (untuk perangkat lain).
AC-02.4Pilihan tampilan grid/peta tersimpan di browser.

US-03 — Mencabut satu perangkat (P1)

Sebagai pengguna, saya ingin mengeluarkan sesi di perangkat tertentu.

IDKriteria penerimaan
AC-03.1Aksi cabut hanya tersedia untuk perangkat selain Perangkat Ini.
AC-03.2Setelah konfirmasi, sesi perangkat berakhir, toast sukses tampil, dan daftar dimuat ulang.

US-04 — Mencabut semua perangkat (P1)

Sebagai pengguna, saya ingin keluar dari semua sesi sekaligus.

IDKriteria penerimaan
AC-04.1Tombol Cabut Semua Perangkat tersedia di header dengan konfirmasi.
AC-04.2Setelah berhasil, semua sesi (termasuk perangkat ini, sesuai teks konfirmasi) berakhir.

7. Document Structure

FieldRequiredDefaultNotes
idId sesi/perangkat
Nama perangkat (device_name)Fallback “Tidak Ada Nama Perangkat”
Tipe perangkat (device_type)Fallback “Tidak Ada Tipe Perangkat”Menentukan ikon
Platform, Browser, User Agent
Alamat IP
Kota, NegaraDari geolokasi IP (BE)
latitude, longitudeUntuk peta; nullable
Aktivitas terakhir (last_activity_at)Tanggal dan jam
Perangkat Ini (is_current_device)Ditentukan BE dari sesi saat ini

8. Status Lifecycle

StatusLabel UIMeaningEditableNext status
AktifTampil di daftarSesi masih berlakuDicabut
DicabutTidak tampilSesi berakhir, perangkat harus login ulang

9. Permissions & Actions

Permissions

ActionPermissionSyarat tambahan
Lihat dan cabut perangkatPengguna login; hanya sesi milik sendiri

Actions by status (✓ tersedia)

ActionPerangkat IniPerangkat Lain
Lihat detail
Cabut
Tercakup Cabut Semua

10. Business Rules

Aturan bisnis adalah ketentuan yang berlaku di semua layar dan semua aksi, siapa pun yang melakukannya. FE memakainya sebagai validasi di form, BE memakainya sebagai sumber kebenaran; jika keduanya berbeda, perilaku BE yang dianggap benar dan FE menyesuaikan.

  • BR-01 Satu perangkat = satu sesi login (token refresh) milik pengguna.
  • BR-02 Perangkat yang sedang dipakai tidak bisa dicabut satu per satu (gunakan logout).
  • BR-03 Mencabut perangkat membuat sesi perangkat itu tidak berlaku; request berikutnya dari perangkat itu harus gagal dan diarahkan ke login.
  • BR-04 Lokasi dan koordinat ditentukan BE dari alamat IP dan bersifat perkiraan.
  • BR-05 Pencarian dilakukan di klien terhadap daftar yang sudah dimuat.

11. Edge Cases

Edge case adalah kondisi yang jarang terjadi tetapi pasti muncul di operasional nyata. Perilaku yang diharapkan ditetapkan di sini agar tidak diputuskan sendiri-sendiri saat implementasi.

IDCaseExpected behavior
EC-01Cabut Semua termasuk perangkat iniFE hanya memuat ulang daftar dan tidak langsung logout; pengguna baru keluar saat request berikutnya ditolak. Sebaiknya FE langsung mengarahkan ke login setelah berhasil
EC-02Perangkat tanpa koordinatTidak tampil di peta, tetap tampil di grid
EC-03Tidak ada perangkat dengan koordinatPeta berpusat di [0, 0] tanpa marker
EC-04Nama/tipe perangkat tidak terdeteksiMenampilkan teks fallback
EC-05Sesi dicabut saat perangkat itu sedang dipakaiRefresh token gagal; perangkat diarahkan ke login

12. API Contract

ActionMethodEndpointRef
Daftar perangkatGET/api/auth/devicesUS-01, US-02
Cabut satu perangkatDELETE/api/auth/devices/:idUS-03
Cabut semua perangkatPOST/api/auth/devices/revoke-allUS-04

13. Dependencies

PRD terkait

  • My Account — keamanan akun (ganti kata sandi, lalu cabut sesi lain).
  • Notifications — subscription push terikat ke browser/perangkat.

Infrastruktur

  • Auth refresh terkoordinasi (proxy + lock) — sesi yang dicabut harus gagal saat refresh.
  • Komponen peta (MapLibre).
Last updated on