Skip to content

Commit 3f9550b

Browse files
committed
update working schema
1 parent 3909baa commit 3f9550b

File tree

2 files changed

+21
-90
lines changed

2 files changed

+21
-90
lines changed

users/mqtt.py

+20-20
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def generate_arena_token_v1(
3737
user,
3838
username,
3939
realm="realm",
40-
namespaced_scene=None,
40+
ns_scene=None,
4141
device=None,
4242
camid=None,
4343
userid=None,
@@ -54,7 +54,7 @@ def generate_arena_token_v1(
5454
user (object): User object
5555
username (str): _description_
5656
realm (str, optional): _description_. Defaults to "realm".
57-
scene (str, optional): _description_. Defaults to None.
57+
ns_scene (str, optional): _description_. Defaults to None.
5858
device (str, optional): _description_. Defaults to None.
5959
camid (str, optional): _description_. Defaults to None.
6060
userid (str, optional): _description_. Defaults to None.
@@ -85,22 +85,22 @@ def generate_arena_token_v1(
8585
p_users = SCENE_USERS_DEF
8686

8787
# create permissions shorthand
88-
if namespaced_scene and Scene.objects.filter(name=namespaced_scene).exists():
89-
scene_perm = Scene.objects.get(name=namespaced_scene)
88+
if ns_scene and Scene.objects.filter(name=ns_scene).exists():
89+
scene_perm = Scene.objects.get(name=ns_scene)
9090
p_public_read = scene_perm.public_read
9191
p_public_write = scene_perm.public_write
9292
p_anonymous_users = scene_perm.anonymous_users
9393
p_video = scene_perm.video_conference
9494
p_users = scene_perm.users
9595

9696
# add jitsi server params if a/v scene
97-
if namespaced_scene and camid and p_users and p_video:
97+
if ns_scene and camid and p_users and p_video:
9898
host = os.getenv("HOSTNAME")
9999
headers = {"kid": host}
100100
payload["aud"] = "arena"
101101
payload["iss"] = "arena-account"
102102
# we use the namespace + scene name as the jitsi room name, handle RFC 3986 reserved chars as = '_'
103-
roomname = re.sub(r"[!#$&'()*+,\/:;=?@[\]]", '_', namespaced_scene.lower())
103+
roomname = re.sub(r"[!#$&'()*+,\/:;=?@[\]]", '_', ns_scene.lower())
104104
payload["room"] = roomname
105105

106106
# everyone should be able to read all public scenes
@@ -125,8 +125,8 @@ def generate_arena_token_v1(
125125
subs.append(f"{realm}/env/#")
126126
pubs.append(f"{realm}/env/#")
127127
# vio experiments, staff only
128-
if namespaced_scene:
129-
pubs.append(f"{realm}/vio/{namespaced_scene}/#")
128+
if ns_scene:
129+
pubs.append(f"{realm}/vio/{ns_scene}/#")
130130
else:
131131
# scene owners have rights to their scene objects only
132132
subs.append(f"{realm}/s/{username}/#")
@@ -137,7 +137,7 @@ def generate_arena_token_v1(
137137
# add scenes that have been granted by other owners
138138
u_scenes = Scene.objects.filter(editors=user)
139139
for u_scene in u_scenes:
140-
if not namespaced_scene or (namespaced_scene and u_scene.name == namespaced_scene):
140+
if not ns_scene or (ns_scene and u_scene.name == ns_scene):
141141
subs.append(f"{realm}/s/{u_scene.name}/#")
142142
pubs.append(f"{realm}/s/{u_scene.name}/#")
143143
subs.append(f"{realm}/env/{u_scene.name}/#")
@@ -153,28 +153,28 @@ def generate_arena_token_v1(
153153
pubs.append(f"{realm}/d/{username}/#")
154154

155155
# anon/non-owners have rights to view scene objects only
156-
if namespaced_scene and not user.is_staff:
156+
if ns_scene and not user.is_staff:
157157
# did the user set specific public read or public write?
158158
if not user.is_authenticated and not p_anonymous_users:
159159
return None # anonymous not permitted
160160
if p_public_read:
161-
subs.append(f"{realm}/s/{namespaced_scene}/#")
161+
subs.append(f"{realm}/s/{ns_scene}/#")
162162
# Interactivity to extent of viewing objects is similar to publishing env
163-
pubs.append(f"{realm}/env/{namespaced_scene}/#")
163+
pubs.append(f"{realm}/env/{ns_scene}/#")
164164
if p_public_write:
165-
pubs.append(f"{realm}/s/{namespaced_scene}/#")
165+
pubs.append(f"{realm}/s/{ns_scene}/#")
166166
# user presence objects
167167
if camid and p_users: # probable web browser write
168-
pubs.append(f"{realm}/s/{namespaced_scene}/{camid}")
169-
pubs.append(f"{realm}/s/{namespaced_scene}/{camid}/#")
168+
pubs.append(f"{realm}/s/{ns_scene}/{camid}")
169+
pubs.append(f"{realm}/s/{ns_scene}/{camid}/#")
170170
if handleftid and p_users:
171-
pubs.append(f"{realm}/s/{namespaced_scene}/{handleftid}")
171+
pubs.append(f"{realm}/s/{ns_scene}/{handleftid}")
172172
if handrightid and p_users:
173-
pubs.append(f"{realm}/s/{namespaced_scene}/{handrightid}")
173+
pubs.append(f"{realm}/s/{ns_scene}/{handrightid}")
174174

175175
# chat messages
176-
if namespaced_scene and userid and p_users:
177-
namespace = namespaced_scene.split("/")[0]
176+
if ns_scene and userid and p_users:
177+
namespace = ns_scene.split("/")[0]
178178
# receive private messages: Read
179179
subs.append(f"{realm}/c/{namespace}/p/{userid}/#")
180180
# receive open messages to everyone and/or scene: Read
@@ -185,7 +185,7 @@ def generate_arena_token_v1(
185185
pubs.append(f"{realm}/c/{namespace}/p/+/{userid}")
186186

187187
# apriltags
188-
if namespaced_scene:
188+
if ns_scene:
189189
subs.append(f"{realm}/g/a/#")
190190
pubs.append(f"{realm}/g/a/#")
191191

users/views.py

+1-70
Original file line numberDiff line numberDiff line change
@@ -620,74 +620,6 @@ def storelogin(request):
620620
return response
621621

622622

623-
class ArenaTokenSchema(AutoSchema):
624-
def __init__(self):
625-
super(ArenaTokenSchema, self).__init__()
626-
627-
def get_manual_fields(self, path, method):
628-
extra_fields = [
629-
coreapi.Field(
630-
"username",
631-
required=True,
632-
location="body",
633-
type="string",
634-
description="ARENA user database username, or like 'anonymous-[name]'.",
635-
),
636-
coreapi.Field(
637-
"id_token",
638-
required=False,
639-
location="body",
640-
type="string",
641-
description="JWT id_token from social account authentication service, \
642-
if forwarding from remote client like arena-py.",
643-
),
644-
coreapi.Field(
645-
"realm",
646-
required=False,
647-
location="body",
648-
type="string",
649-
description="Name of the ARENA realm used in the topic string (default: 'realm').",
650-
),
651-
coreapi.Field(
652-
"scene",
653-
required=False,
654-
location="body",
655-
type="string",
656-
description="Name of the ARENA scene: '[namespace]/[scene]'.",
657-
),
658-
coreapi.Field(
659-
"userid",
660-
required=False,
661-
location="body",
662-
type="string",
663-
description="Name of the user's ARENA web client id.",
664-
),
665-
coreapi.Field(
666-
"camid",
667-
required=False,
668-
location="body",
669-
type="string",
670-
description="Name of the user's ARENA camera object id.",
671-
),
672-
coreapi.Field(
673-
"handleftid",
674-
required=False,
675-
location="body",
676-
type="string",
677-
description="Name of the user's ARENA controller object left hand.",
678-
),
679-
coreapi.Field(
680-
"handrightid",
681-
required=False,
682-
location="body",
683-
type="string",
684-
description="Name of the user's ARENA controller object right hand.",
685-
),
686-
]
687-
manual_fields = super().get_manual_fields(path, method)
688-
return manual_fields + extra_fields
689-
690-
691623
def get_user_from_id_token(gid_token):
692624
"""
693625
Internal method to validate id_tokens from remote authentication.
@@ -729,7 +661,6 @@ def deprecated_token(request):
729661

730662

731663
@ api_view(["POST"])
732-
# @schema(ArenaTokenSchema()) # TODO: schema not working yet
733664
def arena_token_v1(request):
734665
"""
735666
Endpoint to request an ARENA token with permissions for an anonymous or authenticated user for
@@ -777,7 +708,7 @@ def arena_token_v1(request):
777708
user=user,
778709
username=username,
779710
realm=request.POST.get("realm", "realm"),
780-
namespaced_scene=request.POST.get("scene", None),
711+
ns_scene=request.POST.get("scene", None),
781712
camid=camid,
782713
userid=userid,
783714
handleftid=handleftid,

0 commit comments

Comments
 (0)