Remove `Named` interface (#26913)
`Named` is implemented by every `Method` and future implementations should implement the method too.
This commit is contained in:
		
							parent
							
								
									a99b96cbcd
								
							
						
					
					
						commit
						0eebeeec90
					
				| 
						 | 
				
			
			@ -36,6 +36,8 @@ var (
 | 
			
		|||
	algorithmPattern     = regexp.MustCompile(`algorithm=(\w+)`)
 | 
			
		||||
	versionPattern       = regexp.MustCompile(`version=(\d+\.\d+)`)
 | 
			
		||||
	authorizationPattern = regexp.MustCompile(`\AX-Ops-Authorization-(\d+)`)
 | 
			
		||||
 | 
			
		||||
	_ auth.Method = &Auth{}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Documentation:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,6 +12,8 @@ import (
 | 
			
		|||
	"code.gitea.io/gitea/services/packages"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var _ auth.Method = &Auth{}
 | 
			
		||||
 | 
			
		||||
type Auth struct{}
 | 
			
		||||
 | 
			
		||||
func (a *Auth) Name() string {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,6 +12,8 @@ import (
 | 
			
		|||
	"code.gitea.io/gitea/services/packages"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var _ auth.Method = &Auth{}
 | 
			
		||||
 | 
			
		||||
type Auth struct{}
 | 
			
		||||
 | 
			
		||||
func (a *Auth) Name() string {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,6 +13,8 @@ import (
 | 
			
		|||
	"code.gitea.io/gitea/services/auth"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var _ auth.Method = &Auth{}
 | 
			
		||||
 | 
			
		||||
type Auth struct{}
 | 
			
		||||
 | 
			
		||||
func (a *Auth) Name() string {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,7 +21,6 @@ import (
 | 
			
		|||
// Ensure the struct implements the interface.
 | 
			
		||||
var (
 | 
			
		||||
	_ Method = &Basic{}
 | 
			
		||||
	_ Named  = &Basic{}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// BasicMethodName is the constant name of the basic authentication method
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -5,7 +5,6 @@ package auth
 | 
			
		|||
 | 
			
		||||
import (
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"reflect"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	user_model "code.gitea.io/gitea/models/user"
 | 
			
		||||
| 
						 | 
				
			
			@ -37,21 +36,16 @@ func (b *Group) Add(method Method) {
 | 
			
		|||
func (b *Group) Name() string {
 | 
			
		||||
	names := make([]string, 0, len(b.methods))
 | 
			
		||||
	for _, m := range b.methods {
 | 
			
		||||
		if n, ok := m.(Named); ok {
 | 
			
		||||
			names = append(names, n.Name())
 | 
			
		||||
		} else {
 | 
			
		||||
			names = append(names, reflect.TypeOf(m).Elem().Name())
 | 
			
		||||
		}
 | 
			
		||||
		names = append(names, m.Name())
 | 
			
		||||
	}
 | 
			
		||||
	return strings.Join(names, ",")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Verify extracts and validates
 | 
			
		||||
func (b *Group) Verify(req *http.Request, w http.ResponseWriter, store DataStore, sess SessionStore) (*user_model.User, error) {
 | 
			
		||||
	// Try to sign in with each of the enabled plugins
 | 
			
		||||
	var retErr error
 | 
			
		||||
	for _, ssoMethod := range b.methods {
 | 
			
		||||
		user, err := ssoMethod.Verify(req, w, store, sess)
 | 
			
		||||
	for _, m := range b.methods {
 | 
			
		||||
		user, err := m.Verify(req, w, store, sess)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			if retErr == nil {
 | 
			
		||||
				retErr = err
 | 
			
		||||
| 
						 | 
				
			
			@ -67,9 +61,7 @@ func (b *Group) Verify(req *http.Request, w http.ResponseWriter, store DataStore
 | 
			
		|||
		// Return the user and ignore any error returned by previous methods.
 | 
			
		||||
		if user != nil {
 | 
			
		||||
			if store.GetData()["AuthedMethod"] == nil {
 | 
			
		||||
				if named, ok := ssoMethod.(Named); ok {
 | 
			
		||||
					store.GetData()["AuthedMethod"] = named.Name()
 | 
			
		||||
				}
 | 
			
		||||
				store.GetData()["AuthedMethod"] = m.Name()
 | 
			
		||||
			}
 | 
			
		||||
			return user, nil
 | 
			
		||||
		}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ import (
 | 
			
		|||
// Ensure the struct implements the interface.
 | 
			
		||||
var (
 | 
			
		||||
	_ Method = &HTTPSign{}
 | 
			
		||||
	_ Named  = &HTTPSign{}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// HTTPSign implements the Auth interface and authenticates requests (API requests
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,10 +27,7 @@ type Method interface {
 | 
			
		|||
	// Second argument returns err if verification fails, otherwise
 | 
			
		||||
	// First return argument returns nil if no matched verification condition
 | 
			
		||||
	Verify(http *http.Request, w http.ResponseWriter, store DataStore, sess SessionStore) (*user_model.User, error)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Named represents a named thing
 | 
			
		||||
type Named interface {
 | 
			
		||||
	Name() string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -22,7 +22,6 @@ import (
 | 
			
		|||
// Ensure the struct implements the interface.
 | 
			
		||||
var (
 | 
			
		||||
	_ Method = &OAuth2{}
 | 
			
		||||
	_ Named  = &OAuth2{}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// CheckOAuthAccessToken returns uid of user from oauth token
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,7 +20,6 @@ import (
 | 
			
		|||
// Ensure the struct implements the interface.
 | 
			
		||||
var (
 | 
			
		||||
	_ Method = &ReverseProxy{}
 | 
			
		||||
	_ Named  = &ReverseProxy{}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// ReverseProxyMethodName is the constant name of the ReverseProxy authentication method
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -14,7 +14,6 @@ import (
 | 
			
		|||
// Ensure the struct implements the interface.
 | 
			
		||||
var (
 | 
			
		||||
	_ Method = &Session{}
 | 
			
		||||
	_ Named  = &Session{}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Session checks if there is a user uid stored in the session and returns the user
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,7 +37,6 @@ var (
 | 
			
		|||
 | 
			
		||||
	// Ensure the struct implements the interface.
 | 
			
		||||
	_ Method = &SSPI{}
 | 
			
		||||
	_ Named  = &SSPI{}
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// SSPI implements the SingleSignOn interface and authenticates requests
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue