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