Skip to content

Commit e1dceb3

Browse files
committed
add missed file
1 parent 71a244f commit e1dceb3

1 file changed

Lines changed: 38 additions & 0 deletions

File tree

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package flags
2+
3+
import (
4+
"fmt"
5+
"strings"
6+
7+
"github.com/spf13/cobra"
8+
)
9+
10+
type FineGrainedPermissions struct {
11+
TableNames []string `json:"t"`
12+
AllowedOperations []string `json:"a"`
13+
}
14+
15+
var fineGrainedPermissions []string
16+
17+
func AddFineGrainedPermissions(cmd *cobra.Command) {
18+
cmd.Flags().StringArrayVarP(&fineGrainedPermissions, "permissions", "p", nil, "fine-grained permissions in format <table-name|all>:<action1>,...\n(e.g: -p all:data_read -p comments:data_insert)")
19+
}
20+
21+
func FineGrainedPermissionsFlags() ([]FineGrainedPermissions, error) {
22+
permissions := make([]FineGrainedPermissions, 0)
23+
for _, permission := range fineGrainedPermissions {
24+
tokens := strings.SplitN(permission, ":", 2)
25+
if len(tokens) != 2 {
26+
return nil, fmt.Errorf("invalid permission format: '%v'", permission)
27+
}
28+
var tableNames []string
29+
if tokens[0] != "all" {
30+
tableNames = append(tableNames, tokens[0])
31+
}
32+
permissions = append(permissions, FineGrainedPermissions{
33+
TableNames: tableNames,
34+
AllowedOperations: strings.Split(tokens[1], ","),
35+
})
36+
}
37+
return permissions, nil
38+
}

0 commit comments

Comments
 (0)