diff options
author | Jonas Franz <info@jonasfranz.software> | 2019-03-09 17:29:58 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-09 17:29:58 +0100 |
commit | 8fffb0616866cfe7a293b457d8703724666374cb (patch) | |
tree | 08e286ed4aeff36079b81eac5e58be4e5e789720 | |
parent | 8211e01d9e6f283077c5692b62d7ea81e0a60f9e (diff) | |
download | gitea-8fffb0616866cfe7a293b457d8703724666374cb.tar.gz gitea-8fffb0616866cfe7a293b457d8703724666374cb.zip |
Add regenerate secret feature for oauth2 (#6291)
* Add regenerate secret functionality
* Fix lint
-rw-r--r-- | routers/routes/routes.go | 1 | ||||
-rw-r--r-- | routers/user/setting/oauth2.go | 28 | ||||
-rw-r--r-- | templates/user/settings/applications_oauth2_edit.tmpl | 5 |
3 files changed, 33 insertions, 1 deletions
diff --git a/routers/routes/routes.go b/routers/routes/routes.go index f2fd96c3d3..1e98d3216a 100644 --- a/routers/routes/routes.go +++ b/routers/routes/routes.go @@ -302,6 +302,7 @@ func RegisterRoutes(m *macaron.Macaron) { m.Group("/applications/oauth2", func() { m.Get("/:id", userSetting.OAuth2ApplicationShow) m.Post("/:id", bindIgnErr(auth.EditOAuth2ApplicationForm{}), userSetting.OAuthApplicationsEdit) + m.Post("/:id/regenerate_secret", userSetting.OAuthApplicationsRegenerateSecret) m.Post("", bindIgnErr(auth.EditOAuth2ApplicationForm{}), userSetting.OAuthApplicationsPost) m.Post("/delete", userSetting.DeleteOAuth2Application) }) diff --git a/routers/user/setting/oauth2.go b/routers/user/setting/oauth2.go index 7ae8e7b7f6..1068b5db49 100644 --- a/routers/user/setting/oauth2.go +++ b/routers/user/setting/oauth2.go @@ -78,6 +78,34 @@ func OAuthApplicationsEdit(ctx *context.Context, form auth.EditOAuth2Application ctx.HTML(200, tplSettingsOAuthApplications) } +// OAuthApplicationsRegenerateSecret handles the post request for regenerating the secret +func OAuthApplicationsRegenerateSecret(ctx *context.Context) { + ctx.Data["Title"] = ctx.Tr("settings") + ctx.Data["PageIsSettingsApplications"] = true + + app, err := models.GetOAuth2ApplicationByID(ctx.ParamsInt64("id")) + if err != nil { + if models.IsErrOAuthApplicationNotFound(err) { + ctx.NotFound("Application not found", err) + return + } + ctx.ServerError("GetOAuth2ApplicationByID", err) + return + } + if app.UID != ctx.User.ID { + ctx.NotFound("Application not found", nil) + return + } + ctx.Data["App"] = app + ctx.Data["ClientSecret"], err = app.GenerateClientSecret() + if err != nil { + ctx.ServerError("GenerateClientSecret", err) + return + } + ctx.Flash.Success(ctx.Tr("settings.update_oauth2_application_success")) + ctx.HTML(200, tplSettingsOAuthApplications) +} + // OAuth2ApplicationShow displays the given application func OAuth2ApplicationShow(ctx *context.Context) { app, err := models.GetOAuth2ApplicationByID(ctx.ParamsInt64("id")) diff --git a/templates/user/settings/applications_oauth2_edit.tmpl b/templates/user/settings/applications_oauth2_edit.tmpl index 5de179ecaf..d1b0beb60a 100644 --- a/templates/user/settings/applications_oauth2_edit.tmpl +++ b/templates/user/settings/applications_oauth2_edit.tmpl @@ -30,7 +30,10 @@ <div class="item"> <!-- TODO add regenerate secret functionality */ --> {{.i18n.Tr "settings.oauth2_regenerate_secret_hint"}} - <a onclick="alert('Not yet implemented.')">{{.i18n.Tr "settings.oauth2_regenerate_secret"}}</a> + <form class="ui form ignore-dirty" action="{{$.AppSubURL}}/user/settings/applications/oauth2/{{.App.ID}}/regenerate_secret" method="post"> + {{.CsrfTokenHtml}} + <a href="#" onclick="event.target.parentNode.submit()">{{.i18n.Tr "settings.oauth2_regenerate_secret"}}</a> + </form> </div> </div> <div class="ui attached bottom segment"> |