1+ // Users can view project environmentss they are viewers of.
2+ @id("cloud.projects.environments.viewer")
3+ permit (
4+ principal is Celest::Project::Member,
5+ action in Celest::Action::"view",
6+ resource is Celest::Project::Environment
7+ )
8+ when
9+ {
10+ resource in principal.parent &&
11+ principal.role == Celest::Role::"viewer"
12+ };
13+
14+ // Users can edit project environments they are editors of.
15+ @id("cloud.projects.environments.editor")
16+ permit (
17+ principal is Celest::Project::Member,
18+ action in Celest::Action::"edit",
19+ resource is Celest::Project::Environment
20+ )
21+ when
22+ {
23+ resource in principal.parent &&
24+ principal.role == Celest::Role::"editor"
25+ };
26+
27+ // Users can do anything but delete project environments they are admins of.
28+ @id("cloud.projects.environments.admin")
29+ permit (
30+ principal is Celest::Project::Member,
31+ action in Celest::Action::"admin",
32+ resource is Celest::Project::Environment
33+ )
34+ when
35+ {
36+ resource in principal.parent &&
37+ principal.role == Celest::Role::"admin"
38+ };
39+
40+ // Users can do anything to environments they are owners of.
41+ @id("cloud.projects.environments.owner")
42+ permit (
43+ principal is Celest::Project::Member,
44+ action in Celest::Action::"owner",
45+ resource is Celest::Project::Environment
46+ )
47+ when
48+ {
49+ resource in principal.parent &&
50+ principal.role == Celest::Role::"owner"
51+ };
52+
53+ // Users can create environments in projects they have admin access to.
54+ @id("cloud.projects.environments.creator")
55+ permit (
56+ principal is Celest::Project::Member,
57+ action == Celest::Action::"create",
58+ resource is Celest::Project::Environment
59+ )
60+ when
61+ {
62+ resource in principal.parent &&
63+ principal.role in Celest::Role::"admin"
64+ };
65+
66+ // Members can deploy environments in projects they have deploy or admin access to.
67+ @id("cloud.projects.environments.deployer")
68+ permit (
69+ principal is Celest::Project::Member,
70+ action == Celest::Project::Environment::Action::"deploy",
71+ resource is Celest::Project::Environment
72+ )
73+ when
74+ {
75+ resource in principal.parent &&
76+ principal.role in Celest::Role::"admin"
77+ };
0 commit comments