From 25425adf29ea28431635df356998062181131da6 Mon Sep 17 00:00:00 2001 From: Tim Riedl Date: Sat, 19 Apr 2025 00:36:54 +0200 Subject: [PATCH] Implement DeleteOauthAuth API and refactor source deletion logic --- models/auth/source.go | 7 ++++++- routers/api/v1/admin/auth_oauth.go | 15 +++++++++++++++ routers/api/v1/api.go | 7 +++++-- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/models/auth/source.go b/models/auth/source.go index a3a250cd91..fe121fb919 100644 --- a/models/auth/source.go +++ b/models/auth/source.go @@ -235,13 +235,18 @@ func CreateSource(ctx context.Context, source *Source) error { err = registerableSource.RegisterSource() if err != nil { // remove the AuthSource in case of errors while registering configuration - if _, err := db.GetEngine(ctx).ID(source.ID).Delete(new(Source)); err != nil { + if err := DeleteSource(ctx, source.ID); err != nil { log.Error("CreateSource: Error while wrapOpenIDConnectInitializeError: %v", err) } } return err } +func DeleteSource(ctx context.Context, id int64) error { + _, err := db.GetEngine(ctx).ID(id).Delete(new(Source)) + return err +} + type FindSourcesOptions struct { db.ListOptions IsActive optional.Option[bool] diff --git a/routers/api/v1/admin/auth_oauth.go b/routers/api/v1/admin/auth_oauth.go index 247d173f70..73ffb90af3 100644 --- a/routers/api/v1/admin/auth_oauth.go +++ b/routers/api/v1/admin/auth_oauth.go @@ -8,6 +8,7 @@ import ( "fmt" "net/http" "net/url" + "strconv" auth_model "code.gitea.io/gitea/models/auth" api "code.gitea.io/gitea/modules/structs" @@ -74,6 +75,20 @@ func EditOauthAuth(ctx *context.APIContext) { // DeleteOauthAuth api for deleting a authentication method func DeleteOauthAuth(ctx *context.APIContext) { + oauthIdString := ctx.PathParam("id") + oauthID, oauthIdErr := strconv.Atoi(oauthIdString) + if oauthIdErr != nil { + ctx.APIErrorInternal(oauthIdErr) + } + + err := auth_model.DeleteSource(ctx, int64(oauthID)) + + if err != nil { + ctx.APIErrorInternal(err) + return + } + + ctx.Status(http.StatusOK) } // // SearchOauthAuth API for getting information of the configured authentication methods according the filter conditions diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go index bdd25700a3..06c49a3d6d 100644 --- a/routers/api/v1/api.go +++ b/routers/api/v1/api.go @@ -1650,8 +1650,11 @@ func Routes() *web.Router { m.Group("/admin", func() { m.Group("/identity-auth", func() { - m.Get("", admin.SearchOauthAuth) - m.Post("/new", admin.CreateOauthAuth) + m.Group("oauth", func() { + m.Get("", admin.SearchOauthAuth) + m.Delete("/{id}", admin.DeleteOauthAuth) + m.Post("/new", admin.CreateOauthAuth) + }) }) m.Group("/cron", func() {