fix: check ptype for permission if not admin

This commit is contained in:
Jannat Patel
2026-02-23 11:06:34 +05:30
parent 58826fe30f
commit 14937fd4fc
8 changed files with 23 additions and 10 deletions

View File

@@ -31,6 +31,7 @@ from pypika import functions as fn
from lms.lms.doctype.course_lesson.course_lesson import save_progress
from lms.lms.utils import (
LMS_ROLES,
can_modify_batch,
can_modify_course,
get_average_rating,
@@ -607,12 +608,7 @@ def check_app_permission():
if frappe.session.user == "Administrator":
return True
roles = frappe.get_roles()
lms_roles = ["Moderator", "Course Creator", "Batch Evaluator", "LMS Student"]
if any(role in roles for role in lms_roles):
return True
return False
return has_lms_role()
@frappe.whitelist()
@@ -1723,7 +1719,7 @@ def get_profile_details(username: str):
roles = frappe.get_roles(details.name)
if not has_lms_role():
frappe.throw(
_("User does not have permission to access this users profile details."), frappe.PermissionError
_("User does not have permission to access this user's profile details."), frappe.PermissionError
)
details.roles = roles
return details

View File

@@ -70,14 +70,17 @@ def assign_badge(badge_name: str):
["name", "event", "reference_doctype", "condition", "user_field"],
as_dict=True,
)
if not badge:
frappe.throw(_("Badge {0} not found").format(badge_name), frappe.DoesNotExistError)
if not badge.event == "Manual Assignment":
return
fields = ["name"]
fields.append(badge.user_field)
list = frappe.get_all(badge.reference_doctype, filters=json.loads(badge.condition), fields=fields)
docs = frappe.get_all(badge.reference_doctype, filters=json.loads(badge.condition), fields=fields)
for doc in list:
for doc in docs:
assignment_name = award(badge, doc.get(badge.user_field))
if assignment_name:
assignments.append(assignment_name)

View File

@@ -407,6 +407,9 @@ def has_permission(doc, ptype="read", user=None):
if "Moderator" in roles or "Batch Evaluator" in roles:
return True
if ptype not in ("read", "select", "print"):
return False
is_enrolled = frappe.db.exists("LMS Batch Enrollment", {"batch": doc.name, "member": user})
if is_enrolled:
return True

View File

@@ -222,6 +222,10 @@ def has_permission(doc, ptype="read", user=None):
roles = frappe.get_roles(user)
if "Moderator" in roles or "Course Creator" in roles or "Batch Evaluator" in roles:
return True
if doc.owner == user:
return True
if ptype not in ("read", "select", "print"):
return False
return doc.published

View File

@@ -177,6 +177,9 @@ def has_permission(doc, ptype="read", user=None):
if "Moderator" in roles or "Batch Evaluator" in roles:
return True
if ptype not in ("read", "select", "print"):
return False
return frappe.db.exists(
"LMS Batch Enrollment",
{"batch": doc.batch_name, "member": user},

View File

@@ -55,6 +55,9 @@ def has_permission(doc, ptype="read", user=None):
if "Moderator" in roles or "Course Creator" in roles:
return True
if ptype not in ("read", "select", "print"):
return False
is_enrolled = frappe.db.exists("LMS Program Member", {"parent": doc.name, "member": user})
if is_enrolled:
return True