open Tyxml.Html open Tyx_util open Syntax let get request = let** () = User.assert_not_logged request in let title = "Pellest|Login" in let login = let submit = button ~a:[ a_id "submit_login" ] [ txt "submit" ] in let login = input ~a:[ a_id "login"; a_name "login"; a_input_type `Text ] () in let password = input ~a:[ a_id "password"; a_name "password"; a_input_type `Password ] () in div [ make_form request ~action:"/login" ~items:[ login; password; submit ] ] in let text = div [ txt "login ~!" ] in let page = div [ text; login ] in Template.render ~title ~scripts:[] page let post request = let** () = User.assert_not_logged request in match%lwt Dream.form request with | `Ok [ ("login", login); ("password", password) ] -> let** () = User.login ~login ~password request in let url = match Dream.query request "redirect" with | None -> "/" | Some redirect -> Dream.from_percent_encoded redirect in Dream.respond ~status:`See_Other ~headers:[ ("Location", url) ] "Logged in: Happy geo-posting!" | _form -> Template.err (`Bad_Request, "invalid form")