Remove `Named` interface (#26913)

`Named` is implemented by every `Method` and future implementations
should implement the method too.
This commit is contained in:
KN4CK3R 2023-09-05 17:58:30 +02:00 committed by GitHub
parent a99b96cbcd
commit 0eebeeec90
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 12 additions and 21 deletions

View File

@ -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:

View File

@ -12,6 +12,8 @@ import (
"code.gitea.io/gitea/services/packages"
)
var _ auth.Method = &Auth{}
type Auth struct{}
func (a *Auth) Name() string {

View File

@ -12,6 +12,8 @@ import (
"code.gitea.io/gitea/services/packages"
)
var _ auth.Method = &Auth{}
type Auth struct{}
func (a *Auth) Name() string {

View File

@ -13,6 +13,8 @@ import (
"code.gitea.io/gitea/services/auth"
)
var _ auth.Method = &Auth{}
type Auth struct{}
func (a *Auth) Name() string {

View File

@ -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

View File

@ -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
}

View File

@ -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

View File

@ -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
}

View File

@ -22,7 +22,6 @@ import (
// Ensure the struct implements the interface.
var (
_ Method = &OAuth2{}
_ Named = &OAuth2{}
)
// CheckOAuthAccessToken returns uid of user from oauth token

View File

@ -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

View File

@ -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

View File

@ -37,7 +37,6 @@ var (
// Ensure the struct implements the interface.
_ Method = &SSPI{}
_ Named = &SSPI{}
)
// SSPI implements the SingleSignOn interface and authenticates requests