fix: add permission checks in whitelisted functions (#53103)

This commit is contained in:
Priyal Rawal
2026-03-10 12:34:15 +05:30
committed by GitHub
parent f2f47d6d88
commit a6e78c2eea
5 changed files with 30 additions and 22 deletions

View File

@@ -59,7 +59,7 @@ def get_bank_transactions(
filters.append(["date", "<=", to_date]) filters.append(["date", "<=", to_date])
if from_date: if from_date:
filters.append(["date", ">=", from_date]) filters.append(["date", ">=", from_date])
transactions = frappe.get_all( transactions = frappe.get_list(
"Bank Transaction", "Bank Transaction",
fields=[ fields=[
"date", "date",
@@ -84,6 +84,7 @@ def get_bank_transactions(
@frappe.whitelist() @frappe.whitelist()
def get_account_balance(bank_account: str, till_date: str | date, company: str): def get_account_balance(bank_account: str, till_date: str | date, company: str):
# returns account balance till the specified date # returns account balance till the specified date
frappe.has_permission("Bank Account", "read", bank_account, throw=True)
account = frappe.db.get_value("Bank Account", bank_account, "account") account = frappe.db.get_value("Bank Account", bank_account, "account")
filters = frappe._dict( filters = frappe._dict(
{ {

View File

@@ -955,6 +955,7 @@ def resend_payment_email(docname: str):
@frappe.whitelist() @frappe.whitelist()
def make_payment_entry(docname: str): def make_payment_entry(docname: str):
doc = frappe.get_doc("Payment Request", docname) doc = frappe.get_doc("Payment Request", docname)
doc.check_permission("read")
return doc.create_payment_entry(submit=False).as_dict() return doc.create_payment_entry(submit=False).as_dict()

View File

@@ -465,6 +465,8 @@ def get_customer_emails(customer_name: str, primary_mandatory: str | int, billin
when Is Billing Contact checked when Is Billing Contact checked
and Primary email- email with Is Primary checked""" and Primary email- email with Is Primary checked"""
frappe.has_permission("Customer", "read", customer_name, throw=True)
billing_email = frappe.db.sql( billing_email = frappe.db.sql(
""" """
SELECT SELECT
@@ -508,6 +510,7 @@ def get_customer_emails(customer_name: str, primary_mandatory: str | int, billin
@frappe.whitelist() @frappe.whitelist()
def download_statements(document_name: str): def download_statements(document_name: str):
doc = frappe.get_doc("Process Statement Of Accounts", document_name) doc = frappe.get_doc("Process Statement Of Accounts", document_name)
doc.check_permission("read")
report = get_report_pdf(doc) report = get_report_pdf(doc)
if report: if report:
frappe.local.response.filename = doc.name + ".pdf" frappe.local.response.filename = doc.name + ".pdf"

View File

@@ -28,6 +28,7 @@ frappe.query_reports["Stock Qty vs Batch Qty"] = {
}, },
], ],
onload: function (report) { onload: function (report) {
if (frappe.model.can_write("Batch")) {
report.page.add_inner_button(__("Update Batch Qty"), function () { report.page.add_inner_button(__("Update Batch Qty"), function () {
let indexes = frappe.query_report.datatable.rowmanager.getCheckedRows(); let indexes = frappe.query_report.datatable.rowmanager.getCheckedRows();
let selected_rows = indexes let selected_rows = indexes
@@ -50,6 +51,7 @@ frappe.query_reports["Stock Qty vs Batch Qty"] = {
frappe.msgprint(__("Please select at least one row with difference value")); frappe.msgprint(__("Please select at least one row with difference value"));
} }
}); });
}
}, },
formatter: function (value, row, column, data, default_formatter) { formatter: function (value, row, column, data, default_formatter) {

View File

@@ -101,6 +101,7 @@ def get_data(filters=None):
@frappe.whitelist() @frappe.whitelist()
def update_batch_qty(selected_batches: str | None = None): def update_batch_qty(selected_batches: str | None = None):
frappe.has_permission("Batch", "write", throw=True, ignore_share_permissions=True)
if not selected_batches: if not selected_batches:
return return