Skip to content

Commit 8a4e7e0

Browse files
authoredOct 31, 2024··
feat: add prompting to confirm project role deletion (#20613)
* Revert "fix(ui): Prevent versionId 0 Error on New Applications with No History (#20574)" This reverts commit 33ecbbc. * feat: add prompting to confirm project role deletion Signed-off-by: pashakostohrys <pavel@codefresh.io> * Revert "Revert "fix(ui): Prevent versionId 0 Error on New Applications with No History (#20574)"" This reverts commit cecf8f4. * feat: add prompting to confirm project role deletion Signed-off-by: pashakostohrys <pavel@codefresh.io> --------- Signed-off-by: pashakostohrys <pavel@codefresh.io>
1 parent 79abbbe commit 8a4e7e0

File tree

1 file changed

+43
-11
lines changed

1 file changed

+43
-11
lines changed
 

‎cmd/argocd/commands/project_role.go

+43-11
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/spf13/cobra"
1313

1414
"github.com/argoproj/argo-cd/v2/cmd/argocd/commands/headless"
15+
"github.com/argoproj/argo-cd/v2/cmd/argocd/commands/utils"
1516
argocdclient "github.com/argoproj/argo-cd/v2/pkg/apiclient"
1617
projectpkg "github.com/argoproj/argo-cd/v2/pkg/apiclient/project"
1718
"github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
@@ -169,8 +170,15 @@ ID ISSUED-AT EXPIRES-AT
169170
}
170171
role.Policies[duplicateIndex] = role.Policies[len(role.Policies)-1]
171172
proj.Spec.Roles[roleIndex].Policies = role.Policies[:len(role.Policies)-1]
172-
_, err = projIf.Update(ctx, &projectpkg.ProjectUpdateRequest{Project: proj})
173-
errors.CheckError(err)
173+
174+
promptUtil := utils.NewPrompt(clientOpts.PromptsEnabled)
175+
canDelete := promptUtil.Confirm(fmt.Sprintf("Are you sure you want to delete '%s' policy? [y/n]", policyToRemove))
176+
if canDelete {
177+
_, err = projIf.Update(ctx, &projectpkg.ProjectUpdateRequest{Project: proj})
178+
errors.CheckError(err)
179+
} else {
180+
fmt.Printf("The command to delete policy '%s' was cancelled.\n", policyToRemove)
181+
}
174182
},
175183
}
176184
addPolicyFlags(command, &opts)
@@ -237,6 +245,8 @@ func NewProjectRoleDeleteCommand(clientOpts *argocdclient.ClientOptions) *cobra.
237245
conn, projIf := headless.NewClientOrDie(clientOpts, c).NewProjectClientOrDie()
238246
defer io.Close(conn)
239247

248+
promptUtil := utils.NewPrompt(clientOpts.PromptsEnabled)
249+
240250
proj, err := projIf.Get(ctx, &projectpkg.ProjectQuery{Name: projName})
241251
errors.CheckError(err)
242252

@@ -248,9 +258,14 @@ func NewProjectRoleDeleteCommand(clientOpts *argocdclient.ClientOptions) *cobra.
248258
proj.Spec.Roles[index] = proj.Spec.Roles[len(proj.Spec.Roles)-1]
249259
proj.Spec.Roles = proj.Spec.Roles[:len(proj.Spec.Roles)-1]
250260

251-
_, err = projIf.Update(ctx, &projectpkg.ProjectUpdateRequest{Project: proj})
252-
errors.CheckError(err)
253-
fmt.Printf("Role '%s' deleted\n", roleName)
261+
canDelete := promptUtil.Confirm(fmt.Sprintf("Are you sure you want to delete '%s' role? [y/n]", roleName))
262+
if canDelete {
263+
_, err = projIf.Update(ctx, &projectpkg.ProjectUpdateRequest{Project: proj})
264+
errors.CheckError(err)
265+
fmt.Printf("Role '%s' deleted\n", roleName)
266+
} else {
267+
fmt.Printf("The command to delete role '%s' was cancelled.\n", roleName)
268+
}
254269
},
255270
}
256271
return command
@@ -437,14 +452,22 @@ $ argocd proj role delete-token test-project test-role 1696769937
437452
}
438453
projName := args[0]
439454
roleName := args[1]
440-
issuedAt, err := strconv.ParseInt(args[2], 10, 64)
455+
tokenId := args[2]
456+
issuedAt, err := strconv.ParseInt(tokenId, 10, 64)
441457
errors.CheckError(err)
442458

459+
promptUtil := utils.NewPrompt(clientOpts.PromptsEnabled)
460+
443461
conn, projIf := headless.NewClientOrDie(clientOpts, c).NewProjectClientOrDie()
444462
defer io.Close(conn)
445463

446-
_, err = projIf.DeleteToken(ctx, &projectpkg.ProjectTokenDeleteRequest{Project: projName, Role: roleName, Iat: issuedAt})
447-
errors.CheckError(err)
464+
canDelete := promptUtil.Confirm(fmt.Sprintf("Are you sure you want to delete '%s' project token? [y/n]", tokenId))
465+
if canDelete {
466+
_, err = projIf.DeleteToken(ctx, &projectpkg.ProjectTokenDeleteRequest{Project: projName, Role: roleName, Iat: issuedAt})
467+
errors.CheckError(err)
468+
} else {
469+
fmt.Printf("The command to delete project token '%s' was cancelled.\n", tokenId)
470+
}
448471
},
449472
}
450473
return command
@@ -621,9 +644,18 @@ func NewProjectRoleRemoveGroupCommand(clientOpts *argocdclient.ClientOptions) *c
621644
fmt.Printf("Group '%s' not present in role '%s'\n", groupName, roleName)
622645
return
623646
}
624-
_, err = projIf.Update(ctx, &projectpkg.ProjectUpdateRequest{Project: proj})
625-
errors.CheckError(err)
626-
fmt.Printf("Group '%s' removed from role '%s'\n", groupName, roleName)
647+
648+
promptUtil := utils.NewPrompt(clientOpts.PromptsEnabled)
649+
650+
canDelete := promptUtil.Confirm(fmt.Sprintf("Are you sure you want to remove '%s' group from role '%s'? [y/n]", groupName, roleName))
651+
652+
if canDelete {
653+
_, err = projIf.Update(ctx, &projectpkg.ProjectUpdateRequest{Project: proj})
654+
errors.CheckError(err)
655+
fmt.Printf("Group '%s' removed from role '%s'\n", groupName, roleName)
656+
} else {
657+
fmt.Printf("The command to remove group '%s' from role '%s' was cancelled.\n", groupName, roleName)
658+
}
627659
},
628660
}
629661
return command

0 commit comments

Comments
 (0)
Please sign in to comment.