> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mertani.co.id/llms.txt
> Use this file to discover all available pages before exploring further.

# Assign Role

Fitur **Assign Role** digunakan untuk mengubah peran (role) pengguna dalam sistem secara langsung.\
Setiap role memiliki kumpulan **permission** yang berbeda, sehingga perubahan role akan berdampak langsung pada akses dan tindakan yang dapat dilakukan oleh pengguna tersebut.

<Card title="Konsep Role">
  Role adalah representasi kumpulan permission yang telah dikelompokkan berdasarkan fungsi atau tanggung jawab tertentu dalam sistem.\
  Dengan menggunakan role, pengelolaan akses menjadi lebih terstruktur, konsisten, dan mudah dikontrol.
</Card>

***

## Tujuan dan Use Case

Assign role biasanya digunakan dalam beberapa kondisi berikut:

* Perubahan tanggung jawab pengguna (misalnya dari Operator menjadi Admin)
* Penyesuaian akses sementara untuk kebutuhan operasional
* Koreksi kesalahan pemberian role saat pembuatan akun
* Pembatasan akses untuk alasan keamanan

***

## Behavior Sistem

Sistem memiliki mekanisme yang bersifat deterministik saat proses assign role dilakukan:

* Role lama **akan langsung digantikan** oleh role baru (tidak ada multi-role)
* Semua permission akan **mengikuti role yang baru dipilih**
* Perubahan akan **langsung aktif (real-time)** tanpa perlu logout/login ulang
* Tidak ada histori perubahan role secara default (kecuali diaktifkan audit log)

<Callout type="warning">
  Perubahan role dapat langsung mengubah akses pengguna terhadap fitur penting, termasuk akses ke data sensitif atau konfigurasi sistem.\
  Pastikan perubahan dilakukan oleh pihak yang berwenang.
</Callout>

***

## Prasyarat

Sebelum melakukan assign role, pastikan:

* Anda memiliki permission untuk mengelola pengguna
* Role tujuan sudah tersedia di sistem
* Pengguna target sudah terdaftar dan aktif

***

## Langkah Assign Role

<Steps>
  <Step title="Access User Management Page" toc={false}>
    Buka menu `Instansi` → `Manajemen Pengguna` untuk melihat daftar seluruh pengguna dalam sistem.
  </Step>

  <Step title="Search User" toc={false}>
    Gunakan fitur pencarian atau filter untuk menemukan pengguna yang ingin diubah rolenya.

    Filter dapat berupa nama, email, atau status pengguna.
  </Step>

  <Step title="Open Action Menu" toc={false}>
    Klik ikon `...` (action menu) pada baris pengguna yang dipilih untuk membuka opsi tindakan.
  </Step>

  <Step title="Select Change Role" toc={false}>
    Pilih opsi `Ubah Role` dari daftar aksi yang tersedia.
  </Step>

  <Step title="Select User Role" toc={false}>
    Tentukan role baru yang akan diberikan kepada pengguna.

    Pastikan role yang dipilih sesuai dengan kebutuhan akses.
  </Step>

  <Step title="Save Role Changes" toc={false}>
    Klik tombol `Simpan` untuk menerapkan perubahan.

    <Frame>
      <video src="https://mintcdn.com/mertani/yrybY0Cd-4ZXOwAB/assets/dashboard-guides/access-control/change-userrole.webm?fit=max&auto=format&n=yrybY0Cd-4ZXOwAB&q=85&s=820d7c3215d9b301bea023df99e9a8e5" controls autoPlay loop playsInline muted data-path="assets/dashboard-guides/access-control/change-userrole.webm" />
    </Frame>
  </Step>
</Steps>

***

## Dampak Perubahan Role

Setelah role diubah, berikut dampak yang terjadi:

* Menu dan fitur yang tersedia akan menyesuaikan
* Akses ke data tertentu bisa bertambah atau berkurang
* Hak aksi (create, edit, delete, approve) akan berubah
* Beberapa halaman mungkin tidak lagi dapat diakses

## Best Practice

Untuk menjaga keamanan dan konsistensi sistem:

* Gunakan prinsip **least privilege** (akses seminimal mungkin)
* Hindari memberikan role dengan akses tinggi tanpa kebutuhan jelas
* Lakukan review role secara berkala
* Dokumentasikan perubahan role penting (jika tidak ada audit log)

***

## Note

* Assign role bersifat **overwrite**, bukan menambah
* Sistem tidak mendukung multi-role secara default
* Untuk kebutuhan kompleks, gunakan kombinasi role + permission granular (jika tersedia)
