Impersonation (Login as User)
Impersonation adalah fitur krusial di Backoffice (Admin Panel) yang mengizinkan Customer Support atau Administrator tingkat atas untuk secara temporer bertindak ("masuk") sebagai akun Customer spesifik. Fitur ini umumnya digunakan untuk troubleshooting atau melihat tampilan Dashboard sama persis seperti yang dilihat oleh pengguna tersebut.
Alur Cara Kerja Impersonation
Sistem Impersonate di Frog Cloud dirancang tanpa memutus sesi login Admin secara permanen. Admin akan diberikan Cookies otentikasi milik Customer, sementara Cookies otentikasi Admin yang asli akan diamankan atau ditangguhkan hingga Admin memutuskan untuk "Berhenti Impersonate".
Urutan Integrasi API untuk Frontend
Step 1: Memulai Impersonate
Di halaman Backoffice, sediakan tombol khusus seperti "Login sebagai Pengguna Ini" pada detail Customer.
POST /api/backoffice/customer/{id}/impersonate
Content-Type: application/json
(Ganti {id} dengan ID Customer yang bersangkutan. Endpoint ini dilindungi oleh otorisasi Role Admin yang memiliki hak akses impersonate).
Kondisi & Tindakan:
- Sukses (200 OK): Backend merespons dengan header
Set-Cookiebaru yang menimpa sesi Admin Anda menjadi sesi Customer.- Tindakan FE Backoffice: Anda harus segera me-redirect (window.location.href) Admin keluar dari aplikasi Backoffice menuju ke URL aplikasi Customer Dashboard Utama.
- Error (403 Forbidden): Admin tidak memiliki hak akses (role) yang cukup untuk melakukan impersonation.
Step 2: Menandai Status Impersonate di Customer Dashboard
Setelah Admin di- redirect ke Customer Dashboard, aplikasi Customer Dashboard (FE) sebaiknya mendeteksi apakah sesi aktif saat ini adalah sesi Impersonate.
Biasanya, Backend akan menyisipkan klaim JWT khusus (misal: is_impersonating: true atau admin_id: ...) di dalam Payload Cookies tersebut. Jika atribut ini terdeteksi, Frontend Customer Dashboard sangat disarankan untuk menampilkan Banner Peringatan Merah di bagian paling atas layar (contoh: "Anda sedang login sebagai Budi Santoso").
Step 3: Berhenti Impersonate (Stop)
Pada banner peringatan merah yang disebutkan di atas, sediakan tombol "Kembali ke Backoffice" atau "Stop Impersonate".
Tombol ini akan memanggil API:
POST /api/auth/stop-impersonate
Content-Type: application/json
(Catatan: Endpoint ini unik karena berada di bawah payung /api/auth/ (domain publik/Customer), bukan /backoffice/, karena dipanggil saat sesi Admin sedang berada di dalam ruang lingkup Customer).
Kondisi & Tindakan:
- Sukses (200 OK): Backend menghanguskan sesi Customer palsu tersebut dan mengembalikan Header
Set-Cookieyang berisi JWT Admin asli.- Tindakan FE Customer: Redirect Admin kembali ke URL aplikasi Backoffice. Sesi Admin mereka akan pulih seketika tanpa perlu memasukkan username atau password lagi.