lishwist/server/routing/login.go

51 lines
1.1 KiB
Go

package routing
import (
"lishwist/api"
"lishwist/rsvp"
"net/http"
)
func Login(h http.Header, r *rsvp.Request) rsvp.Response {
session := r.GetSession()
props := api.NewLoginProps("", "")
flash := session.FlashGet("login_props")
flashProps, ok := flash.(*api.LoginProps)
if ok {
props.Username.Value = flashProps.Username.Value
props.GeneralError = flashProps.GeneralError
props.Username.Error = flashProps.Username.Error
props.Password.Error = flashProps.Password.Error
}
flash = session.FlashGet("successful_registration")
successfulReg, _ := flash.(bool)
if successfulReg {
props.SuccessfulRegistration = true
}
return rsvp.Data("login.gotmpl", props).SaveSession(session)
}
func LoginPost(h http.Header, r *rsvp.Request) rsvp.Response {
form := r.ParseForm()
session := r.GetSession()
username := form.Get("username")
password := form.Get("password")
props := api.Login(username, password)
if props != nil {
return rsvp.SeeOther("/").SaveSession(session)
}
session.SetID("")
session.SetValue("authorized", true)
session.SetValue("username", username)
return rsvp.SeeOther(r.URL().Path).SaveSession(session)
}