diff --git a/src/babillard_page.eml.html b/src/babillard_page.eml.html
index b5f93bb..ddaffba 100644
--- a/src/babillard_page.eml.html
+++ b/src/babillard_page.eml.html
@@ -7,12 +7,17 @@ let f request =
-% if Option.is_some @@ Dream.session "nick" request then begin
+% begin match Dream.session "nick" request with
+% | None ->
+% let redirect = Dream.to_percent_encoded "/new_thread" in
+% ()
+New Thread
+% | Some _ ->
New Thread
-% end;
+% end;
diff --git a/src/login.eml.html b/src/login.eml.html
index 9968db5..56d7754 100644
--- a/src/login.eml.html
+++ b/src/login.eml.html
@@ -1,24 +1,13 @@
-let f ?nick ?password request =
-
-% begin match nick, password with
-% | Some nick, Some password ->
-% begin match User.login ~nick ~password request with
-% | Error e ->
-Error: <%s e %>
-% | Ok () ->
-Logged in ! Happy planting XD
-% end;
-% | _ ->
- <%s! Dream.form_tag ~action:"/login" request %>
-
+
+
diff --git a/src/newthread_page.eml.html b/src/newthread_page.eml.html
index 0c55a9f..0b3f55e 100644
--- a/src/newthread_page.eml.html
+++ b/src/newthread_page.eml.html
@@ -1,7 +1,9 @@
let f request =
% begin match Dream.session "nick" request with
% | None ->
- Login to make a new thread.
+% let redirect = Dream.to_percent_encoded "/new_thread" in
+% Format.printf "%s@." redirect;
+Login to make a new thread.
% | Some _nick ->
New thread
diff --git a/src/permap.ml b/src/permap.ml
index 610f53f..93fc019 100644
--- a/src/permap.ml
+++ b/src/permap.ml
@@ -42,15 +42,27 @@ let register_post request =
render_unsafe (Register.f ~nick ~email ~password request) request
| `Ok _ | `Many_tokens _ | `Missing_token _ | `Invalid_token _
| `Wrong_session _ | `Expired _ | `Wrong_content_type ->
- assert false
+ Dream.empty `Bad_Request
let login_get request = render_unsafe (Login.f request) request
let login_post request =
match%lwt Dream.form request with
- | `Ok [ ("nick", nick); ("password", password) ] ->
- render_unsafe (Login.f ~nick ~password request) request
- | _ -> assert false
+ | `Ok [ ("nick", nick); ("password", password) ] -> (
+ match User.login ~nick ~password request with
+ | Error e -> render_unsafe e request
+ | Ok () ->
+ let url =
+ match Dream.query request "redirect" with
+ | None -> "/jpp"
+ | Some redirect -> Dream.from_percent_encoded redirect
+ in
+ Dream.respond ~status:`See_Other
+ ~headers:[ ("Location", url) ]
+ "Logged in: Happy geo-posting!" )
+ | `Ok _ | `Many_tokens _ | `Missing_token _ | `Invalid_token _
+ | `Wrong_session _ | `Expired _ | `Wrong_content_type ->
+ Dream.empty `Bad_Request
let user request =
render_unsafe (Result.fold ~ok:Fun.id ~error:Fun.id (User.list ())) request
diff --git a/src/thread_page.eml.html b/src/thread_page.eml.html
index f83e4eb..de145ef 100644
--- a/src/thread_page.eml.html
+++ b/src/thread_page.eml.html
@@ -3,7 +3,8 @@ let f thread_view thread_id request =
<%s! thread_view %>
% begin match Dream.session "nick" request with
% | None ->
-
+% let redirect = Dream.to_percent_encoded (Format.sprintf "redirect=/thread/%s" thread_id) in
+Login to reply!
% | Some _ ->