diff options
author | Patrick Bajao <ebajao@gitlab.com> | 2019-08-08 15:29:33 +0800 |
---|---|---|
committer | Patrick Bajao <ebajao@gitlab.com> | 2019-08-09 09:17:35 +0800 |
commit | 1962b49971cf1602ed5ee20b33193e10022cf8cb (patch) | |
tree | 6a12b351838af281ae2ad34a4340231f2a030d49 /go/internal/command/commandargs/authorized_principals.go | |
parent | 4812f6478771a6d261eb4a5c3aa4b450333fbf00 (diff) | |
download | gitlab-shell-1962b49971cf1602ed5ee20b33193e10022cf8cb.tar.gz |
Implement AuthorizedPrincipals command181-authorized-principals-check-go
Build this command when `Executable` name is
`gitlab-shell-authorized-principals-check`. Feature flag is the
same name.
Diffstat (limited to 'go/internal/command/commandargs/authorized_principals.go')
-rw-r--r-- | go/internal/command/commandargs/authorized_principals.go | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/go/internal/command/commandargs/authorized_principals.go b/go/internal/command/commandargs/authorized_principals.go new file mode 100644 index 0000000..746ae3f --- /dev/null +++ b/go/internal/command/commandargs/authorized_principals.go @@ -0,0 +1,50 @@ +package commandargs + +import ( + "errors" + "fmt" +) + +type AuthorizedPrincipals struct { + Arguments []string + KeyId string + Principals []string +} + +func (ap *AuthorizedPrincipals) Parse() error { + if err := ap.validate(); err != nil { + return err + } + + ap.KeyId = ap.Arguments[0] + ap.Principals = ap.Arguments[1:] + + return nil +} + +func (ap *AuthorizedPrincipals) GetArguments() []string { + return ap.Arguments +} + +func (ap *AuthorizedPrincipals) validate() error { + argsSize := len(ap.Arguments) + + if argsSize < 2 { + return errors.New(fmt.Sprintf("# Insufficient arguments. %d. Usage\n#\tgitlab-shell-authorized-principals-check <key-id> <principal1> [<principal2>...]", argsSize)) + } + + keyId := ap.Arguments[0] + principals := ap.Arguments[1:] + + if keyId == "" { + return errors.New("# No key_id provided") + } + + for _, principal := range principals { + if principal == "" { + return errors.New("# An invalid principal was provided") + } + } + + return nil +} |