Skip to content

Commit e870eab

Browse files
committed
refactor(backend): extend FGA model with all the requirements [WIP 4]
Part 4 of refactor Signed-off-by: Damiano Mason <damiano.mason@secomind.com>
1 parent b4ff5ba commit e870eab

1 file changed

Lines changed: 30 additions & 47 deletions

File tree

backend/priv/fga/model.fga

Lines changed: 30 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
# TODO: update all comments, or remove them
77
# TODO: make sure all resources have owners/admins/editors, and that there are 'can_'
88
# relations for all relevant operations on them,
9-
# including managing roles operations (? no, i think this will go to portal)
9+
# including managing roles operations (or maybe this will go to portal?)
10+
# TODO: formatting/alignment
1011

1112
model
1213
schema 1.1
@@ -45,9 +46,8 @@ type tenant
4546
define is_admin: admin or owner
4647
define is_owner: owner
4748

48-
# Blacklist per-tenant
49+
# Blacklist roles per-tenant
4950
define realm_blacklisted: [user]
50-
# define device_blacklisted: [user]
5151
define system_model_blacklisted: [user]
5252
define hardware_type_blacklisted: [user]
5353
define base_image_collection_blacklisted: [user]
@@ -56,8 +56,6 @@ type tenant
5656
define network_blacklisted: [user]
5757
define container_blacklisted: [user]
5858
define application_blacklisted: [user]
59-
# define release_blacklisted: [user]
60-
# define deployment_blacklisted: [user]
6159
define channel_blacklisted: [user]
6260
define device_group_blacklisted: [user]
6361
define campaign_blacklisted: [user]
@@ -75,24 +73,13 @@ type tenant
7573
define can_delete_realm: (realm_owner or is_admin) but not realm_blacklisted
7674
define can_delete_all_realms: is_admin but not realm_blacklisted
7775

78-
## ---- Devices ----
79-
# queste credo che possano essere ottentute in altri modi tramite il realm
80-
# però possono servire per blacklist
81-
# define can_view_all_devices: can_view_all_realms
82-
# define can_rename_all_devices: can_view_all_devices and can_edit_all_realms
83-
# define can_edit_tags_all_devices: can_view_all_devices and can_edit_all_realms
84-
# define can_access_terminal_all_devices: can_view_all_realms and can_edit_all_realms
85-
# define can_update_all_devices: can_view_all_realms and can_edit_all_realms
86-
# define can_identify_devices: can_view_all_realms and can_edit_all_realms
87-
88-
8976
## ---- System models ----
9077
define system_model_creator: [user]
9178
define system_model_viewer: [user]
9279
define system_model_editor: [user]
9380
define system_model_deleter: [user]
9481

95-
define can_create_system_model: system_model_creator or system_model_editor
82+
define can_create_system_model: (system_model_creator or system_model_editor) but not system_model_blacklisted
9683
define can_view_all_system_models: (system_model_viewer or system_model_editor or system_model_creator or system_model_deleter) but not system_model_blacklisted
9784
define can_edit_all_system_models: system_model_editor but not system_model_blacklisted
9885
define can_delete_all_system_models: system_model_deleter but not system_model_blacklisted
@@ -103,105 +90,100 @@ type tenant
10390
define hardware_type_editor: [user]
10491
define hardware_type_deleter: [user]
10592

106-
define can_create_hardware_type: hardware_type_creator or hardware_type_editor
93+
define can_create_hardware_type: (hardware_type_creator or hardware_type_editor) but not hardware_type_blacklisted
10794
define can_view_all_hardware_types: (hardware_type_viewer or hardware_type_editor or hardware_type_creator or hardware_type_deleter) but not hardware_type_blacklisted
10895
define can_edit_all_hardware_types: hardware_type_editor but not hardware_type_blacklisted
10996
define can_delete_all_hardware_types: hardware_type_deleter but not hardware_type_blacklisted
11097

11198
## ---- Base image collections ----
99+
define base_image_collection_creator: [user]
112100
define base_image_collection_viewer: [user]
113101
define base_image_collection_editor: [user]
114-
define base_image_collection_creator: [user]
115102
define base_image_collection_deleter: [user]
116103
define base_image_collection_image_adder: [user]
117104
define base_image_collection_image_remover:[user]
118105

106+
define can_create_base_image_collection: (base_image_collection_creator or base_image_collection_creator or base_image_collection_editor) but not base_image_collection_blacklisted
119107
define can_view_all_base_image_collections: (base_image_collection_viewer or base_image_collection_editor or base_image_collection_creator or base_image_collection_deleter) but not base_image_collection_blacklisted
120-
define can_create_base_image_collection: base_image_collection_creator or base_image_collection_editor
121108
define can_edit_all_base_image_collections: base_image_collection_editor but not base_image_collection_blacklisted
122109
define can_delete_all_base_image_collections: base_image_collection_deleter but not base_image_collection_blacklisted
123110
define can_add_image_to_all_collections: (base_image_collection_image_adder or base_image_collection_editor) but not base_image_collection_blacklisted
124111
define can_remove_image_from_all_collections: (base_image_collection_image_remover or base_image_collection_editor) but not base_image_collection_blacklisted
125112

126113
## ---- Image credentials ----
114+
define image_credential_creator: [user]
127115
define image_credential_viewer: [user]
128116
define image_credential_editor: [user]
129117
define image_credential_deleter: [user]
130118

131-
# define can_create_image_credential: (editor or is_admin) from tenant #? maybe a role?
119+
define can_create_image_credential: (image_credential_creator or image_credential_editor or is_admin) but not image_credential_blacklisted
132120
define can_view_all_image_credentials: (image_credential_viewer or image_credential_editor or image_credential_deleter) but not image_credential_blacklisted
133121
define can_edit_all_image_credentials: image_credential_editor but not image_credential_blacklisted
134122
define can_delete_all_image_credentials: image_credential_deleter but not image_credential_blacklisted
135123

136124
## ---- Volumes ----
125+
define volume_creator: [user]
137126
define volume_viewer: [user]
138127
define volume_editor: [user]
139128
define volume_deleter: [user]
140129

141-
# define can_create_volume: (editor or is_admin) from tenant #? maybe a role?
130+
define can_create_volume: (volume_creator or volume_editor or is_admin) but not volume_blacklisted
142131
define can_view_all_volumes: (volume_viewer or volume_editor or volume_deleter) but not volume_blacklisted
143132
define can_edit_all_volumes: volume_editor but not volume_blacklisted
144133
define can_delete_all_volumes: volume_deleter but not volume_blacklisted
145134

146135
## ---- Networks ----
136+
define network_creator: [user]
147137
define network_viewer: [user]
148138
define network_editor: [user]
149139
define network_deleter: [user]
150140

151-
# define can_create_network: (editor or is_admin) from tenant #? maybe a role?
141+
define can_create_network: (network_creator or network_editor or is_admin) but not network_blacklisted
152142
define can_view_all_networks: (network_viewer or network_editor or network_deleter) but not network_blacklisted
153143
define can_edit_all_networks: network_editor but not network_blacklisted
154144
define can_delete_all_networks: network_deleter but not network_blacklisted
155145

156146
## ---- Containers ----
147+
define container_creator: [user]
157148
define container_viewer: [user]
158149
define container_editor: [user]
159150
define container_deleter: [user]
160151

161-
# define can_create_container: (editor or is_admin) from tenant #? maybe a role?
152+
define can_create_container: (container_creator or container_editor or is_admin) but not container_blacklisted
162153
define can_view_all_containers: (container_viewer or container_editor or container_deleter) but not container_blacklisted
163154
define can_edit_all_containers: container_editor but not container_blacklisted
164155
define can_delete_all_containers: container_deleter but not container_blacklisted
165156

166157
## ---- Applications ----
158+
define application_creator: [user]
167159
define application_viewer: [user]
168160
define application_editor: [user]
169-
define application_creator: [user]
170161
define application_deleter: [user]
171162

163+
define can_create_application: (application_creator or application_editor or is_admin) but not application_blacklisted
172164
define can_view_all_applications: (application_viewer or application_editor or application_creator or application_deleter) but not application_blacklisted
173-
define can_create_application: application_creator or application_editor
174165
define can_edit_all_applications: application_editor but not application_blacklisted
175166
define can_delete_all_applications: application_deleter but not application_blacklisted
176167

177-
## ---- Releases ----
178-
# TODO
179-
# define can_create_release: (editor or is_admin) from tenant #? maybe a role?
180-
181-
## ---- Deployments ----
182-
# TODO
183-
184168
## ---- Channels ----
185169
define channel_viewer: [user]
186170
define channel_editor: [user]
187171
define channel_creator: [user]
188172
define channel_deleter: [user]
189173

190-
# define can_create_channel: (editor or is_admin) from tenant #? maybe a role?
174+
define can_create_channel: (channel_creator or channel_editor or is_admin) but not channel_blacklisted
191175
define can_view_all_channels: (channel_viewer or channel_editor or channel_creator or channel_deleter) but not channel_blacklisted
192-
define can_create_channel: channel_creator or channel_editor
193176
define can_edit_all_channels: channel_editor but not channel_blacklisted
194177
define can_delete_all_channels: channel_deleter but not channel_blacklisted
195178

196179
## ---- Device groups ----
180+
define device_group_creator: [user]
197181
define device_group_viewer: [user]
198182
define device_group_editor: [user]
199-
define device_group_creator: [user]
200183
define device_group_deleter: [user]
201184

202-
# define can_create_device_group: (editor or is_admin) from tenant #? maybe a role?
185+
define can_create_device_group: (device_group_creator or device_group_editor or is_admin) but not device_group_blacklisted
203186
define can_view_all_device_groups: (device_group_viewer or device_group_editor or device_group_creator or device_group_deleter) but not device_group_blacklisted
204-
define can_create_device_group: device_group_creator or device_group_editor
205187
define can_edit_all_device_groups: device_group_editor but not device_group_blacklisted
206188
define can_delete_all_device_groups: device_group_deleter but not device_group_blacklisted
207189

@@ -211,7 +193,7 @@ type tenant
211193
define campaign_creator: [user]
212194
define campaign_deleter: [user]
213195

214-
# define can_create_campaign: (editor or is_admin) from tenant #? maybe a role?
196+
define can_create_campaign: (campaign_creator or campaign_editor or is_admin) but not campaign_blacklisted
215197
define can_view_all_campaigns: (campaign_viewer or campaign_editor or campaign_creator or campaign_deleter) but not campaign_blacklisted
216198
define can_create_firmware_upgrade_campaign: campaign_creator or campaign_editor
217199
define can_create_deployment_campaign: campaign_creator or campaign_editor
@@ -297,7 +279,7 @@ type device
297279
## General per-device roles
298280
define owner: [user]
299281
define admin: [user]
300-
define editor: [user] # TODO: probs reconcile this with all the separate permissions
282+
define editor: [user]
301283
define viewer: [user]
302284
define blacklisted: [user] or device_blacklisted from realm
303285

@@ -571,17 +553,18 @@ type deployment
571553
## Assignable roles
572554
define owner: [user]
573555
define admin: [user]
574-
define manager: [user] # TODO: editor? also, aggiungere ruoli separati per le diverse cose?
556+
define manager: [user] # basically editor
575557
define viewer: [user]
558+
define blacklisted: [user] but not (blacklisted from release or blacklisted from device)
576559

577560
## Computed permissions
578-
define can_view: viewer or manager or admin or owner or (can_view from device and can_view from release) or can_view from tenant
579-
define can_start_stop: manager or admin or owner or can_edit from tenant
580-
define can_upgrade: manager or admin or owner or can_edit from tenant
581-
define can_delete: manager or admin or owner or can_edit from tenant
561+
define can_view: (viewer or manager or admin or owner or (can_view from device and can_view from release) or can_view from tenant) but not blacklisted
562+
define can_start_stop: (manager or admin or owner or can_edit from tenant) but not blacklisted
563+
define can_upgrade: (manager or admin or owner or can_edit from tenant) but not blacklisted
564+
define can_delete: (manager or admin or owner or can_edit from tenant) but not blacklisted
582565
### TODO: queste cose le teniamo in edgehog oppure le lasciamo a portal?
583-
define can_set_manager: admin or owner or is_admin from tenant
584-
define can_set_viewer: admin or owner or is_admin from tenant
566+
define can_set_manager: (admin or owner or is_admin from tenant) but not blacklisted
567+
define can_set_viewer: (admin or owner or is_admin from tenant) but not blacklisted
585568

586569
## ---------------------------------------------------------------------------
587570
## CAMPAIGN

0 commit comments

Comments
 (0)