mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Move oauth2 error to oauth2 service package (#17603)
This commit is contained in:
		@@ -1,24 +0,0 @@
 | 
				
			|||||||
// Copyright 2017 The Gitea Authors. All rights reserved.
 | 
					 | 
				
			||||||
// Use of this source code is governed by a MIT-style
 | 
					 | 
				
			||||||
// license that can be found in the LICENSE file.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
package models
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import "fmt"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// ErrOpenIDConnectInitialize represents a "OpenIDConnectInitialize" kind of error.
 | 
					 | 
				
			||||||
type ErrOpenIDConnectInitialize struct {
 | 
					 | 
				
			||||||
	OpenIDConnectAutoDiscoveryURL string
 | 
					 | 
				
			||||||
	ProviderName                  string
 | 
					 | 
				
			||||||
	Cause                         error
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// IsErrOpenIDConnectInitialize checks if an error is a ExternalLoginUserAlreadyExist.
 | 
					 | 
				
			||||||
func IsErrOpenIDConnectInitialize(err error) bool {
 | 
					 | 
				
			||||||
	_, ok := err.(ErrOpenIDConnectInitialize)
 | 
					 | 
				
			||||||
	return ok
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
func (err ErrOpenIDConnectInitialize) Error() string {
 | 
					 | 
				
			||||||
	return fmt.Sprintf("Failed to initialize OpenID Connect Provider with name '%s' with url '%s': %v", err.ProviderName, err.OpenIDConnectAutoDiscoveryURL, err.Cause)
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -10,7 +10,6 @@ import (
 | 
				
			|||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
	"regexp"
 | 
						"regexp"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"code.gitea.io/gitea/models"
 | 
					 | 
				
			||||||
	"code.gitea.io/gitea/models/login"
 | 
						"code.gitea.io/gitea/models/login"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/auth/pam"
 | 
						"code.gitea.io/gitea/modules/auth/pam"
 | 
				
			||||||
	"code.gitea.io/gitea/modules/base"
 | 
						"code.gitea.io/gitea/modules/base"
 | 
				
			||||||
@@ -386,7 +385,7 @@ func EditAuthSourcePost(ctx *context.Context) {
 | 
				
			|||||||
	source.IsSyncEnabled = form.IsSyncEnabled
 | 
						source.IsSyncEnabled = form.IsSyncEnabled
 | 
				
			||||||
	source.Cfg = config
 | 
						source.Cfg = config
 | 
				
			||||||
	if err := login.UpdateSource(source); err != nil {
 | 
						if err := login.UpdateSource(source); err != nil {
 | 
				
			||||||
		if models.IsErrOpenIDConnectInitialize(err) {
 | 
							if oauth2.IsErrOpenIDConnectInitialize(err) {
 | 
				
			||||||
			ctx.Flash.Error(err.Error(), true)
 | 
								ctx.Flash.Error(err.Error(), true)
 | 
				
			||||||
			ctx.HTML(http.StatusOK, tplAuthEdit)
 | 
								ctx.HTML(http.StatusOK, tplAuthEdit)
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@
 | 
				
			|||||||
package oauth2
 | 
					package oauth2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"code.gitea.io/gitea/models"
 | 
						"fmt"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// RegisterSource causes an OAuth2 configuration to be registered
 | 
					// RegisterSource causes an OAuth2 configuration to be registered
 | 
				
			||||||
@@ -20,11 +20,28 @@ func (source *Source) UnregisterSource() error {
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// ErrOpenIDConnectInitialize represents a "OpenIDConnectInitialize" kind of error.
 | 
				
			||||||
 | 
					type ErrOpenIDConnectInitialize struct {
 | 
				
			||||||
 | 
						OpenIDConnectAutoDiscoveryURL string
 | 
				
			||||||
 | 
						ProviderName                  string
 | 
				
			||||||
 | 
						Cause                         error
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// IsErrOpenIDConnectInitialize checks if an error is a ExternalLoginUserAlreadyExist.
 | 
				
			||||||
 | 
					func IsErrOpenIDConnectInitialize(err error) bool {
 | 
				
			||||||
 | 
						_, ok := err.(ErrOpenIDConnectInitialize)
 | 
				
			||||||
 | 
						return ok
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					func (err ErrOpenIDConnectInitialize) Error() string {
 | 
				
			||||||
 | 
						return fmt.Sprintf("Failed to initialize OpenID Connect Provider with name '%s' with url '%s': %v", err.ProviderName, err.OpenIDConnectAutoDiscoveryURL, err.Cause)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// wrapOpenIDConnectInitializeError is used to wrap the error but this cannot be done in modules/auth/oauth2
 | 
					// wrapOpenIDConnectInitializeError is used to wrap the error but this cannot be done in modules/auth/oauth2
 | 
				
			||||||
// inside oauth2: import cycle not allowed models -> modules/auth/oauth2 -> models
 | 
					// inside oauth2: import cycle not allowed models -> modules/auth/oauth2 -> models
 | 
				
			||||||
func wrapOpenIDConnectInitializeError(err error, providerName string, source *Source) error {
 | 
					func wrapOpenIDConnectInitializeError(err error, providerName string, source *Source) error {
 | 
				
			||||||
	if err != nil && source.Provider == "openidConnect" {
 | 
						if err != nil && source.Provider == "openidConnect" {
 | 
				
			||||||
		err = models.ErrOpenIDConnectInitialize{ProviderName: providerName, OpenIDConnectAutoDiscoveryURL: source.OpenIDConnectAutoDiscoveryURL, Cause: err}
 | 
							err = ErrOpenIDConnectInitialize{ProviderName: providerName, OpenIDConnectAutoDiscoveryURL: source.OpenIDConnectAutoDiscoveryURL, Cause: err}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return err
 | 
						return err
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user