70 lines
1.6 KiB
Go
70 lines
1.6 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"fmt"
|
||
|
"net/http"
|
||
|
"strings"
|
||
|
|
||
|
"github.com/gorilla/mux"
|
||
|
)
|
||
|
|
||
|
func handleUserRequest(w http.ResponseWriter, req *http.Request) {
|
||
|
page := initPageData(w, req)
|
||
|
|
||
|
vars := mux.Vars(req)
|
||
|
f, fOk := vars["function"]
|
||
|
if fOk && f == "login" {
|
||
|
handleUserLogin(page)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
if !page.LoggedIn {
|
||
|
page.SubTitle = "ribbit login"
|
||
|
page.show("login.html", w)
|
||
|
return
|
||
|
}
|
||
|
page.SubTitle = "dashboard"
|
||
|
page.show("user_dashboard.html", w)
|
||
|
}
|
||
|
|
||
|
func handleUserLoginForm(page *pageData) {
|
||
|
page.SubTitle = "ribbit login"
|
||
|
page.show("login.html", page.session.w)
|
||
|
}
|
||
|
|
||
|
func handleUserLogin(page *pageData) {
|
||
|
var err error
|
||
|
var u *User
|
||
|
if page.LoggedIn {
|
||
|
redirect("/", page.session.w, page.session.req)
|
||
|
}
|
||
|
email := page.session.req.FormValue("email")
|
||
|
|
||
|
if u, err = m.GetUserByEmail(email); err != nil {
|
||
|
page.session.setFlashMessage("Invalid Login", "error")
|
||
|
redirect("/", page.session.w, page.session.req)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
password := page.session.req.FormValue("password")
|
||
|
fmt.Println("Hitting func")
|
||
|
if err := doLogin(u.Uuid, password); err != nil {
|
||
|
fmt.Println("Login Failure: ", err.Error())
|
||
|
page.session.setFlashMessage("Invalid Login", "error")
|
||
|
} else {
|
||
|
page.session.setStringValue("id", u.Uuid)
|
||
|
}
|
||
|
redirect("/", page.session.w, page.session.req)
|
||
|
}
|
||
|
|
||
|
// doLogin attempts to log in with the given email/password
|
||
|
// If it can't, it returns an error
|
||
|
func doLogin(uid, password string) error {
|
||
|
fmt.Println("Doing Login", uid, password)
|
||
|
if strings.TrimSpace(uid) != "" && strings.TrimSpace(password) != "" {
|
||
|
return m.checkCredentials(uid, password)
|
||
|
}
|
||
|
return errors.New("Invalid Credentials")
|
||
|
}
|