diff --git a/frappe/core/doctype/user_permission/user_permission.py b/frappe/core/doctype/user_permission/user_permission.py index 57214b82e2..805242325f 100644 --- a/frappe/core/doctype/user_permission/user_permission.py +++ b/frappe/core/doctype/user_permission/user_permission.py @@ -60,6 +60,10 @@ class UserPermission(Document): frappe.throw(_("{0} has already assigned default value for {1}.").format(ref_link, self.allow)) +def send_user_permissions(bootinfo): + bootinfo.user["user_permissions"] = get_user_permissions() + + @frappe.whitelist() def get_user_permissions(user=None): """Get all users permissions for the user as a dict of doctype""" diff --git a/frappe/hooks.py b/frappe/hooks.py index fe430918d0..af801e9e7b 100644 --- a/frappe/hooks.py +++ b/frappe/hooks.py @@ -427,4 +427,5 @@ after_job = [ extend_bootinfo = [ "frappe.utils.telemetry.add_bootinfo", + "frappe.core.doctype.user_permission.user_permission.send_user_permissions", ] diff --git a/frappe/public/js/frappe/defaults.js b/frappe/public/js/frappe/defaults.js index fa92ef45f0..bca2b0dad4 100644 --- a/frappe/public/js/frappe/defaults.js +++ b/frappe/public/js/frappe/defaults.js @@ -130,4 +130,12 @@ frappe.defaults = { } }); }, + + load_user_permission_from_boot: function () { + if (frappe.boot.user.user_permissions) { + this._user_permissions = Object.assign({}, frappe.boot.user.user_permissions); + } else { + frappe.defaults.update_user_permissions(); + } + }, }; diff --git a/frappe/public/js/frappe/desk.js b/frappe/public/js/frappe/desk.js index 0238e00f96..9af2998c72 100644 --- a/frappe/public/js/frappe/desk.js +++ b/frappe/public/js/frappe/desk.js @@ -277,7 +277,7 @@ frappe.Application = class Application { } load_user_permissions() { - frappe.defaults.update_user_permissions(); + frappe.defaults.load_user_permission_from_boot(); frappe.realtime.on( "update_user_permissions",