Access Control — Hide & Lock Fields, Buttons, Menus, Records by Role
by TLL Studios https://tlldevelopers.com/$ 92.16
Odoo access control · in context
Decide who sees and does what â right from the screen.
Hide or lock fields, buttons, menus, tabs, filters, whole view types, model actions and records for any role â set straight from the record you are looking at, and enforced on the server, not just hidden in the interface.
The problem
In Odoo, most permissions live in code.
To hide a field, block a button or restrict a menu for one role, someone usually edits XML, adds a group to a view, or writes an ir.rule by hand. The person who knows who should see what â the administrator â canât do it from where the problem actually is: the screen in front of them. And when an add-on only hides a field in the interface, that field is often still writable through an import or an API call.
This module fixes both. You set access from the screen, and it is enforced for real.
How it works
Three clicks, no configuration screen.
Turn on access mode, click the thing you want to restrict, pick the role. Thatâs the whole workflow.
Turn on access mode
Click the lock in the systray. The screen becomes clickable â every field, button, menu and tab is now a target.
Click what to restrict
Point at the actual element â a field, the New button, a menu item, a notebook tab, a search filter. A small panel opens right there.
Pick the role & rule
Choose the role and whether to hide, make read-only or required â for this view or the whole model. Done.
One tool, nine kinds of access
Everything youâd otherwise touch code for.
The same in-context click covers the whole surface of the interface â and the model behind it.
Fields
Hide, make read-only or required â per view or across the whole model.
Buttons
Hide any object or action button on a form or list for a role.
Menus
Hide a single submenu â or the whole parent menu â from a role.
Model capabilities
Create, edit, delete, duplicate, archive, export â blocked in UI and server.
Actions & reports
Remove print menus and server actions from the cog for a role.
View types
Take away List, Kanban, Pivot, Calendar⦠switchers a role shouldnât use.
Notebook tabs
Hide an entire tab inside a form â the whole page, not just its fields.
Search filters
Hide specific filters and group-bys from the search menu.
Records (row level)
Limit which rows a role sees: their own, their company, or a custom domain.
Why itâs different
Hidden is not the same as locked.
Most access add-ons only tidy up the interface. A hidden field can still be written by an import or an API call. This one closes every door with the same rule.
The interface
The field, button or menu disappears from the screen.
The server (ORM)
Create, write, delete, archive and export are checked and refused.
Imports & API (RPC)
The same wall applies â even a spreadsheet import or external call is stopped.
Read-only and required are enforced the same way. Hidden fields are also blanked in the data a restricted user reads back â not just removed from the form.
How it compares
Set from the screen. Locked on the server.
| What you get | Typical UI-only add-on | Access Control |
|---|---|---|
| Hide fields & buttons in the interface | â | â |
| Set it from the screen â no XML, no dev | sometimes | â |
| Field stays unwritable by import / API | â | â |
| Block create / edit / delete / export on the server | â | â |
| Row-level record rules (own / company / domain) | â | â |
| Menus, view types, tabs & filters too | partial | â |
| Preview the interface as another role | â | â |
| No activation key · your data never leaves Odoo | varies | â |
Preview as role
See Odoo exactly as another role sees it.
Pick a role and the whole interface re-renders as that role would experience it â hidden fields gone, blocked buttons gone, restricted menus gone. Without ever touching your own groups.
- Check a rule in one second, instead of creating a test user and logging out.
- Your admin account keeps all its own access â nothing is changed on your user.
- Only administrators can preview â the impersonation canât be abused to bypass rules.
Record-level access
Limit which rows a role can even see.
Not just how fields look â which records exist for a role. Choose a scope and the module writes a proper Odoo record rule for you, combined safely so a permissive rule elsewhere canât undo it.
Stay in control
Every rule for this screen, one click away.
From any record, jump straight to all the access rules that touch this model and this view â already filtered. Review whatâs restricted, for whom, and switch a rule off without hunting through a settings list. And a rule affects one role: the most restrictive one wins, so access only ever subtracts, never leaks.
Built the honest way
Native mechanics. No lock-in.
Safe by default
With no rules, everything stays visible and editable. Each rule only subtracts access from one role.
Uses Odooâs own layers
Access checks run in the ORM; row rules are standard record rules. Nothing exotic, nothing to trust blindly.
No key, no phone-home
No activation key and no external service. Your data and access rights never leave your Odoo.
Clean uninstall
Removing the module removes the record rules it generated â no orphaned restrictions left behind.
Supported Odoo versions
Maintained across four releases.
Each version lives on its own branch and is validated on that release. Install and it works â no configuration.
Get it
Give the right people the right access â from the screen.
Questions, feature requests or a bug to report? Use the Support link on this page, or reach us at tlldevelopers.com.
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Lines of code | 2274 |
| Technical Name |
tll_access |
| License | OPL-1 |
| Website | https://tlldevelopers.com/ |
Access Control — in-context permissions for Odoo, enforced
Decide who can see and do what in Odoo, set directly from the screen you are looking at, and enforced on the server — not just hidden in the interface. A complete, no-code access rights and record-rules manager for administrators.
The problem it solves
In Odoo, most permissions live in code. To hide a field, block a button or restrict a menu for one role you usually edit XML, add a group to a view, or write an ir.rule by hand — and the person who knows who should see what, the administrator, cannot do it from where the problem is: the screen in front of them. On top of that, an add-on that only hides a field in the interface often leaves that field still writable through an import or an API call.
This module fixes both. You set access from the screen, and it is enforced for real, in the ORM.
How it works
- Turn on access mode from the systray lock. The screen becomes clickable: every field, button, menu and tab is now a target.
- Click the element you want to restrict. A small panel opens right there.
- Pick the role and the rule — for this view or the whole model. Done.
Nine things you can restrict
Fields
Hide a field, make it read-only or make it required for a role, scoped to a single view or to the whole model.
Buttons
Hide any object or action button on a form or list view for a role.
Model capabilities
Restrict create, edit, delete, duplicate, archive/unarchive and export on a model. The matching button is hidden and the action is refused on the server.
Actions and reports
Remove print menus and server actions from the Actions cog for a role.
View types
Take away the switchers a role should not use — List, Kanban, Pivot, Calendar, Graph, Activity, and so on.
Notebook pages
Hide an entire tab inside a form — the whole page, not only its fields.
Search filters
Hide specific filters and group-bys from the search menu.
Records (row level)
Limit which rows a role can even see:
- Only their own records — using the model's user field.
- Only their company — using company_id.
- A custom domain — any Odoo domain you write.
Row-level rules are generated as native Odoo record rules, combined safely (as a global conditional rule) so a permissive rule elsewhere cannot undo them.
Preview as role
Pick a role and the whole interface re-renders as that role would experience it — hidden fields gone, blocked buttons gone, restricted menus gone — without ever changing your own groups. Only administrators can preview, so the impersonation cannot be used to bypass rules.
Every rule for a screen, one click away
From any record, jump to all the access rules that touch this model and this view, already filtered. Review what is restricted, for whom, and switch a rule off in one click.
Safe by default
With no rules, everything stays visible and editable. Each rule only subtracts access from one role, and the most restrictive rule wins, so access never leaks. There is no activation key and no external service: your data and access rights never leave your Odoo. Uninstalling the module also removes the record rules it generated, leaving nothing behind.
Supported Odoo versions
Odoo 16.0, 17.0, 18.0 and 19.0, each maintained on its own branch.
Support
Questions, bug reports or feature requests: https://tlldevelopers.com/
License
OPL-1 (Odoo Proprietary License v1.0).
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module