diff --git a/main.go b/main.go index 1659623..72f5763 100644 --- a/main.go +++ b/main.go @@ -74,8 +74,9 @@ func validate_cas(cas_ticket string) (string, error) { func getCas(w http.ResponseWriter, r *http.Request){ - fail := func() { - writeHTML(w, pages.LoginPage("Username or Password is incorrect.")) + fail := func(err_message string) { + content := fmt.Sprintf(pages.ErrorPage, err_message) + writeHTML(w, content) } cas_ticket := r.URL.Query().Get("ticket") @@ -84,54 +85,57 @@ func getCas(w http.ResponseWriter, r *http.Request){ username = strings.ToLower(username) if e != nil { - err_message := fmt.Sprintf("VALIDATION ERROR: %s\n", e) - w.Write([]byte(err_message)) + content := fmt.Sprintf("CAS validation error: %s", e) + fail(content) return } else if username == "" { - w.Write([]byte("CAS ERROR: user not found")) + fail("CAS ERROR - user not found") return } else { db, err := dbi.GetDbConn() if err != nil { - fail() + fail("Database error") return } defer db.Close() conn, err := db.Conn(context.Background()) if err != nil { - fail() + fail("Database error") return } defer conn.Close() user, e := dbi.GetUser(conn, username) if e != nil { - login_error_message := fmt.Sprintf("User error for user %s: %s", e, username) - w.Write([]byte(login_error_message)) + login_error_message := fmt.Sprintf("User error for user %s: %s", username, e) + fail(login_error_message) return } - token, err := dbi.GenJWT(user) - if err != nil { - fail() + token, e := dbi.GenJWT(user) + if e != nil { + jwt_error_message := fmt.Sprintf("Login token failure for user %s: %s", username, e) + fail(jwt_error_message) return } if user.Status == "admin" { - items, err := dbi.GetReportedItems(conn) - if err != nil { - fail() + items, e := dbi.GetReportedItems(conn) + if e != nil { + items_error_message := fmt.Sprintf("Error fetching items: %s", e) + fail(items_error_message) return } - html, err := pages.DashboardPage(token, items) - if err != nil { - fail() + html, e := pages.DashboardPage(token, items) + if e != nil { + content := fmt.Sprintf("Error loading dashboard: %s", e) + fail(content) return } writeHTML(w, html) @@ -144,7 +148,7 @@ func getCas(w http.ResponseWriter, r *http.Request){ } else { - w.Write([]byte("User has invalid status")) + fail("User has invalid status") return } @@ -249,7 +253,7 @@ func getPortal(w http.ResponseWriter, r *http.Request) { func main() { mux := http.NewServeMux() - mux.HandleFunc("GET /faculty/activity/cas", handleCas) + mux.HandleFunc("GET /faculty/activity/cas", getCas) mux.HandleFunc("GET /faculty/activity/portal", getPortal) mux.HandleFunc("GET /faculty/activity/login", handleLoginGet) mux.HandleFunc("POST /faculty/activity/login", handleLoginPost)