diff --git a/frappe/core/doctype/user_permission/user_permission.py b/frappe/core/doctype/user_permission/user_permission.py index bd13968ba5..5ad65075e1 100644 --- a/frappe/core/doctype/user_permission/user_permission.py +++ b/frappe/core/doctype/user_permission/user_permission.py @@ -9,6 +9,16 @@ from frappe.permissions import (get_valid_perms, update_permission_property) from frappe import _ class UserPermission(Document): + def validate(self): + duplicate_exists = frappe.db.get_all(self.doctype, filters={ + 'allow': self.allow, + 'for_value': self.for_value, + 'user': self.user, + 'name': ['!=', self.name] + }, limit=1) + if duplicate_exists: + frappe.msgprint(_("User permission already exists"), raise_exception=True) + def on_update(self): frappe.cache().delete_value('user_permissions') frappe.publish_realtime('update_user_permissions')