From d748c6c2430f99b8cffeaca0791ce2c4ed956fd4 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Thu, 23 Oct 2025 13:46:52 +0200 Subject: [PATCH 1/6] more error context --- server/forge/gitea/gitea.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server/forge/gitea/gitea.go b/server/forge/gitea/gitea.go index 5e4e4dae2bb..71943921990 100644 --- a/server/forge/gitea/gitea.go +++ b/server/forge/gitea/gitea.go @@ -120,16 +120,16 @@ func (c *Gitea) Login(ctx context.Context, req *forge_types.OAuthRequest) (*mode token, err := config.Exchange(oauth2Ctx, req.Code) if err != nil { - return nil, redirectURL, err + return nil, redirectURL, fmt.Errorf("oauth2 config exchange failed with code '%s': %w", req.Code, err) } client, err := c.newClientToken(ctx, token.AccessToken) if err != nil { - return nil, redirectURL, err + return nil, redirectURL, fmt.Errorf("client creation with new access token failed: %w", err) } account, _, err := client.GetMyUserInfo() if err != nil { - return nil, redirectURL, err + return nil, redirectURL, fmt.Errorf("fetch user info failed: %w", err) } return &model.User{ From 9cff024e98127b6748e35a6743717c3107db5032 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Thu, 23 Oct 2025 14:06:10 +0200 Subject: [PATCH 2/6] trace has more infos --- server/api/login.go | 1 + 1 file changed, 1 insertion(+) diff --git a/server/api/login.go b/server/api/login.go index 060d53638bf..1a05ca3b5d3 100644 --- a/server/api/login.go +++ b/server/api/login.go @@ -210,6 +210,7 @@ func HandleAuth(c *gin.Context) { // insert the user into the database if err := _store.CreateUser(user); err != nil { log.Error().Err(err).Msgf("cannot insert %s", user.Login) + log.Trace().Msgf("user was: %#v", user) c.Redirect(http.StatusSeeOther, server.Config.Server.RootPath+"/login?error=internal_error") return } From 771e616187d91dd6e6f7f687462c8482aaf51b90 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Thu, 23 Oct 2025 14:09:01 +0200 Subject: [PATCH 3/6] User model: login is now only unique per user --- server/model/user.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/server/model/user.go b/server/model/user.go index 7a7cbf36623..fc6211074c3 100644 --- a/server/model/user.go +++ b/server/model/user.go @@ -34,14 +34,14 @@ type User struct { // required: true ID int64 `json:"id" xorm:"pk autoincr 'id'"` - ForgeID int64 `json:"forge_id,omitempty" xorm:"forge_id UNIQUE(forge)"` + ForgeID int64 `json:"forge_id,omitempty" xorm:"forge_id UNIQUE(forge_id) UNIQUE(forge_login)"` - ForgeRemoteID ForgeRemoteID `json:"forge_remote_id" xorm:"forge_remote_id UNIQUE(forge)"` + ForgeRemoteID ForgeRemoteID `json:"forge_remote_id" xorm:"forge_remote_id UNIQUE(forge_id)"` // Login is the username for this user. // // required: true - Login string `json:"login" xorm:"UNIQUE 'login'"` + Login string `json:"login" xorm:"'login' UNIQUE(forge_login)"` // AccessToken is the oauth2 access token. AccessToken string `json:"-" xorm:"TEXT 'access_token'"` From 17ba3c79a04c09500fee843e69ef671470becbd9 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Thu, 23 Oct 2025 14:28:18 +0200 Subject: [PATCH 4/6] Update server/forge/gitea/gitea.go --- server/forge/gitea/gitea.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/forge/gitea/gitea.go b/server/forge/gitea/gitea.go index 71943921990..a854fe86855 100644 --- a/server/forge/gitea/gitea.go +++ b/server/forge/gitea/gitea.go @@ -120,7 +120,7 @@ func (c *Gitea) Login(ctx context.Context, req *forge_types.OAuthRequest) (*mode token, err := config.Exchange(oauth2Ctx, req.Code) if err != nil { - return nil, redirectURL, fmt.Errorf("oauth2 config exchange failed with code '%s': %w", req.Code, err) + return nil, redirectURL, fmt.Errorf("oauth2 config exchange failed: %w",, err) } client, err := c.newClientToken(ctx, token.AccessToken) From 8bfbf53df58576e1cbc8becdcd22e21343456179 Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Thu, 23 Oct 2025 14:46:06 +0200 Subject: [PATCH 5/6] fix --- server/forge/gitea/gitea.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/forge/gitea/gitea.go b/server/forge/gitea/gitea.go index a854fe86855..f1b932e0d96 100644 --- a/server/forge/gitea/gitea.go +++ b/server/forge/gitea/gitea.go @@ -120,7 +120,7 @@ func (c *Gitea) Login(ctx context.Context, req *forge_types.OAuthRequest) (*mode token, err := config.Exchange(oauth2Ctx, req.Code) if err != nil { - return nil, redirectURL, fmt.Errorf("oauth2 config exchange failed: %w",, err) + return nil, redirectURL, fmt.Errorf("oauth2 config exchange failed: %w", err) } client, err := c.newClientToken(ctx, token.AccessToken) From d7f2b161baeff646c152ccff76a2b380bebc633d Mon Sep 17 00:00:00 2001 From: 6543 <6543@obermui.de> Date: Thu, 23 Oct 2025 17:17:38 +0200 Subject: [PATCH 6/6] Update server/forge/gitea/gitea.go Co-authored-by: Anbraten <6918444+anbraten@users.noreply.github.com> --- server/forge/gitea/gitea.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/forge/gitea/gitea.go b/server/forge/gitea/gitea.go index f1b932e0d96..0f3f5262b17 100644 --- a/server/forge/gitea/gitea.go +++ b/server/forge/gitea/gitea.go @@ -129,7 +129,7 @@ func (c *Gitea) Login(ctx context.Context, req *forge_types.OAuthRequest) (*mode } account, _, err := client.GetMyUserInfo() if err != nil { - return nil, redirectURL, fmt.Errorf("fetch user info failed: %w", err) + return nil, redirectURL, fmt.Errorf("fetching user info failed: %w", err) } return &model.User{