diff --git a/models/audit/action.go b/models/audit/action.go index 48d4b73eaa6..0fabc3f5d0b 100644 --- a/models/audit/action.go +++ b/models/audit/action.go @@ -91,6 +91,7 @@ var ( UserOpenIDAdd = define("user:openid:add", "Associated OpenID {openid} to user {scope}.") UserOpenIDRemove = define("user:openid:remove", "Removed OpenID {openid} from user {scope}.") UserAccessTokenAdd = define("user:accesstoken:add", "Added access token {token} for user {scope} with scope {token_scope}.") + UserAccessTokenRegenerate = define("user:accesstoken:regenerate", "Regenerated access token {token} of user {scope}.") UserAccessTokenRemove = define("user:accesstoken:remove", "Removed access token {token} from user {scope}.") UserOAuth2ApplicationAdd = define("user:oauth2application:add", "Added OAuth2 application {oauth2_application} for user {scope}.") UserOAuth2ApplicationUpdate = define("user:oauth2application:update", "Updated OAuth2 application {oauth2_application} of user {scope}.") diff --git a/routers/web/admin/users.go b/routers/web/admin/users.go index 45557c4bf51..e41b4807e04 100644 --- a/routers/web/admin/users.go +++ b/routers/web/admin/users.go @@ -388,6 +388,12 @@ func DeleteBotToken(ctx *context.Context) { } } +func RegenerateBotToken(ctx *context.Context) { + if u := getTargetBot(ctx); u != nil { + user_setting.RegenerateAccessToken(ctx, u) + } +} + func editUserCommon(ctx *context.Context) { ctx.Data["Title"] = ctx.Tr("admin.users.edit_account") ctx.Data["PageIsAdminUsers"] = true diff --git a/routers/web/user/setting/applications.go b/routers/web/user/setting/applications.go index 60e9f46fcca..11be9c358ff 100644 --- a/routers/web/user/setting/applications.go +++ b/routers/web/user/setting/applications.go @@ -167,16 +167,23 @@ func DeleteAccessToken(ctx *context.Context, owner *user_model.User) { ctx.JSONRedirect("") } -// RegenerateAccessToken response for regenerating a user's access token -func RegenerateAccessToken(ctx *context.Context) { - t, err := auth_model.RegenerateAccessToken(ctx, ctx.FormInt64("id"), ctx.Doer.ID) +// ApplicationsRegenerateToken response for regenerating the current user's access token +func ApplicationsRegenerateToken(ctx *context.Context) { + RegenerateAccessToken(ctx, ctx.Doer) +} + +// RegenerateAccessToken regenerates an access token belonging to owner +func RegenerateAccessToken(ctx *context.Context, owner *user_model.User) { + t, err := auth_model.RegenerateAccessToken(ctx, ctx.FormInt64("id"), owner.ID) if err != nil { ctx.ServerError("RegenerateAccessToken", err) return } + audit.Record(ctx, audit_model.UserAccessTokenRegenerate, owner, "token", t.Name) + ctx.Flash.Success(ctx.Tr("settings.generate_token_success")) ctx.Flash.Info(t.Token) - ctx.JSONRedirect(setting.AppSubURL + "/user/settings/applications") + ctx.JSONRedirect("") } func loadApplicationsData(ctx *context.Context) { diff --git a/routers/web/web.go b/routers/web/web.go index bdd8560b796..8a07fd4b26b 100644 --- a/routers/web/web.go +++ b/routers/web/web.go @@ -695,7 +695,7 @@ func registerWebRoutes(m *web.Router, webAuth *AuthMiddleware) { m.Combo("").Get(user_setting.Applications). Post(user_setting.ApplicationsPost) m.Post("/delete", user_setting.DeleteApplication) - m.Post("/regenerate", user_setting.RegenerateAccessToken) + m.Post("/regenerate", user_setting.ApplicationsRegenerateToken) }) m.Combo("/keys").Get(user_setting.Keys). @@ -824,6 +824,7 @@ func registerWebRoutes(m *web.Router, webAuth *AuthMiddleware) { m.Post("/{userid}/avatar/delete", admin.DeleteAvatar) m.Post("/{userid}/access_tokens", admin.NewBotTokenPost) m.Post("/{userid}/access_tokens/delete", admin.DeleteBotToken) + m.Post("/{userid}/access_tokens/regenerate", admin.RegenerateBotToken) m.Post("/{userid}/orgs/{org_id}/remove", admin.RemoveUserFromOrg) m.Post("/{userid}/orgs/remove-all", admin.RemoveUserFromAllOrgs) }) diff --git a/templates/shared/user/access_tokens.tmpl b/templates/shared/user/access_tokens.tmpl index a8785e79241..a9c60a6ed1d 100644 --- a/templates/shared/user/access_tokens.tmpl +++ b/templates/shared/user/access_tokens.tmpl @@ -48,12 +48,10 @@