refactor: lint

Refactor to statisfy function complexity and max statements linter requirements.
This commit is contained in:
Marcell FÜLÖP 2023-02-20 17:19:15 +00:00
parent 41b29f4b05
commit aba3b8f100
3 changed files with 52 additions and 37 deletions

View File

@ -4,8 +4,6 @@ import (
"context"
"crypto/rand"
"fmt"
"github.com/filebrowser/filebrowser/v2/settings"
"github.com/filebrowser/filebrowser/v2/users"
"log"
"math"
"math/big"
@ -14,6 +12,9 @@ import (
"github.com/coreos/go-oidc/v3/oidc"
"golang.org/x/oauth2"
"github.com/filebrowser/filebrowser/v2/settings"
"github.com/filebrowser/filebrowser/v2/users"
)
// MethodOIDCAuth is used to identify oidc auth.

View File

@ -53,11 +53,8 @@ func addConfigFlags(flags *pflag.FlagSet) {
flags.Bool("branding.disableUsedPercentage", false, "disable used disk percentage graph")
}
//nolint:gocyclo
func getAuthentication(flags *pflag.FlagSet, defaults ...interface{}) (settings.AuthMethod, auth.Auther) {
method := settings.AuthMethod(mustGetString(flags, "auth.method"))
var defaultAuther map[string]interface{}
func getDefaultAuther(method settings.AuthMethod, defaults ...interface{}) (map[string]interface{}, settings.AuthMethod) {
var d map[string]interface{}
if len(defaults) > 0 {
if hasAuth := defaults[0]; hasAuth != true {
for _, arg := range defaults {
@ -67,12 +64,20 @@ func getAuthentication(flags *pflag.FlagSet, defaults ...interface{}) (settings.
case auth.Auther:
ms, err := json.Marshal(def)
checkErr(err)
err = json.Unmarshal(ms, &defaultAuther)
err = json.Unmarshal(ms, &d)
checkErr(err)
}
}
}
}
return d, method
}
//nolint:gocyclo
func getAuthentication(flags *pflag.FlagSet, defaults ...interface{}) (settings.AuthMethod, auth.Auther) {
method := settings.AuthMethod(mustGetString(flags, "auth.method"))
defaultAuther, method := getDefaultAuther(method, defaults)
var auther auth.Auther
if method == auth.MethodProxyAuth {

View File

@ -59,35 +59,9 @@ func handleWithStaticData(w http.ResponseWriter, r *http.Request, d *data, fSys
}
}
if d.settings.AuthMethod == auth.MethodJSONAuth {
raw, err := d.store.Auth.Get(d.settings.AuthMethod) //nolint:govet
if err != nil {
return http.StatusInternalServerError, err
}
auther := raw.(*auth.JSONAuth)
if auther.ReCaptcha != nil {
data["ReCaptcha"] = auther.ReCaptcha.Key != "" && auther.ReCaptcha.Secret != ""
data["ReCaptchaHost"] = auther.ReCaptcha.Host
data["ReCaptchaKey"] = auther.ReCaptcha.Key
}
}
if d.settings.AuthMethod == auth.MethodOIDCAuth {
raw, err := d.store.Auth.Get(d.settings.AuthMethod) //nolint:govet
if err != nil {
return http.StatusInternalServerError, err
}
auther := raw.(*auth.OIDCAuth)
cookie, _ := r.Cookie("auth")
public := strings.HasPrefix(r.URL.Path, "/share/") && r.Method == "GET"
if cookie == nil && !public {
auther.OIDC.InitAuthFlow(w, r)
return 0, nil
}
code, err := initializeAuther(w, r, d, data)
if code != 0 {
return code, err
}
b, err := json.Marshal(data)
@ -113,6 +87,41 @@ func handleWithStaticData(w http.ResponseWriter, r *http.Request, d *data, fSys
return 0, nil
}
func initializeAuther(w http.ResponseWriter, r *http.Request, d *data, data map[string]interface{}) (int, error) {
if d.settings.AuthMethod == auth.MethodJSONAuth {
raw, err := d.store.Auth.Get(d.settings.AuthMethod)
if err != nil {
return http.StatusInternalServerError, err
}
auther := raw.(*auth.JSONAuth)
if auther.ReCaptcha != nil {
data["ReCaptcha"] = auther.ReCaptcha.Key != "" && auther.ReCaptcha.Secret != ""
data["ReCaptchaHost"] = auther.ReCaptcha.Host
data["ReCaptchaKey"] = auther.ReCaptcha.Key
}
}
if d.settings.AuthMethod == auth.MethodOIDCAuth {
raw, err := d.store.Auth.Get(d.settings.AuthMethod)
if err != nil {
return http.StatusInternalServerError, err
}
auther := raw.(*auth.OIDCAuth)
cookie, _ := r.Cookie("auth")
public := strings.HasPrefix(r.URL.Path, "/share/") && r.Method == "GET"
if cookie == nil && !public {
auther.OIDC.InitAuthFlow(w, r)
return 0, nil
}
}
return 0, nil
}
func getStaticHandlers(store *storage.Storage, server *settings.Server, assetsFs fs.FS) (index, static http.Handler) {
index = handle(func(w http.ResponseWriter, r *http.Request, d *data) (int, error) {
if r.Method != http.MethodGet {