mirror of
https://github.com/LAX18/gitea.git
synced 2026-06-03 14:07:55 -09:00
Fix CLI allowing creation of access tokens with existing name (#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 #26044 Signed-off-by: Yarden Shoham <git@yardenshoham.com>
This commit is contained in:
@@ -57,17 +57,28 @@ func runGenerateAccessToken(c *cli.Context) error {
|
|||||||
return err
|
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 {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if exist {
|
||||||
t := &auth_model.AccessToken{
|
return fmt.Errorf("access token name has been used already")
|
||||||
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 {
|
if err := auth_model.NewAccessToken(t); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user