52 lines
1.1 KiB
Go
52 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()
|
|
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()
|
|
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 {
|
|
session.FlashSet(&props)
|
|
return rsvp.SeeOther("/").SaveSession(session)
|
|
}
|
|
|
|
session.SetID("")
|
|
session.SetValue("authorized", true)
|
|
session.SetValue("username", username)
|
|
|
|
return rsvp.SeeOther(r.URL().Path).SaveSession(session)
|
|
}
|