Pengaturan Record Rule Odoo Berdasarkan Grup User

Pada tutorial sebelumnya Pengaturan Hak Akses Berdasarkan Grup di Odoo kita hanya mengatur hal – hal yang bisa dilakukan oleh grup user pada sebuah record. Grup ‘employee’ bisa melakukan read, write, create. Sedangkan grup ‘manager’ bisa melakukan read, write, create, update.

Pada menu “Menu Tutor Hak Akses Manager” semua user yang menjadi anggota grup ‘manager’ bisa melakukan read, write, create, update. Hal ini bisa menyebabkan user grup mempunyai kendali penuh pada sebuah record.

Sekarang saya ingin membatasi bahwa hanya user yang membuat record (kreator) yang bisa mengubah / mengedit record tersebut. Itulah yang dinamakan “record rule“. Record rule adalah cara mengatur hak akses di tiap – tiap record

Gambar dibawah ini adalah record awal yang saya punya. Dimana ada 4 record, 2 record dibuat oleh user ‘demo’, dan 2 record sisanya dibuat oleh user ‘demo2’.

Hasil akhir yang saya inginkan adalah user ‘demohanya bisa mengubah data pada record ke-1 dan ke-2, sedangkan record ke-3 dan ke-4 hanya bisa diubah oleh user ‘demo2’. Dan sebaliknya.

Buat file record xml ‘ir.rule’ di Odoo.

Sekarang buat sebuah file record xml untuk model ‘ir.rule‘ seperti dibawah ini. Dan tambahkan pada manifest.

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
	<data>
		<record model="ir.rule" id="cj_tutor_access_right.only_creator_can_modify">
			<field name="name">only.creator.can.modify</field>
			<field name="model_id" ref="model_cj_tutor_access_right"/>
			<field name="groups" eval="[(4, [ref('cj_tutor_access_right.group_manager'), ref('cj_tutor_access_right.group_employee')])]"/>
			<field name="perm_read" eval="0"/>
			<field name="perm_write" eval="1"/>
			<field name="perm_create" eval="0"/>
			<field name="perm_unlink" eval="0"/>
			<field name="domain_force">[('create_uid', '=', user.id)]</field>
		</record>
	</data>
</odoo>

Penjelasan dari kode diatas adalah:

  • name = isi dengan name terserah, yang penting menggambarkan rule tersebut.
  • model_id = isi dengan nama model, aturan penulisannya model_namamodel. Jika nama model mempunyai karakter titik (.) ubah dengan underscore(_).
  • groups = isi dengan res.groups yang terimplikasi dari rule yang kita buat. Bertipe Many2many, bisa diisi lebih dari 1 record. Jika tidak diisi (bernilai None) maka rule bersifat mengikat ke semua grup user.
  • 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).
  • domain_force = isi dengan domain filter kebutuhan rule.

Nb: Setiap model yang didefinisikan di Odoo, secara otomatis Odoo membuat field tambahan yaitu id, create_uid, write_uid, create_date, write_date.

Selain dengan menggunakan record xml, anda juga bisa membuat record rule melalui debug mode masuk ke menu “Settings” → “Security” → “Record Rules”.

Odoo record rule
Odoo record rule

Hasilnya seperti contoh gambar dibawah ini.

Jika saya login dengan user ‘demo’ lalu coba melakukan ubah data pada record yang dibuat oleh user ‘demo2’, maka akan terjadi peringatan “Access Error” seperti gambar dibawah ini.

Kode untuk tutorial ini bisa dilihat di repository github saya.

Selamat mencoba. Semoga bermanfaat.

Baca juga: Pengaturan Hak Akses Berdasarkan Grup.

Comments

4 komentar untuk “Pengaturan Record Rule Odoo Berdasarkan Grup User”

  1. Ping-kembali: Tips dan Trik Pengaturan Grup User di Odoo - Cak Juice

  2. Ping-kembali: Pengaturan Hak Akses Berdasarkan Grup User di Odoo - Cak Juice

  3. Ping-kembali: Pengaturan Odoo Grup User - Cak Juice

  4. Ping-kembali: Pengaturan Odoo Hak Akses - Cak Juice

Komentar ditutup.