Hak akses berdasarkan grup user, mungkin ini agak membingungkan untuk beberapa developer yang masih awam tentang konsep hak akses di Odoo. Pada intinya adalah, setiap user yang mengakses aplikasi mempunyai grup tersendiri. Dengan melakukan pengaturan grup user kita bisa membedakan tampilan menu berdasarkan grup, membatasi akses user terhadap model, dan masih banyak lagi.
Sebagai pengenalan, silakan baca link referensi ini terlebih dahulu.
Kali ini saya akan membuat tutorial dengan skenario sebagai berikut.
- Ada beberapa user yang tergabung dalam grup karyawan, dan ada beberapa user lain yang tergabung dalam grup manager.
- Pada grup karyawan hanya bisa mengakses data yang diinput oleh dirinya sendiri, sedangkan pada grup manager bisa mengakses data yang diinput oleh semua karyawan.
Buat modul baru di Odoo.
Untuk mempermudah, kita buat modul baru saja, agar kita bisa belajar tentang hak akses dengan benar. Modul baru ini saya beri nama “cj_tutor_access_right”. Lalu kita aktifkan debug mode.
Buat beberapa user baru.
Sebelum melangkah ke pengaturan grup, kita buat beberapa user baru. Masuk ke menu “Settings” → “Users” → “Users”. Hasil penambahan user baru bisa dilihat pada gambar dibawah.
Untuk tampilan form bisa dilihat seperti gambar dibawah ini.
Buat grup user baru.
Untuk membuat grup user baru, bisa masuk ke menu “Settings” → “Users” → “Groups”. Di menu tersebut kita bisa membuat grup dengan cara manual. Akan tetapi, saya tidak menyarankan developer untuk menggunakan menu UI ini.
Untuk developer kita juga bisa dengan membuat grup dengan cara membuat xml record. Buat file berekstensi xml, lalu buat xml record seperti kode dibawah ini. Jangan lupa menambahkan nama file pada manifest.
Bagi saya lebih mudah dan cepat membuat xml record daripada harus membuat record melalui UI. Ada beberapa keterangan yang saya tulis di kode diatas, mohon dipahami terlebih dahulu, agar tidak bingung dalam memahami model res.groups ini.
Di kode diatas kita juga melihat ada eval=”[(4, ref(‘cj_tutor_access_right.group_employee’))]”, Untuk memahami mengapa ada nilai 4, silakan buka link referensi ini, baca mulai tulisan ‘One2many and Many2many use a special “commands” format to .…‘.
Hasil dari record diatas bisa dilihat seperti gambar dibawah ini.
Atur grup yang dimiliki oleh user.
Untuk mengatur grup oleh user silakan masuk ke “Settings” → “Users” → “Users”. Sekarang ada field baru yang berbentuk dropdown “Tutor Access Right” pada tab “Access Rights”.
Pada user “Administrator” dan “Demo User” saya atur grupnya pada “Manager”, sedangkan user “Demo User 2” saya atur grupnya pada “Karyawan”.
Untuk mengecek user sebagai anggota dari grup, bisa dilihat di menu “Settings” → “Users” → “Groups”, lalu pilih grup dan lihat pada tab “Users”. Contohnya bisa dilihat pada gambar dibawah.
Buat model dummy.
Buat sebuah model dummy untuk mencoba grup yang baru dibuat.
Buat juga xml view dari model diatas.
Pada kode diatas bisa dilihat ada menuitem yang mempunyai properti ‘groups’. Properti ‘groups’ hanya digunakan untuk membatasi hak akses ke menuitem saja, tetapi tidak membatasi ke model. Untuk membatasi hak akses user pada model, bisa menggunakan “Access Control List”. “Access Control List” bisa kita edit di file security/ir.model.access.csv.
Ubah file security/ir.model.access.csv
Buka file security/ir.model.access.csv ubah menjadi seperti dibawah ini. Jangan lupa tambahkan file pada manifest.
Saya sarankan untuk menggunakan aplikasi Libre Office saja saat melakukan edit di file yang berekstensi *.csv.
Keterangan file security/ir.model.access.csv:
- id = id dari record Access Control List, isinya bisa sembarang, tergantung kebiasaan anda
- name = name dari record Access Control List, , isinya bisa sembarang juga
- model_id = nama model yang akan dibatasi, aturan penulisannya model_namamodel. Jika nama model mempunyai karakter titik (.) ubah dengan underscore (_).
- group_id = id grup user yang akan dibatasi
- perm_read = permission (ijin) untuk membaca record, bernilai 1 (true) atau 0 (false)
- perm_write = permission (ijin) untuk mengubah record, bernilai 1 (true) atau 0 (false)
- perm_create = permission (ijin) untuk membuat record, bernilai 1 (true) atau 0 (false)
- perm_unlink = permission (ijin) untuk menghapus record, bernilai 1 (true) atau 0 (false)
Selain melalui file security/ir.model.access.csv kita bisa menambahkan akses kontrol di menu “Settings” → “Security” → “Access Control List”.
Setelah langkah – langkah diatas dijalankan, maka hasilnya bisa dilihat pada gambar dibawah ini.
Pada gambar di atas, user “Demo User” tampil 2 menu yaitu menu karyawan dan menu manager. Sedangkan pada user “Demo User 2” hanya tampil 1 menu yaitu menu karyawan.
Input data dummy.
Sekarang kita input beberapa data untuk percobaan, dengan menggunakan user “Demo User” dan “Demo User 2”.
Pada gambar di atas, user “Demo User” menu karyawan hanya menampilkan data inputan sendiri. Sedangkan pada menu manager menampilkan data inputan semua user. Pada user “Demo User” juga mempunyai akses untuk menghapus record. Sedangkan pada user “Demo User 2”, tidak mempunyai akses untuk menghapus record.
Sekian, selamat mencoba. Semoga bermanfaat.
Baca juga:
Ping-kembali: Tips dan Trik Pengaturan Grup User di Odoo - Cak Juice
Ping-kembali: Pengaturan Record Rule Berdasarkan Grup User di Odoo - Cak Juice
Ping-kembali: Pengaturan Odoo Grup User - Cak Juice