Skip to content

Commit 6c58a81

Browse files
committed
remaining case
Signed-off-by: Sylwester Piskozub <sylwesterpiskozub@gmail.com>
1 parent fab67b4 commit 6c58a81

2 files changed

Lines changed: 27 additions & 10 deletions

File tree

app/controlplane/cmd/wire_gen.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/controlplane/internal/service/workflow.go

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,18 @@ type WorkflowService struct {
4242
useCase *biz.WorkflowUseCase
4343
projectsUseCase *biz.ProjectUseCase
4444
contractUC *biz.WorkflowContractUseCase
45+
orgUseCase *biz.OrganizationUseCase
46+
userUseCase *biz.UserUseCase
4547
}
4648

47-
func NewWorkflowService(uc *biz.WorkflowUseCase, wfuc *biz.WorkflowContractUseCase, projectUseCase *biz.ProjectUseCase, opts ...NewOpt) *WorkflowService {
49+
func NewWorkflowService(uc *biz.WorkflowUseCase, wfuc *biz.WorkflowContractUseCase, projectUseCase *biz.ProjectUseCase, orgUC *biz.OrganizationUseCase, userUC *biz.UserUseCase, opts ...NewOpt) *WorkflowService {
4850
return &WorkflowService{
4951
service: newService(opts...),
5052
useCase: uc,
5153
contractUC: wfuc,
5254
projectsUseCase: projectUseCase,
55+
orgUseCase: orgUC,
56+
userUseCase: userUC,
5357
}
5458
}
5559

@@ -59,6 +63,12 @@ func (s *WorkflowService) Create(ctx context.Context, req *pb.WorkflowServiceCre
5963
return nil, err
6064
}
6165

66+
// Get organization
67+
org, err := s.orgUseCase.FindByID(ctx, currentOrg.ID)
68+
if err != nil {
69+
return nil, handleUseCaseErr(err, s.log)
70+
}
71+
6272
if _, err = s.userHasPermissionOnProject(ctx, currentOrg.ID, &pb.IdentityReference{Name: &req.ProjectName}, authz.PolicyWorkflowCreate); err != nil {
6373
// if the project is not found, check if user can create projects
6474
if !errors.IsNotFound(err) {
@@ -71,14 +81,15 @@ func (s *WorkflowService) Create(ctx context.Context, req *pb.WorkflowServiceCre
7181
}
7282

7383
createOpts := &biz.WorkflowCreateOpts{
74-
OrgID: currentOrg.ID,
75-
Name: req.GetName(),
76-
Project: req.GetProjectName(),
77-
Team: req.GetTeam(),
78-
ContractName: req.GetContractName(),
79-
ContractBytes: req.GetContractBytes(),
80-
Description: req.GetDescription(),
81-
Public: req.GetPublic(),
84+
OrgID: currentOrg.ID,
85+
Name: req.GetName(),
86+
Project: req.GetProjectName(),
87+
Team: req.GetTeam(),
88+
ContractName: req.GetContractName(),
89+
ContractBytes: req.GetContractBytes(),
90+
Description: req.GetDescription(),
91+
Public: req.GetPublic(),
92+
OrgRestrictContractCreationToAdmins: org.RestrictContractCreationToOrgAdmins,
8293
}
8394

8495
// add current user as the owner of the project in case it needs to be created
@@ -89,6 +100,12 @@ func (s *WorkflowService) Create(ctx context.Context, req *pb.WorkflowServiceCre
89100
return nil, handleUseCaseErr(err, s.log)
90101
}
91102
createOpts.Owner = &userID
103+
104+
// Check if user is an org admin
105+
membership, err := s.userUseCase.MembershipInOrg(ctx, user.ID, org.Name)
106+
if err == nil && membership != nil {
107+
createOpts.UserIsOrgAdmin = membership.Role.IsAdmin()
108+
}
92109
}
93110

94111
p, err := s.useCase.Create(ctx, createOpts)

0 commit comments

Comments
 (0)