Odoo 14, Community edition,
I need to make `Hierarchical Access Rights Control` (HARC), managed as a tree
e.g. on the highest level I have `Domain`, then `Sub-Domain`, then `Project`, then `Sub-Project`.
So that a user in a specific level (node) of the tree can access data in all sub-branches.
Example:
Domain: Community,
Sub-Domain: Children
Project: WonderWell Preschool
Sub-Project: Yoga
A user that is assigned to Community can access all data in Community and its sub branches, e.g. Children, WonderWell Preschool, Yoga
But a user that is assigned to `WonderWell Preschool` can access only `WonderWell Preschool` and `Yoga`
The purpose is to hide data that is not relevant for a specific user, for efficiency and privacy reasons.
I couldn't find a way to do it with odoo:
I looked at modules Project, Security (Access Rights), and Accounting.
I saw that in Groups I can set `Inherited` but
1. I need inheritance to be set automatically on the tree sub branches
2. It seems that I can only set Access right for a module/menu but not on a specific instance
I need each data instance in the system to be assign to a specific node in the HARC tree, so that if a user that is assign to a specific node create the data, the data will automatically have the same HARC node.
When the data is displayed it will be automatically filter according to the HARC tree aub branches.
I couldn't find any way to do it in odoo, please correct me if I'm wrong
I would like to implement it myself, for the following modules: Accounting, CRM, Project, Attendance, Expenses, Calendar.
I'm a very capable developer, and did similar development on other open-source projects (prestashop, wordpress), but I'm relatively new to odoo.
My questions are:
1. How difficult it is to implement such a change for a very capable developer that is new to odoo in terms of time.
2. Can someone suggest on the best way to approach this problem
3. Is there any similar hierarchical structure in Odoo that I can use to learn how it should be done?
Note: I'm well aware that odoo was not design in such a way, and making such a change might break other modules, and can cause unexpected bugs, but still I would like to estimate the work, and understand how I should approach this.
I will appreciate any help or insight on the matter.