Ini tentang hak akses dari suatu modul yang kita buat. Intinya saya ingin modul yang saya buat hanya bisa diakses dengan group tertentu.
Kuncinya ada di folder security dari suatu modul.
Agak susah untuk menemukan tutorial tentang hal ini, sampai akhirnya saya coba pahami dan dapat pencerahan deh :)
Oke, kalau kita lihat contoh-contoh modul yang sudah ada, di folder security ada setidaknya 2 file, yaitu:
- ir.model.access.csv
- nama_modul_security.xml
Contoh:
Penjelasan:
- id dan name itu adalah id dan name access control (menu Administrator > Security > Access Control List)
Kita bisa lihat name nya sesuai dengan field name di list access control (tabel ir_model_access)
Kalau id saya belum tahu akan tersimpan di mana ya... - model_id:id
sintaksnya: model_ + nama tabel - group_id:id
id dari group user.
sintaksnya: nama_modul + id_group_user
Nah hal ini yang buat saya bingung, karena yang saya pahami group user itu disetting di menu Administrator > Users > Groups
tapi saya tidak bisa menemukan group contoh: account.group_account_user
Setelah saya uprek2.. akhirnya saya menemukan pencerahan kembali, yaitu dengan melihat file nama_modul_security.xml. Contoh kita bisa lihat id group_account_user di file account_security.xml
<record id="group_account_invoice" model="res.groups">Lihat contoh tersebut, yang menunjukkan bahwa id group_id:id account.group_account_user adalah group name Accounting / Accountant yang didefinisikan di modul account (addons/account).
<field name="name">Accounting / Invoice</field>
</record>
<record id="group_account_user" model="res.groups" context="{'noadmin':True}">
<field name="name">Accounting / Accountant</field>
</record>
<record id="group_account_manager" model="res.groups" context="{'noadmin':True}">
<field name="name">Accounting / Manager</field>
</record>
Sedangkan untuk contoh yang saya buat, saya buat 2 group yaitu:
cash_out_voucher.group_co_voucher_user
dan
cash_out_voucher.group_co_voucher_approval
Yang sebelumnya telah saya definisikan di file cash_out_voucher_security.xml
<record id="group_co_voucher_approval" model="res.groups">
<field name="name">Cash Out Voucher Approver</field>
</record>
<record id="group_co_voucher_user" model="res.groups">
<field name="name">Cash Out Voucher User</field>
</record>
- perm_read, perm_write, perm_create, perm_unlink
Set 1 jika group tersebut mendapatkan akses di tabel yang didefinisikan di model_id:id
Set 0 jika tidak dapat akses
* perm_read: membaca
* perm_write: edit
* perm_create: buat baru
* perm_unlink: hapus data
"update_xml" : [Restart server dan upgrade modul ... selanjutnya tentukan user mana yang berhak masuk di group yang sudah didefinisikan
"security/cash_out_voucher_security.xml",
"security/ir.model.access.csv",
],
Demikan dari saya,
semoga bermanfaat
Tolong koreksi ya kalo ada yang salah...