Browse Source

move oauth error handler to auth package

Anish Mukherjee 2 years ago
parent
commit
66efcf9eb3
8 changed files with 23 additions and 22 deletions
  1. 1 2
      auth/auth.go
  2. 3 3
      auth/azure-ad.go
  3. 9 0
      auth/error.go
  4. 3 3
      auth/github.go
  5. 3 3
      auth/google.go
  6. 1 1
      auth/nodecallback.go
  7. 3 3
      auth/oidc.go
  8. 0 7
      logic/errors.go

+ 1 - 2
auth/auth.go

@@ -100,8 +100,7 @@ func InitializeAuthProvider() string {
 // Note: not included in API reference as part of the OAuth process itself.
 // Note: not included in API reference as part of the OAuth process itself.
 func HandleAuthCallback(w http.ResponseWriter, r *http.Request) {
 func HandleAuthCallback(w http.ResponseWriter, r *http.Request) {
 	if auth_provider == nil {
 	if auth_provider == nil {
-		w.Header().Set("Content-Type", "text/html; charset=utf-8")
-		_, _ = fmt.Fprintln(w, oauthNotConfigured)
+		handleOauthNotConfigured(w)
 		return
 		return
 	}
 	}
 	var functions = getCurrentAuthFunctions()
 	var functions = getCurrentAuthFunctions()

+ 3 - 3
auth/azure-ad.go

@@ -38,12 +38,12 @@ func initAzureAD(redirectURL string, clientID string, clientSecret string) {
 func handleAzureLogin(w http.ResponseWriter, r *http.Request) {
 func handleAzureLogin(w http.ResponseWriter, r *http.Request) {
 	var oauth_state_string = logic.RandomString(user_signin_length)
 	var oauth_state_string = logic.RandomString(user_signin_length)
 	if auth_provider == nil {
 	if auth_provider == nil {
-		logic.HandleOauthNotConfigured(w)
+		handleOauthNotConfigured(w)
 		return
 		return
 	}
 	}
 
 
 	if err := logic.SetState(oauth_state_string); err != nil {
 	if err := logic.SetState(oauth_state_string); err != nil {
-		logic.HandleOauthNotConfigured(w)
+		handleOauthNotConfigured(w)
 		return
 		return
 	}
 	}
 
 
@@ -57,7 +57,7 @@ func handleAzureCallback(w http.ResponseWriter, r *http.Request) {
 	var content, err = getAzureUserInfo(rState, rCode)
 	var content, err = getAzureUserInfo(rState, rCode)
 	if err != nil {
 	if err != nil {
 		logger.Log(1, "error when getting user info from azure:", err.Error())
 		logger.Log(1, "error when getting user info from azure:", err.Error())
-		logic.HandleOauthNotConfigured(w)
+		handleOauthNotConfigured(w)
 		return
 		return
 	}
 	}
 	_, err = logic.GetUser(content.UserPrincipalName)
 	_, err = logic.GetUser(content.UserPrincipalName)

+ 9 - 0
auth/error.go

@@ -1,5 +1,7 @@
 package auth
 package auth
 
 
+import "net/http"
+
 // == define error HTML here ==
 // == define error HTML here ==
 const oauthNotConfigured = `<!DOCTYPE html><html>
 const oauthNotConfigured = `<!DOCTYPE html><html>
 <body>
 <body>
@@ -7,3 +9,10 @@ const oauthNotConfigured = `<!DOCTYPE html><html>
 <p>Please visit the docs <a href="https://docs.netmaker.org/oauth.html" target="_blank" rel="noopener">here</a> to learn how to.</p>
 <p>Please visit the docs <a href="https://docs.netmaker.org/oauth.html" target="_blank" rel="noopener">here</a> to learn how to.</p>
 </body>
 </body>
 </html>`
 </html>`
+
+// 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))
+}

+ 3 - 3
auth/github.go

@@ -38,12 +38,12 @@ func initGithub(redirectURL string, clientID string, clientSecret string) {
 func handleGithubLogin(w http.ResponseWriter, r *http.Request) {
 func handleGithubLogin(w http.ResponseWriter, r *http.Request) {
 	var oauth_state_string = logic.RandomString(user_signin_length)
 	var oauth_state_string = logic.RandomString(user_signin_length)
 	if auth_provider == nil {
 	if auth_provider == nil {
-		logic.HandleOauthNotConfigured(w)
+		handleOauthNotConfigured(w)
 		return
 		return
 	}
 	}
 
 
 	if err := logic.SetState(oauth_state_string); err != nil {
 	if err := logic.SetState(oauth_state_string); err != nil {
-		logic.HandleOauthNotConfigured(w)
+		handleOauthNotConfigured(w)
 		return
 		return
 	}
 	}
 
 
@@ -57,7 +57,7 @@ func handleGithubCallback(w http.ResponseWriter, r *http.Request) {
 	var content, err = getGithubUserInfo(rState, rCode)
 	var content, err = getGithubUserInfo(rState, rCode)
 	if err != nil {
 	if err != nil {
 		logger.Log(1, "error when getting user info from github:", err.Error())
 		logger.Log(1, "error when getting user info from github:", err.Error())
-		logic.HandleOauthNotConfigured(w)
+		handleOauthNotConfigured(w)
 		return
 		return
 	}
 	}
 	_, err = logic.GetUser(content.Login)
 	_, err = logic.GetUser(content.Login)

+ 3 - 3
auth/google.go

@@ -39,12 +39,12 @@ func initGoogle(redirectURL string, clientID string, clientSecret string) {
 func handleGoogleLogin(w http.ResponseWriter, r *http.Request) {
 func handleGoogleLogin(w http.ResponseWriter, r *http.Request) {
 	var oauth_state_string = logic.RandomString(user_signin_length)
 	var oauth_state_string = logic.RandomString(user_signin_length)
 	if auth_provider == nil {
 	if auth_provider == nil {
-		logic.HandleOauthNotConfigured(w)
+		handleOauthNotConfigured(w)
 		return
 		return
 	}
 	}
 
 
 	if err := logic.SetState(oauth_state_string); err != nil {
 	if err := logic.SetState(oauth_state_string); err != nil {
-		logic.HandleOauthNotConfigured(w)
+		handleOauthNotConfigured(w)
 		return
 		return
 	}
 	}
 
 
@@ -59,7 +59,7 @@ func handleGoogleCallback(w http.ResponseWriter, r *http.Request) {
 	var content, err = getGoogleUserInfo(rState, rCode)
 	var content, err = getGoogleUserInfo(rState, rCode)
 	if err != nil {
 	if err != nil {
 		logger.Log(1, "error when getting user info from google:", err.Error())
 		logger.Log(1, "error when getting user info from google:", err.Error())
-		logic.HandleOauthNotConfigured(w)
+		handleOauthNotConfigured(w)
 		return
 		return
 	}
 	}
 	_, err = logic.GetUser(content.Email)
 	_, err = logic.GetUser(content.Email)

+ 1 - 1
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)
 	var userClaims, err = functions[get_user_info].(func(string, string) (*OAuthUser, error))(state, code)
 	if err != nil {
 	if err != nil {
 		logger.Log(0, "error when getting user info from callback:", err.Error())
 		logger.Log(0, "error when getting user info from callback:", err.Error())
-		logic.HandleOauthNotConfigured(w)
+		handleOauthNotConfigured(w)
 		return
 		return
 	}
 	}
 
 

+ 3 - 3
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) {
 func handleOIDCLogin(w http.ResponseWriter, r *http.Request) {
 	var oauth_state_string = logic.RandomString(user_signin_length)
 	var oauth_state_string = logic.RandomString(user_signin_length)
 	if auth_provider == nil {
 	if auth_provider == nil {
-		logic.HandleOauthNotConfigured(w)
+		handleOauthNotConfigured(w)
 		return
 		return
 	}
 	}
 
 
 	if err := logic.SetState(oauth_state_string); err != nil {
 	if err := logic.SetState(oauth_state_string); err != nil {
-		logic.HandleOauthNotConfigured(w)
+		handleOauthNotConfigured(w)
 		return
 		return
 	}
 	}
 	var url = auth_provider.AuthCodeURL(oauth_state_string)
 	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)
 	var content, err = getOIDCUserInfo(rState, rCode)
 	if err != nil {
 	if err != nil {
 		logger.Log(1, "error when getting user info from callback:", err.Error())
 		logger.Log(1, "error when getting user info from callback:", err.Error())
-		logic.HandleOauthNotConfigured(w)
+		handleOauthNotConfigured(w)
 		return
 		return
 	}
 	}
 	_, err = logic.GetUser(content.Email)
 	_, err = logic.GetUser(content.Email)

+ 0 - 7
logic/errors.go

@@ -56,10 +56,3 @@ func ReturnErrorResponse(response http.ResponseWriter, request *http.Request, er
 	response.WriteHeader(errorMessage.Code)
 	response.WriteHeader(errorMessage.Code)
 	response.Write(jsonResponse)
 	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("<html><body><h1>OAuth Login Failed, check if server is configured for OAuth.</h1></body></html>"))
-}