# Peran Pengguna


OmniStream menggunakan **Role-Based Access Control (RBAC)** dengan
tiga peran: **Agent**, **Supervisor**, dan **Admin**. Peran dihitung
saat login dan disematkan di token JWT agent. Setiap endpoint REST
dan halaman frontend memvalidasi peran sebelum memberikan akses.

![Diagram peran](/screenshots/user-management.png)

## Ringkasan matriks akses

| Area | Agent | Supervisor | Admin |
|------|:-----:|:----------:|:-----:|
| Melihat inbox (assigned to me) | Ya | Ya | Ya |
| Melihat inbox divisi | Tidak | Ya | Ya |
| Melihat inbox seluruh workspace | Tidak | Tidak | Ya |
| Membalas percakapan | Ya (yang assigned ke saya) | Ya (di divisi) | Ya (semua) |
| Transfer percakapan sendiri | Ya | Ya | Ya |
| Transfer percakapan orang lain | Tidak | Ya (di divisi) | Ya |
| Membuat catatan internal | Ya | Ya | Ya |
| Membuat/menghapus tag percakapan | Ya | Ya | Ya |
| Membuka halaman Dashboard | Tidak | Ya | Ya |
| Membuka halaman Analytics | Tidak | Ya | Ya |
| Membuat campaign | Tidak | Ya | Ya |
| Mengelola quick reply (global) | Tidak (hanya favorit pribadi) | Ya | Ya |
| Mengelola agent dan divisi | Tidak | Tidak | Ya |
| Mengelola integrasi (WhatsApp, Instagram, Email) | Tidak | Tidak | Ya |
| Mengelola kebijakan SLA | Tidak | Tidak | Ya |
| Mengelola outgoing webhook | Tidak | Tidak | Ya |
| Mengelola CSAT | Tidak | Tidak | Ya |
| Melihat Activity Log | Tidak | Ya (divisi) | Ya (semua) |

## Agent

**Agent** adalah front-liner yang langsung berinteraksi dengan
pelanggan. Mereka menghabiskan sebagian besar waktu di
[`/inbox`](/panduan/agent/inbox), membalas pesan, membuat catatan, dan
mentransfer percakapan saat diperlukan.

### Halaman yang dapat diakses agent

- `/inbox` — kotak masuk percakapan ditugaskan
- `/contacts` — direktori kontak (hanya baca untuk yang tidak terkait
  dengan percakapan aktif mereka)
- `/quick-replies` — daftar quick reply workspace + favorit pribadi
- `/profile` — profil pribadi, ganti password

### Yang tidak bisa dilakukan agent

- Tidak dapat melihat percakapan milik agent lain kecuali divisi yang
  sama dan supervisor sudah mengizinkan.
- Tidak dapat membuka dashboard analytics atau laporan kinerja.
- Tidak dapat menghapus quick reply global atau mengelola integrasi.
- Tidak dapat melihat pesan pelanggan di divisi lain.

## Supervisor

**Supervisor** memimpin sebuah atau beberapa divisi. Mereka memantau
kinerja agent, menangani eskalasi, membuat campaign broadcast, dan
menjaga SLA tetap terpenuhi.

### Halaman yang dapat diakses supervisor

- Semua halaman agent, plus:
- [`/dashboard`](/panduan/supervisor/dashboard) — metrik real-time
- [`/analytics`](/panduan/supervisor/analytics) — laporan jangka panjang
- [`/campaigns`](/panduan/supervisor/campaign) — broadcast WhatsApp
- [`/sla-policies`](/panduan/admin/kebijakan-sla) — baca saja, tidak
  dapat mengubah
- `/agents` — daftar agent di divisinya (baca saja)

### Yang ditambahkan dari agent

- Menerima **semua** event WebSocket untuk divisinya — bukan hanya
  percakapan yang ditugaskan kepadanya.
- Dapat men-transfer percakapan milik agent lain di divisi.
- Dapat melihat Activity Log divisi (siapa mengubah apa, kapan).
- Dapat melihat leaderboard kinerja agent.

### Yang tidak bisa dilakukan supervisor

- Tidak dapat menambah/menghapus agent, divisi, atau integrasi
  channel.
- Tidak dapat mengubah kebijakan SLA, CSAT, atau outgoing webhook.
- Tidak dapat melihat percakapan di divisi lain.

## Admin

**Admin** memiliki akses penuh ke workspace. Peran ini dialokasikan
untuk pemilik sistem atau operator IT yang bertanggung jawab atas
konfigurasi teknis dan kepatuhan.

### Halaman khusus admin

- [`/user-management`](/panduan/admin/manajemen-pengguna) — CRUD agent
- [`/integrations`](/panduan/integrasi/whatsapp) — konfigurasi channel
- [`/sla-policies`](/panduan/admin/kebijakan-sla) — buat/edit
  kebijakan SLA
- [`/outgoing-webhooks`](/panduan/admin/outgoing-webhooks) — webhook
  ke sistem eksternal
- `/settings` — pengaturan umum workspace
- Activity Log lengkap (seluruh workspace)

### Tanggung jawab tipikal admin

- Onboarding agent baru dan assign ke divisi.
- Konfigurasi awal integrasi WhatsApp (kredensial Meta Cloud API),
  Instagram (OAuth), dan Email (SMTP).
- Menetapkan kebijakan SLA dan mengaktifkan CSAT.
- Men-setup campaign broadcast dan memvalidasi template WhatsApp.
- Mengaudit Activity Log saat terjadi insiden.
- Mengelola outgoing webhook ke sistem downstream (data warehouse,
  CRM eksternal, BI tool).

## Bagaimana peran divalidasi

Setiap permintaan API harus disertai token login yang valid. Permintaan dengan peran yang tidak mencukupi akan ditolak dengan HTTP 403 secara otomatis.

## Mengubah peran agent

Admin dapat mengubah peran seorang agent dari
[`/user-management`](/panduan/admin/manajemen-pengguna):

1. Klik nama agent.
2. Pilih peran baru dari dropdown.
3. Klik **Save**.

Perubahan disimpan melalui [API Reference](/api) — lihat endpoint **Agents**.

Agent harus **logout dan login ulang** agar JWT baru dengan peran
baru terbentuk. Token lama tetap valid hingga kedaluwarsa (default
24 jam), jadi untuk perubahan mendesak, admin dapat memaksa logout
via endpoint invalidasi token.

> **Catatan:** Jangan memberikan peran Admin ke lebih dari 2–3 orang.
> Semakin sedikit akun admin, semakin kecil risiko kompromi. Gunakan
> supervisor untuk kebutuhan monitoring harian.

## Pengalaman WebSocket per peran

WebSocket server menyalurkan event berdasarkan peran:

- **Admin** menerima semua event dari semua divisi.
- **Supervisor** menerima event untuk divisi yang disupervisinya.
- **Agent** hanya menerima event untuk percakapan yang ditugaskan
  kepadanya sendiri.

Event yang diterima disesuaikan secara otomatis berdasarkan peran Anda — Anda tidak perlu mengonfigurasi apa pun.

---

Baca selanjutnya: [Login pertama](/panduan/memulai/login).
