Exemple #1
0
//Login page
func (c *UserController) Login(rw http.ResponseWriter, r *http.Request, p httprouter.Params) {
	if r.Method == "GET" {
		// if logged in, go to profile / else login page
		RedirectToLogin(c, rw, r, p)

	} else if r.Method == "POST" {
		r.ParseForm()

		username := strings.ToLower(r.FormValue("username"))
		password := r.FormValue("password")

		newUser := models.User{
			Username: username,
			Password: password}

		newUser.ValidateLogin()

		if newUser.Message != "" {
			newUser.Username = ""

			c.HTML(rw, http.StatusOK, "user/login", newUser)
			return
		}

		if !CheckForExistingUsername(&newUser) {
			//User Exists
			if CheckForMatchingPassword(&newUser) {
				//Passwords Match
				//Open Session and forward back to front page
				newUser.Message = "Passwords match."
				setSession(newUser.Username, rw)
				c.HTML(rw, http.StatusOK, "user/loggedIn", newUser)
				return

			} else {
				newUser.Message = "Password doesn't match record for " + newUser.Username
			}

		} else {
			//User Doesn't exist
			newUser.Message = "User " + newUser.Username + " doesn't exist."
		}

		c.HTML(rw, http.StatusOK, "user/login", newUser)
	}
}