|
|
|
|
@ -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)
|
|
|
|
|
|