77 "errors"
88 "fmt"
99
10- "github.com/urfave/cli"
1110 "google.golang.org/protobuf/encoding/protojson"
1211
1312 "github.com/smallstep/certificates/ca"
@@ -18,22 +17,37 @@ import (
1817 "github.com/smallstep/cli/internal/command"
1918)
2019
21- var provisionerFilterFlag = cli.StringFlag {
22- Name : "provisioner" ,
23- Usage : `The provisioner <name>` ,
20+ func retrieveAndUnsetProvisionerFlagIfRequired (ctx context.Context ) string {
21+ // when managing policies on the authority level there's no need
22+ // to select a provisioner, so the flag does not need to be unset.
23+ if policycontext .IsAuthorityPolicyLevel (ctx ) {
24+ return ""
25+ }
26+
27+ clictx := command .CLIContextFromContext (ctx )
28+ provisioner := clictx .String ("provisioner" )
29+
30+ // unset the provisioner and issuer flag values, so that they're not used
31+ // automatically in token flows.
32+ if err := clictx .Set ("provisioner" , "" ); err != nil {
33+ panic (fmt .Errorf ("failed unsetting provisioner flag: %w" , err ))
34+ }
35+ if err := clictx .Set ("issuer" , "" ); err != nil {
36+ panic (fmt .Errorf ("failed unsetting issuer flag: %w" , err ))
37+ }
38+
39+ return provisioner
2440}
2541
26- func retrieveAndInitializePolicy (ctx context.Context , client * ca.AdminClient ) (* linkedca.Policy , error ) {
42+ func retrieveAndInitializePolicy (ctx context.Context , client * ca.AdminClient , provisioner string ) (* linkedca.Policy , error ) {
2743 var (
28- policy * linkedca.Policy
29- err error
44+ clictx = command .CLIContextFromContext (ctx )
45+ reference = clictx .String ("eab-key-reference" )
46+ keyID = clictx .String ("eab-key-id" )
47+ policy * linkedca.Policy
48+ err error
3049 )
3150
32- clictx := command .CLIContextFromContext (ctx )
33- provisioner := clictx .String ("provisioner" )
34- reference := clictx .String ("eab-key-reference" )
35- keyID := clictx .String ("eab-key-id" )
36-
3751 switch {
3852 case policycontext .IsAuthorityPolicyLevel (ctx ):
3953 policy , err = client .GetAuthorityPolicy ()
@@ -147,13 +161,11 @@ func initPolicy(p *linkedca.Policy) *linkedca.Policy {
147161 return p
148162}
149163
150- func updatePolicy (ctx context.Context , client * ca.AdminClient , policy * linkedca.Policy ) (* linkedca.Policy , error ) {
151- clictx := command .CLIContextFromContext (ctx )
152- provisioner := clictx .String ("provisioner" )
153- reference := clictx .String ("eab-key-reference" )
154- keyID := clictx .String ("eab-key-id" )
155-
164+ func updatePolicy (ctx context.Context , client * ca.AdminClient , policy * linkedca.Policy , provisioner string ) (* linkedca.Policy , error ) {
156165 var (
166+ clictx = command .CLIContextFromContext (ctx )
167+ reference = clictx .String ("eab-key-reference" )
168+ keyID = clictx .String ("eab-key-id" )
157169 updatedPolicy * linkedca.Policy
158170 err error
159171 )
0 commit comments