]> source.dussan.org Git - gitea.git/commitdiff
Add regenerate secret feature for oauth2 (#6291)
authorJonas Franz <info@jonasfranz.software>
Sat, 9 Mar 2019 16:29:58 +0000 (17:29 +0100)
committerGitHub <noreply@github.com>
Sat, 9 Mar 2019 16:29:58 +0000 (17:29 +0100)
* Add regenerate secret functionality

* Fix lint

routers/routes/routes.go
routers/user/setting/oauth2.go
templates/user/settings/applications_oauth2_edit.tmpl

index f2fd96c3d348cfc2e09bc735bef6fd7f54065afc..1e98d3216af600838a6e4726eda8fd4659893f42 100644 (file)
@@ -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)
                })
index 7ae8e7b7f669dc4412d8acf3133134fef118724a..1068b5db49b3bbd9811517c9092fde386afcd1ba 100644 (file)
@@ -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"))
index 5de179ecaf1ce5007d7ed3d47026cd69b5748075..d1b0beb60a06c4bfda0b02abf6eacd4745e3dce4 100644 (file)
                        <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">