Skip to content

Commit 75bef28

Browse files
committed
feat: Calculate default policies for FromFile loaded stacks.
1 parent ad864dd commit 75bef28

File tree

1 file changed

+88
-1
lines changed

1 file changed

+88
-1
lines changed

pkg/stack/types.go

Lines changed: 88 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,95 @@ func New(name, dir string) *Stack {
164164

165165
// Compute default policies for a stack
166166
func calculateDefaultPolicies(s *Stack) []*v1.PolicyResource {
167+
policies := make([]*v1.PolicyResource, 0)
168+
169+
principals := make([]*v1.Resource, 0)
170+
171+
for name := range s.Functions {
172+
principals = append(principals, &v1.Resource{
173+
Name: name,
174+
Type: v1.ResourceType_Function,
175+
})
176+
}
177+
178+
topicResources := make([]*v1.Resource, len(s.Topics), 0)
179+
for name := range s.Topics {
180+
topicResources = append(topicResources, &v1.Resource{
181+
Name: name,
182+
Type: v1.ResourceType_Topic,
183+
})
184+
}
185+
186+
policies = append(policies, &v1.PolicyResource{
187+
Principals: principals,
188+
Actions: []v1.Action{
189+
v1.Action_TopicDetail,
190+
v1.Action_TopicEventPublish,
191+
v1.Action_TopicList,
192+
},
193+
Resources: topicResources,
194+
})
195+
196+
bucketResources := make([]*v1.Resource, len(s.Buckets), 0)
197+
for name := range s.Buckets {
198+
bucketResources = append(bucketResources, &v1.Resource{
199+
Name: name,
200+
Type: v1.ResourceType_Bucket,
201+
})
202+
}
203+
204+
policies = append(policies, &v1.PolicyResource{
205+
Principals: principals,
206+
Actions: []v1.Action{
207+
v1.Action_BucketFileDelete,
208+
v1.Action_BucketFileGet,
209+
v1.Action_BucketFileList,
210+
v1.Action_BucketFilePut,
211+
},
212+
Resources: bucketResources,
213+
})
214+
215+
queueResources := make([]*v1.Resource, len(s.Queues), 0)
216+
for name := range s.Buckets {
217+
queueResources = append(queueResources, &v1.Resource{
218+
Name: name,
219+
Type: v1.ResourceType_Queue,
220+
})
221+
}
222+
223+
policies = append(policies, &v1.PolicyResource{
224+
Principals: principals,
225+
Actions: []v1.Action{
226+
v1.Action_QueueDetail,
227+
v1.Action_QueueList,
228+
v1.Action_QueueReceive,
229+
v1.Action_QueueSend,
230+
},
231+
Resources: queueResources,
232+
})
233+
234+
collectionResources := make([]*v1.Resource, len(s.Collections), 0)
235+
for name := range s.Collections {
236+
collectionResources = append(collectionResources, &v1.Resource{
237+
Name: name,
238+
Type: v1.ResourceType_Collection,
239+
})
240+
}
241+
242+
policies = append(policies, &v1.PolicyResource{
243+
Principals: principals,
244+
Actions: []v1.Action{
245+
v1.Action_CollectionDocumentDelete,
246+
v1.Action_CollectionDocumentRead,
247+
v1.Action_CollectionDocumentWrite,
248+
v1.Action_CollectionList,
249+
v1.Action_CollectionQuery,
250+
},
251+
Resources: collectionResources,
252+
})
253+
167254
// TODO: Calculate policies for stacks loaded from a file
168-
return []*v1.PolicyResource{}
255+
return policies
169256
}
170257

171258
func FromFile(name string) (*Stack, error) {

0 commit comments

Comments
 (0)