Skip to content

Commit ab69b9b

Browse files
authored
Refactor UpdateOAuth2Application (#11034)
Following on from #11008 refactor UpdateOAuth2Application
1 parent c25969e commit ab69b9b

File tree

3 files changed

+30
-24
lines changed

3 files changed

+30
-24
lines changed

models/oauth2_application.go

+26-10
Original file line numberDiff line numberDiff line change
@@ -196,18 +196,34 @@ type UpdateOAuth2ApplicationOptions struct {
196196
}
197197

198198
// UpdateOAuth2Application updates an oauth2 application
199-
func UpdateOAuth2Application(opts UpdateOAuth2ApplicationOptions) error {
200-
return updateOAuth2Application(x, opts)
201-
}
199+
func UpdateOAuth2Application(opts UpdateOAuth2ApplicationOptions) (*OAuth2Application, error) {
200+
sess := x.NewSession()
201+
if err := sess.Begin(); err != nil {
202+
return nil, err
203+
}
204+
defer sess.Close()
202205

203-
func updateOAuth2Application(e Engine, opts UpdateOAuth2ApplicationOptions) error {
204-
app := &OAuth2Application{
205-
ID: opts.ID,
206-
UID: opts.UserID,
207-
Name: opts.Name,
208-
RedirectURIs: opts.RedirectURIs,
206+
app, err := getOAuth2ApplicationByID(sess, opts.ID)
207+
if err != nil {
208+
return nil, err
209+
}
210+
if app.UID != opts.UserID {
211+
return nil, fmt.Errorf("UID missmatch")
209212
}
210-
if _, err := e.ID(opts.ID).Update(app); err != nil {
213+
214+
app.Name = opts.Name
215+
app.RedirectURIs = opts.RedirectURIs
216+
217+
if err = updateOAuth2Application(sess, app); err != nil {
218+
return nil, err
219+
}
220+
app.ClientSecret = ""
221+
222+
return app, sess.Commit()
223+
}
224+
225+
func updateOAuth2Application(e Engine, app *OAuth2Application) error {
226+
if _, err := e.ID(app.ID).Update(app); err != nil {
211227
return err
212228
}
213229
return nil

routers/api/v1/user/app.go

+2-8
Original file line numberDiff line numberDiff line change
@@ -301,17 +301,12 @@ func UpdateOauth2Application(ctx *context.APIContext, data api.CreateOAuth2Appli
301301
// "$ref": "#/responses/OAuth2Application"
302302
appID := ctx.ParamsInt64(":id")
303303

304-
err := models.UpdateOAuth2Application(models.UpdateOAuth2ApplicationOptions{
304+
app, err := models.UpdateOAuth2Application(models.UpdateOAuth2ApplicationOptions{
305305
Name: data.Name,
306306
UserID: ctx.User.ID,
307307
ID: appID,
308308
RedirectURIs: data.RedirectURIs,
309309
})
310-
if err != nil {
311-
ctx.Error(http.StatusBadRequest, "", "error updating oauth2 application")
312-
return
313-
}
314-
app, err := models.GetOAuth2ApplicationByID(appID)
315310
if err != nil {
316311
if models.IsErrOauthClientIDInvalid(err) || models.IsErrOAuthApplicationNotFound(err) {
317312
ctx.NotFound()
@@ -320,12 +315,11 @@ func UpdateOauth2Application(ctx *context.APIContext, data api.CreateOAuth2Appli
320315
}
321316
return
322317
}
323-
secret, err := app.GenerateClientSecret()
318+
app.ClientSecret, err = app.GenerateClientSecret()
324319
if err != nil {
325320
ctx.Error(http.StatusBadRequest, "", "error updating application secret")
326321
return
327322
}
328-
app.ClientSecret = secret
329323

330324
ctx.JSON(http.StatusOK, convert.ToOAuth2Application(app))
331325
}

routers/user/setting/oauth2.go

+2-6
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,8 @@ func OAuthApplicationsEdit(ctx *context.Context, form auth.EditOAuth2Application
6262
return
6363
}
6464
// TODO validate redirect URI
65-
if err := models.UpdateOAuth2Application(models.UpdateOAuth2ApplicationOptions{
65+
var err error
66+
if ctx.Data["App"], err = models.UpdateOAuth2Application(models.UpdateOAuth2ApplicationOptions{
6667
ID: ctx.ParamsInt64("id"),
6768
Name: form.Name,
6869
RedirectURIs: []string{form.RedirectURI},
@@ -71,11 +72,6 @@ func OAuthApplicationsEdit(ctx *context.Context, form auth.EditOAuth2Application
7172
ctx.ServerError("UpdateOAuth2Application", err)
7273
return
7374
}
74-
var err error
75-
if ctx.Data["App"], err = models.GetOAuth2ApplicationByID(ctx.ParamsInt64("id")); err != nil {
76-
ctx.ServerError("GetOAuth2ApplicationByID", err)
77-
return
78-
}
7975
ctx.Flash.Success(ctx.Tr("settings.update_oauth2_application_success"))
8076
ctx.HTML(200, tplSettingsOAuthApplications)
8177
}

0 commit comments

Comments
 (0)