From 66efcf9eb3b146cb91b52220e496316fa8eb245f Mon Sep 17 00:00:00 2001 From: Anish Mukherjee Date: Fri, 23 Dec 2022 18:28:45 +0530 Subject: [PATCH] move oauth error handler to auth package --- auth/auth.go | 3 +-- auth/azure-ad.go | 6 +++--- auth/error.go | 9 +++++++++ auth/github.go | 6 +++--- auth/google.go | 6 +++--- auth/nodecallback.go | 2 +- auth/oidc.go | 6 +++--- logic/errors.go | 7 ------- 8 files changed, 23 insertions(+), 22 deletions(-) diff --git a/auth/auth.go b/auth/auth.go index 08bd6c7b..3f88ae16 100644 --- a/auth/auth.go +++ b/auth/auth.go @@ -100,8 +100,7 @@ func InitializeAuthProvider() string { // Note: not included in API reference as part of the OAuth process itself. func HandleAuthCallback(w http.ResponseWriter, r *http.Request) { if auth_provider == nil { - w.Header().Set("Content-Type", "text/html; charset=utf-8") - _, _ = fmt.Fprintln(w, oauthNotConfigured) + handleOauthNotConfigured(w) return } var functions = getCurrentAuthFunctions() diff --git a/auth/azure-ad.go b/auth/azure-ad.go index 3c676076..76b86116 100644 --- a/auth/azure-ad.go +++ b/auth/azure-ad.go @@ -38,12 +38,12 @@ func initAzureAD(redirectURL string, clientID string, clientSecret string) { func handleAzureLogin(w http.ResponseWriter, r *http.Request) { var oauth_state_string = logic.RandomString(user_signin_length) if auth_provider == nil { - logic.HandleOauthNotConfigured(w) + handleOauthNotConfigured(w) return } if err := logic.SetState(oauth_state_string); err != nil { - logic.HandleOauthNotConfigured(w) + handleOauthNotConfigured(w) return } @@ -57,7 +57,7 @@ func handleAzureCallback(w http.ResponseWriter, r *http.Request) { var content, err = getAzureUserInfo(rState, rCode) if err != nil { logger.Log(1, "error when getting user info from azure:", err.Error()) - logic.HandleOauthNotConfigured(w) + handleOauthNotConfigured(w) return } _, err = logic.GetUser(content.UserPrincipalName) diff --git a/auth/error.go b/auth/error.go index 091a34d6..002eed05 100644 --- a/auth/error.go +++ b/auth/error.go @@ -1,5 +1,7 @@ package auth +import "net/http" + // == define error HTML here == const oauthNotConfigured = ` @@ -7,3 +9,10 @@ const oauthNotConfigured = `

Please visit the docs here to learn how to.

` + +// handleOauthNotConfigured - returns an appropriate html page when oauth is not configured on netmaker server but an oauth login was attempted +func handleOauthNotConfigured(response http.ResponseWriter) { + response.Header().Set("Content-Type", "text/html; charset=utf-8") + response.WriteHeader(http.StatusInternalServerError) + response.Write([]byte(oauthNotConfigured)) +} diff --git a/auth/github.go b/auth/github.go index 509d7600..bdbbabc8 100644 --- a/auth/github.go +++ b/auth/github.go @@ -38,12 +38,12 @@ func initGithub(redirectURL string, clientID string, clientSecret string) { func handleGithubLogin(w http.ResponseWriter, r *http.Request) { var oauth_state_string = logic.RandomString(user_signin_length) if auth_provider == nil { - logic.HandleOauthNotConfigured(w) + handleOauthNotConfigured(w) return } if err := logic.SetState(oauth_state_string); err != nil { - logic.HandleOauthNotConfigured(w) + handleOauthNotConfigured(w) return } @@ -57,7 +57,7 @@ func handleGithubCallback(w http.ResponseWriter, r *http.Request) { var content, err = getGithubUserInfo(rState, rCode) if err != nil { logger.Log(1, "error when getting user info from github:", err.Error()) - logic.HandleOauthNotConfigured(w) + handleOauthNotConfigured(w) return } _, err = logic.GetUser(content.Login) diff --git a/auth/google.go b/auth/google.go index 27d82444..de144a3c 100644 --- a/auth/google.go +++ b/auth/google.go @@ -39,12 +39,12 @@ func initGoogle(redirectURL string, clientID string, clientSecret string) { func handleGoogleLogin(w http.ResponseWriter, r *http.Request) { var oauth_state_string = logic.RandomString(user_signin_length) if auth_provider == nil { - logic.HandleOauthNotConfigured(w) + handleOauthNotConfigured(w) return } if err := logic.SetState(oauth_state_string); err != nil { - logic.HandleOauthNotConfigured(w) + handleOauthNotConfigured(w) return } @@ -59,7 +59,7 @@ func handleGoogleCallback(w http.ResponseWriter, r *http.Request) { var content, err = getGoogleUserInfo(rState, rCode) if err != nil { logger.Log(1, "error when getting user info from google:", err.Error()) - logic.HandleOauthNotConfigured(w) + handleOauthNotConfigured(w) return } _, err = logic.GetUser(content.Email) diff --git a/auth/nodecallback.go b/auth/nodecallback.go index f92ec047..2a29941c 100644 --- a/auth/nodecallback.go +++ b/auth/nodecallback.go @@ -40,7 +40,7 @@ func HandleNodeSSOCallback(w http.ResponseWriter, r *http.Request) { var userClaims, err = functions[get_user_info].(func(string, string) (*OAuthUser, error))(state, code) if err != nil { logger.Log(0, "error when getting user info from callback:", err.Error()) - logic.HandleOauthNotConfigured(w) + handleOauthNotConfigured(w) return } diff --git a/auth/oidc.go b/auth/oidc.go index bd1af197..86530bc9 100644 --- a/auth/oidc.go +++ b/auth/oidc.go @@ -51,12 +51,12 @@ func initOIDC(redirectURL string, clientID string, clientSecret string, issuer s func handleOIDCLogin(w http.ResponseWriter, r *http.Request) { var oauth_state_string = logic.RandomString(user_signin_length) if auth_provider == nil { - logic.HandleOauthNotConfigured(w) + handleOauthNotConfigured(w) return } if err := logic.SetState(oauth_state_string); err != nil { - logic.HandleOauthNotConfigured(w) + handleOauthNotConfigured(w) return } var url = auth_provider.AuthCodeURL(oauth_state_string) @@ -70,7 +70,7 @@ func handleOIDCCallback(w http.ResponseWriter, r *http.Request) { var content, err = getOIDCUserInfo(rState, rCode) if err != nil { logger.Log(1, "error when getting user info from callback:", err.Error()) - logic.HandleOauthNotConfigured(w) + handleOauthNotConfigured(w) return } _, err = logic.GetUser(content.Email) diff --git a/logic/errors.go b/logic/errors.go index 18a673fa..8259d586 100644 --- a/logic/errors.go +++ b/logic/errors.go @@ -56,10 +56,3 @@ func ReturnErrorResponse(response http.ResponseWriter, request *http.Request, er response.WriteHeader(errorMessage.Code) response.Write(jsonResponse) } - -// HandleOauthNotConfigured - returns an appropriate html page when oauth is not configured on netmaker server but an oauth login was attempted -func HandleOauthNotConfigured(response http.ResponseWriter) { - response.Header().Set("Content-Type", "text/html; charset=utf-8") - response.WriteHeader(http.StatusInternalServerError) - response.Write([]byte("

OAuth Login Failed, check if server is configured for OAuth.

")) -}