Skip to content
This repository was archived by the owner on Feb 16, 2023. It is now read-only.

Commit 7469e82

Browse files
authored
Merge pull request #232 from secrethub/feature/acl-check-secret
Accept secret paths on acl check
2 parents bff74c6 + c7d0955 commit 7469e82

1 file changed

Lines changed: 33 additions & 6 deletions

File tree

internals/secrethub/acl_check.go

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"sort"
66
"text/tabwriter"
77

8+
"github.com/secrethub/secrethub-go/pkg/secretpath"
9+
810
"github.com/secrethub/secrethub-cli/internals/cli/ui"
911
"github.com/secrethub/secrethub-cli/internals/secrethub/command"
1012

@@ -38,12 +40,7 @@ func (cmd *ACLCheckCommand) Register(r command.Registerer) {
3840

3941
// Run prints the access level(s) on the given directory.
4042
func (cmd *ACLCheckCommand) Run() error {
41-
client, err := cmd.newClient()
42-
if err != nil {
43-
return err
44-
}
45-
46-
levels, err := client.AccessRules().ListLevels(cmd.path.Value())
43+
levels, err := cmd.listLevels()
4744
if err != nil {
4845
return err
4946
}
@@ -79,3 +76,33 @@ func (cmd *ACLCheckCommand) Run() error {
7976

8077
return nil
8178
}
79+
80+
func (cmd *ACLCheckCommand) listLevels() ([]*api.AccessLevel, error) {
81+
client, err := cmd.newClient()
82+
if err != nil {
83+
return nil, err
84+
}
85+
86+
path := cmd.path.Value()
87+
88+
levels, listLevelsErr := client.AccessRules().ListLevels(path)
89+
if listLevelsErr == nil {
90+
return levels, nil
91+
}
92+
if !api.IsErrNotFound(listLevelsErr) {
93+
return nil, listLevelsErr
94+
}
95+
96+
isSecret, isSecretErr := client.Secrets().Exists(path)
97+
if isSecretErr != nil {
98+
return nil, listLevelsErr
99+
}
100+
if isSecret {
101+
levels, err = client.AccessRules().ListLevels(secretpath.Parent(path))
102+
if err != nil {
103+
return nil, err
104+
}
105+
return levels, nil
106+
}
107+
return nil, listLevelsErr
108+
}

0 commit comments

Comments
 (0)