From 77d7384bd26eb7ab67ed3711ac09b8b2ce86ff38 Mon Sep 17 00:00:00 2001 From: Anjeel Haria Date: Wed, 30 Sep 2026 13:05:12 +0530 Subject: [PATCH] [UPD] base_user_role_extended: Added back context based role access --- base_user_role_extended/models/ir_model_access.py | 10 +++++++++- base_user_role_extended/models/res_users.py | 13 +++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/base_user_role_extended/models/ir_model_access.py b/base_user_role_extended/models/ir_model_access.py index 089cde8..f0ce237 100644 --- a/base_user_role_extended/models/ir_model_access.py +++ b/base_user_role_extended/models/ir_model_access.py @@ -1,12 +1,20 @@ # Copyright 2026 CIT Services # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import api, models +from odoo import api, models, tools class IrModelAccess(models.Model): _inherit = "ir.model.access" + @tools.ormcache("self.env.uid", "mode") + def _get_allowed_models(self, mode="read"): + """ + Override to enforce exclusive role-based model access. + """ + self = self.with_context(role=True) + return super()._get_allowed_models(mode) + # Handle access rights changes from the respective groups, # such as create, update, and deletion of access rights @api.model_create_multi diff --git a/base_user_role_extended/models/res_users.py b/base_user_role_extended/models/res_users.py index 22adc04..69a0f16 100644 --- a/base_user_role_extended/models/res_users.py +++ b/base_user_role_extended/models/res_users.py @@ -27,11 +27,12 @@ def set_groups_from_roles(self, force=False): return super(ResUsers, users_to_update).set_groups_from_roles(force=force) return True - @tools.ormcache("self.id", "self.env.uid") + @tools.ormcache("self.id", "self.env.uid", "self.env.context.get('role')") def _get_group_ids(self): - if not self.bypass_role_policy: - enabled_roles = self._get_enabled_roles() - if enabled_roles: - groups = enabled_roles.mapped("role_id.group_id") - return groups._ids + if self.env.context.get("role"): + if not self.bypass_role_policy: + enabled_roles = self._get_enabled_roles() + if enabled_roles: + groups = enabled_roles.mapped("role_id.group_id") + return groups._ids return super()._get_group_ids()