From aba3b8f100e51fc50494b013fbc8e54d6a80ce2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcell=20F=C3=9CL=C3=96P?= Date: Mon, 20 Feb 2023 17:19:15 +0000 Subject: [PATCH] refactor: lint Refactor to statisfy function complexity and max statements linter requirements. --- auth/oidc.go | 5 ++-- cmd/config.go | 17 ++++++++----- http/static.go | 67 ++++++++++++++++++++++++++++---------------------- 3 files changed, 52 insertions(+), 37 deletions(-) diff --git a/auth/oidc.go b/auth/oidc.go index 02847568..11f234d3 100644 --- a/auth/oidc.go +++ b/auth/oidc.go @@ -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. diff --git a/cmd/config.go b/cmd/config.go index 9befcf92..3d044901 100644 --- a/cmd/config.go +++ b/cmd/config.go @@ -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 { diff --git a/http/static.go b/http/static.go index db11161f..88effb76 100644 --- a/http/static.go +++ b/http/static.go @@ -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 {