From 45010ff8e6443e0c4a6a13834b2e8ab9ab45d2cc Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Tue, 8 Apr 2025 15:27:50 +0530 Subject: [PATCH 1/7] fix: added ErrorPage component (cherry picked from commit bb794f4887a6f74fc4382a211f18e67a4abd7790) --- frontend/src/components/ErrorPage.vue | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 frontend/src/components/ErrorPage.vue diff --git a/frontend/src/components/ErrorPage.vue b/frontend/src/components/ErrorPage.vue new file mode 100644 index 00000000..345ecfd7 --- /dev/null +++ b/frontend/src/components/ErrorPage.vue @@ -0,0 +1,24 @@ + + + From d6c6af46905610b09e27f63a675385317c76bd7a Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Tue, 8 Apr 2025 15:28:19 +0530 Subject: [PATCH 2/7] fix: check read access before loading data (cherry picked from commit e92ee3b730df73017aa409cbdbce23eed7e9defd) --- crm/api/contact.py | 6 +++--- crm/fcrm/doctype/crm_deal/api.py | 5 ++++- crm/fcrm/doctype/crm_lead/api.py | 5 ++++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/crm/api/contact.py b/crm/api/contact.py index 6cab9c10..b8d8f578 100644 --- a/crm/api/contact.py +++ b/crm/api/contact.py @@ -23,11 +23,11 @@ def update_deals_email_mobile_no(doc): @frappe.whitelist() def get_contact(name): - Contact = frappe.qb.DocType("Contact") + contact = frappe.get_doc("Contact", name) + contact.check_permission("read") - query = frappe.qb.from_(Contact).select("*").where(Contact.name == name).limit(1) + contact = contact.as_dict() - contact = query.run(as_dict=True) if not len(contact): frappe.throw(_("Contact not found"), frappe.DoesNotExistError) contact = contact.pop() diff --git a/crm/fcrm/doctype/crm_deal/api.py b/crm/fcrm/doctype/crm_deal/api.py index 9b5ee368..5eaf2899 100644 --- a/crm/fcrm/doctype/crm_deal/api.py +++ b/crm/fcrm/doctype/crm_deal/api.py @@ -6,7 +6,10 @@ from crm.fcrm.doctype.crm_form_script.crm_form_script import get_form_script @frappe.whitelist() def get_deal(name): - deal = frappe.get_doc("CRM Deal", name).as_dict() + deal = frappe.get_doc("CRM Deal", name) + deal.check_permission("read") + + deal = deal.as_dict() deal["fields_meta"] = get_fields_meta("CRM Deal") deal["_form_script"] = get_form_script("CRM Deal") diff --git a/crm/fcrm/doctype/crm_lead/api.py b/crm/fcrm/doctype/crm_lead/api.py index 613cbb46..77e4fc58 100644 --- a/crm/fcrm/doctype/crm_lead/api.py +++ b/crm/fcrm/doctype/crm_lead/api.py @@ -6,7 +6,10 @@ from crm.fcrm.doctype.crm_form_script.crm_form_script import get_form_script @frappe.whitelist() def get_lead(name): - lead = frappe.get_doc("CRM Lead", name).as_dict() + lead = frappe.get_doc("CRM Lead", name) + lead.check_permission("read") + + lead = lead.as_dict() lead["fields_meta"] = get_fields_meta("CRM Lead") lead["_form_script"] = get_form_script("CRM Lead") From ade31d6f674ef9ad5bee7bf91f13831c9b80a6c1 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Tue, 8 Apr 2025 15:28:54 +0530 Subject: [PATCH 3/7] fix: show error page if there is no access (cherry picked from commit fa56dc479108f189f8fd72bd7ef46672cbaeea1b) --- frontend/components.d.ts | 1 + frontend/src/pages/Contact.vue | 20 +++++++++++++++++++- frontend/src/pages/Deal.vue | 26 +++++++++++++++++++++----- frontend/src/pages/Lead.vue | 23 +++++++++++++++++++---- frontend/src/pages/Organization.vue | 19 ++++++++++++++++++- 5 files changed, 78 insertions(+), 11 deletions(-) diff --git a/frontend/components.d.ts b/frontend/components.d.ts index 5d0ab0b4..0e776395 100644 --- a/frontend/components.d.ts +++ b/frontend/components.d.ts @@ -88,6 +88,7 @@ declare module 'vue' { EmailTemplatesListView: typeof import('./src/components/ListViews/EmailTemplatesListView.vue')['default'] ERPNextIcon: typeof import('./src/components/Icons/ERPNextIcon.vue')['default'] ERPNextSettings: typeof import('./src/components/Settings/ERPNextSettings.vue')['default'] + ErrorPage: typeof import('./src/components/ErrorPage.vue')['default'] ExotelCallUI: typeof import('./src/components/Telephony/ExotelCallUI.vue')['default'] ExportIcon: typeof import('./src/components/Icons/ExportIcon.vue')['default'] ExternalLinkIcon: typeof import('./src/components/Icons/ExternalLinkIcon.vue')['default'] diff --git a/frontend/src/pages/Contact.vue b/frontend/src/pages/Contact.vue index a888b2a5..bfe7ea76 100644 --- a/frontend/src/pages/Contact.vue +++ b/frontend/src/pages/Contact.vue @@ -8,7 +8,7 @@ -
+
+