forked from zapashcanon/pellest
37 lines
1.1 KiB
OCaml
37 lines
1.1 KiB
OCaml
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")
|