Skip to content

Commit

Permalink
Fix CLI allowing creation of access tokens with existing name (go-git…
Browse files Browse the repository at this point in the history
…ea#26071)

We are now:
- Making sure there is no existing access token with the same name
- Making sure the given scopes are valid (we already did this before but
now we have a message)

The logic is mostly taken from
https://github.com/go-gitea/gitea/blob/a12a5f3652c339b17b187ff424a480631a3c1e1e/routers/api/v1/user/app.go#L101-L123

Closes go-gitea#26044

Signed-off-by: Yarden Shoham <[email protected]>
  • Loading branch information
yardenshoham authored Jul 25, 2023
1 parent 3e4a4f9 commit d36ddfe
Showing 1 changed file with 16 additions and 5 deletions.
21 changes: 16 additions & 5 deletions cmd/admin_user_generate_access_token.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down

0 comments on commit d36ddfe

Please sign in to comment.