mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-03 21:08:25 +00: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"
 | 
			
		||||
	"regexp"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/models"
 | 
			
		||||
	"code.gitea.io/gitea/models/login"
 | 
			
		||||
	"code.gitea.io/gitea/modules/auth/pam"
 | 
			
		||||
	"code.gitea.io/gitea/modules/base"
 | 
			
		||||
@@ -386,7 +385,7 @@ func EditAuthSourcePost(ctx *context.Context) {
 | 
			
		||||
	source.IsSyncEnabled = form.IsSyncEnabled
 | 
			
		||||
	source.Cfg = config
 | 
			
		||||
	if err := login.UpdateSource(source); err != nil {
 | 
			
		||||
		if models.IsErrOpenIDConnectInitialize(err) {
 | 
			
		||||
		if oauth2.IsErrOpenIDConnectInitialize(err) {
 | 
			
		||||
			ctx.Flash.Error(err.Error(), true)
 | 
			
		||||
			ctx.HTML(http.StatusOK, tplAuthEdit)
 | 
			
		||||
		} else {
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
package oauth2
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"code.gitea.io/gitea/models"
 | 
			
		||||
	"fmt"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// RegisterSource causes an OAuth2 configuration to be registered
 | 
			
		||||
@@ -20,11 +20,28 @@ func (source *Source) UnregisterSource() error {
 | 
			
		||||
	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
 | 
			
		||||
// inside oauth2: import cycle not allowed models -> modules/auth/oauth2 -> models
 | 
			
		||||
func wrapOpenIDConnectInitializeError(err error, providerName string, source *Source) error {
 | 
			
		||||
	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
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user