From 4fb34360f013127e23655ee1c39912f2024f16bd Mon Sep 17 00:00:00 2001 From: Yarden Shoham Date: Sun, 23 Jul 2023 16:59:41 +0000 Subject: [PATCH] Fix CLI allowing creation of access tokens with existing name We are now: - Making sure there is no existing access token with the same name - Making sure the given scopes are valid Signed-off-by: Yarden Shoham --- cmd/admin_user_generate_access_token.go | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/cmd/admin_user_generate_access_token.go b/cmd/admin_user_generate_access_token.go index 9971c2ec91167..0febb9166137d 100644 --- a/cmd/admin_user_generate_access_token.go +++ b/cmd/admin_user_generate_access_token.go @@ -57,17 +57,28 @@ func runGenerateAccessToken(c *cli.Context) error { return err } - accessTokenScope, err := auth_model.AccessTokenScope(c.String("scopes")).Normalize() + // construct token with name and user so we can make sure it is unique + t := &auth_model.AccessToken{ + Name: c.String("token-name"), + UID: user.ID, + } + + exist, err := auth_model.AccessTokenByNameExists(t) if err != nil { return err } + if exist { + return fmt.Errorf("access token name has been used already") + } - t := &auth_model.AccessToken{ - Name: c.String("token-name"), - UID: user.ID, - Scope: accessTokenScope, + // make sure the scopes are valid + accessTokenScope, err := auth_model.AccessTokenScope(c.String("scopes")).Normalize() + if err != nil { + return fmt.Errorf("invalid access token scope provided: %w", err) } + t.Scope = accessTokenScope + // create the token if err := auth_model.NewAccessToken(t); err != nil { return err }