Skip to content

Commit 4280f2d

Browse files
committed
feat: guest access setting
1 parent aa93689 commit 4280f2d

3 files changed

Lines changed: 23 additions & 4 deletions

File tree

meet/api/meeting.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ def _get_codec_strategy() -> str:
3131
@rate_limit(limit=10, seconds=60 * 60)
3232
def create(meeting_type: str = "open", allow_guest: bool = True) -> str:
3333
"""Create a new meeting with specified type"""
34+
global_settings = frappe.get_cached_doc("Sae Settings")
35+
if not global_settings.allow_guest:
36+
allow_guest = False
37+
3438
meeting: SaeMeeting = frappe.get_doc(
3539
{
3640
"doctype": "Sae Meeting",
@@ -427,7 +431,8 @@ def join_meeting_as_guest(meeting_id: str, guest_name: str, guest_id: str | None
427431

428432
meeting = frappe.get_doc("Sae Meeting", meeting_id)
429433

430-
if not meeting.allow_guest:
434+
global_settings = frappe.get_cached_doc("Sae Settings")
435+
if not global_settings.allow_guest or not meeting.allow_guest:
431436
return {"success": False, "error": "Guests are not allowed in this meeting"}
432437

433438
# Check if reusing existing guest_id
@@ -651,6 +656,9 @@ def update_meeting_settings(meeting_id: str, allow_guest: int, meeting_type: str
651656

652657
updated_fields = {}
653658
if allow_guest is not None:
659+
global_settings = frappe.get_cached_doc("Sae Settings")
660+
if not global_settings.allow_guest and allow_guest:
661+
return {"success": False, "error": "Guest access is disabled globally"}
654662
meeting.allow_guest = bool(allow_guest)
655663
updated_fields["allow_guest"] = meeting.allow_guest
656664

@@ -694,10 +702,12 @@ def check_meeting_access(meeting_id: str) -> dict:
694702
"""
695703
try:
696704
meeting: SaeMeeting = frappe.get_doc("Sae Meeting", meeting_id)
705+
settings = frappe.get_cached_doc("Sae Settings")
706+
allow_guest = settings.allow_guest and meeting.allow_guest
697707

698708
return {
699709
"success": True,
700-
"allow_guest": meeting.allow_guest,
710+
"allow_guest": allow_guest,
701711
}
702712
except frappe.DoesNotExistError:
703713
return {

meet/meet/doctype/sae_settings/sae_settings.json

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
"engine": "InnoDB",
77
"field_order": [
88
"section_break_mm5y",
9-
"codec_strategy"
9+
"codec_strategy",
10+
"allow_guest"
1011
],
1112
"fields": [
1213
{
@@ -20,13 +21,20 @@
2021
"fieldtype": "Select",
2122
"label": "Codec Strategy",
2223
"options": "auto\nsvc\nsimulcast"
24+
},
25+
{
26+
"default": "1",
27+
"description": "Allow guest users to join meetings without authentication",
28+
"fieldname": "allow_guest",
29+
"fieldtype": "Check",
30+
"label": "Allow Guest Access"
2331
}
2432
],
2533
"grid_page_length": 50,
2634
"index_web_pages_for_search": 1,
2735
"issingle": 1,
2836
"links": [],
29-
"modified": "2025-12-01 15:30:48.579220",
37+
"modified": "2026-01-16 09:49:10.774663",
3038
"modified_by": "Administrator",
3139
"module": "Meet",
3240
"name": "Sae Settings",

meet/meet/doctype/sae_settings/sae_settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class SaeSettings(Document):
1414
if TYPE_CHECKING:
1515
from frappe.types import DF
1616

17+
allow_guest: DF.Check
1718
codec_strategy: DF.Literal["auto", "svc", "simulcast"]
1819
# end: auto-generated types
1920

0 commit comments

Comments
 (0)