Skip to content

Commit dfd48a8

Browse files
authored
Merge pull request #30 from linuxfoundation/andrest50/openfga-model-meetings
[LFXV2-236] Update OpenFGA authorization model to add new relations for meetings
2 parents 7c5fd8c + af761a9 commit dfd48a8

File tree

2 files changed

+27
-6
lines changed

2 files changed

+27
-6
lines changed

charts/lfx-platform/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ apiVersion: v2
55
name: lfx-platform
66
description: LFX Platform v2 Helm chart
77
type: application
8-
version: 0.1.12
8+
version: 0.1.13
99
icon: https://github.com/linuxfoundation/lfx-v2-helm/raw/main/img/lfx-logo-color.svg
1010
dependencies:
1111
- name: traefik

charts/lfx-platform/templates/openfga/model.yaml

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ spec:
1313
instances:
1414
- version:
1515
major: 1
16-
minor: 1
16+
minor: 2
1717
patch: 1
1818
authorizationModel: |
1919
model
@@ -31,21 +31,42 @@ spec:
3131
define owner: [team#member] or owner from parent
3232
define writer: [user] or owner or writer from parent
3333
define auditor: [user, team#member] or writer or auditor from parent
34+
# The meeting_coordinator relation identifies a user who can manage any meeting
35+
# for a given project.
36+
define meeting_coordinator: [user]
3437
define viewer: [user:*] or auditor or auditor from parent
3538
3639
type committee
3740
relations
3841
define member: [user]
3942
define project: [project]
4043
define writer: writer from project
41-
define auditor: auditor from project
44+
define auditor: auditor from project or meeting_coordinator from project
4245
define viewer: [user:*] or auditor from project
4346
4447
type meeting
4548
relations
4649
define project: [project]
4750
define committee: [committee]
48-
define organizer: [user]
49-
define participant: [user, committee#member]
50-
define viewer: [user:*, committee#member] or participant or auditor from project
51+
# The organizer relation identifies a user who can manage this one meeting.
52+
# That means they can update the meeting details, invite/uninvite participants, etc.
53+
define organizer: [user] or meeting_coordinator from project or writer from project
54+
# The host relation identifies a user who is a host of this meeting.
55+
# This is different than the organizer relation because an organizer isn't necessarily
56+
# the user who is hosting the meeting, nor is the host necessarily the one who is
57+
# organizing the meeting. For example, a host may need to retrieve the Zoom host key
58+
# but shouldn't be able to update the meeting details.
59+
define host: [user] or organizer
60+
# The participant relation identifies a user who is a participant in this meeting.
61+
# This can either mean they are invited to the meeting or they attended the meeting
62+
# without being invited. In either case, they are a participant of that meeting.
63+
# Note that committee members are not automatically participants of meetings,
64+
# because the backend service needs to only include members from the committee
65+
# based on the voting status filters of that meeting. That is managed by the backend
66+
# services and therefore can't be a relationship in the authorization model.
67+
define participant: [user] or host
68+
# The viewer relation identifies a user who can view this meeting.
69+
# If the meeting is public, then any user can view it; but if it is private, then
70+
# only certain privileged users can view it.
71+
define viewer: [user:*] or participant or organizer or auditor from project
5172
{{- end }}

0 commit comments

Comments
 (0)