Skip to content

Commit a8419fb

Browse files
fahimalizainSpace
authored andcommitted
feat: Basic Perms for new Resolvers
fix: Use get_list in doc-dataloader feat: Basic Perms for new resolvers Co-authored-by: Fahim Ali Zain <[email protected]> Merge-request: ROMMAN-MR-126 Merged-by: Fahim Ali Zain <[email protected]>
1 parent bd2a4a1 commit a8419fb

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

frappe_graphql/utils/resolver/dataloaders/doctype_loader.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def get_doctype_dataloader(doctype: str) -> DataLoader:
1919
def _get_document_loader_fn(doctype: str):
2020

2121
def _load_documents(keys: List[str]):
22-
docs = frappe.get_all(
22+
docs = frappe.get_list(
2323
doctype=doctype,
2424
filters=[["name", "IN", keys]],
2525
fields=["*", f"'{doctype}' as doctype"],

frappe_graphql/utils/resolver/link_field.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ def _resolve_link_field(obj, info: GraphQLResolveInfo, **kwargs):
5050
if not (dt and dn):
5151
return None
5252

53+
# Permission check is done within get_doctype_dataloader via get_list
5354
return get_doctype_dataloader(dt).load(dn)
5455

5556

@@ -66,6 +67,7 @@ def _resolve_dynamic_link_field(obj, info: GraphQLResolveInfo, **kwargs):
6667
if not dn:
6768
return None
6869

70+
# Permission check is done within get_doctype_dataloader via get_list
6971
return get_doctype_dataloader(dt).load(dn)
7072

7173

frappe_graphql/utils/resolver/root_query.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,18 @@ def _get_doc_resolver(obj, info: GraphQLResolveInfo, **kwargs):
3535
if is_single(dt):
3636
kwargs["name"] = dt
3737

38-
return get_doctype_dataloader(dt).load(kwargs["name"])
38+
dn = kwargs["name"]
39+
if not frappe.has_permission(doctype=dt, doc=dn):
40+
raise frappe.PermissionError(frappe._("No permission for {0}").format(dt + " " + dn))
41+
42+
return get_doctype_dataloader(dt).load(dn)
3943

4044

4145
def _doc_cursor_resolver(obj, info: GraphQLResolveInfo, **kwargs):
4246
plural_doctype = get_plural_doctype(info.field_name)
43-
frappe.has_permission(doctype=plural_doctype, throw=True)
47+
48+
frappe.has_permission(
49+
doctype=plural_doctype,
50+
throw=True)
4451

4552
return CursorPaginator(doctype=plural_doctype).resolve(obj, info, **kwargs)

0 commit comments

Comments
 (0)