wip: login redirect
This commit is contained in:
parent
6a84f3dc94
commit
7e9effa723
5 changed files with 41 additions and 32 deletions
|
|
@ -7,12 +7,17 @@ let f request =
|
||||||
<div id="map"></div>
|
<div id="map"></div>
|
||||||
<br />
|
<br />
|
||||||
<button class="btn btn-primary" id="geolocalize">Geolocalize me</button>
|
<button class="btn btn-primary" id="geolocalize">Geolocalize me</button>
|
||||||
% 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
|
||||||
|
% ()
|
||||||
|
<a class="btn btn-primary" href="/login?redirect=<%s redirect%>">New Thread</a>
|
||||||
|
% | Some _ ->
|
||||||
<a class="btn btn-primary" href="/new_thread">New Thread</a>
|
<a class="btn btn-primary" href="/new_thread">New Thread</a>
|
||||||
% end;
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-6">
|
<div class="col-md-6">
|
||||||
<div id="thread_preview_div"></div>
|
<div id="thread_preview_div"></div>
|
||||||
<a id="thread_link"></a>
|
<a id="thread_link"></a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
% end;
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,5 @@
|
||||||
let f ?nick ?password request =
|
let f request =
|
||||||
|
<%s! Dream.form_tag ~action:"/login" 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 %>
|
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label for="nick" class="form-label">Nick</label>
|
<label for="nick" class="form-label">Nick</label>
|
||||||
<input name="nick" type="text" class="form-control" id="nick" aria-describedby="nickHelp">
|
<input name="nick" type="text" class="form-control" id="nick" aria-describedby="nickHelp">
|
||||||
|
|
@ -20,5 +10,4 @@ Logged in ! Happy planting XD
|
||||||
<input name="password" type="password" class="form-control" id="password">
|
<input name="password" type="password" class="form-control" id="password">
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" class="btn btn-primary">Submit</button>
|
<button type="submit" class="btn btn-primary">Submit</button>
|
||||||
</form>
|
</form>
|
||||||
% end;
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
let f request =
|
let f request =
|
||||||
% begin match Dream.session "nick" request with
|
% begin match Dream.session "nick" request with
|
||||||
% | None ->
|
% | None ->
|
||||||
<a href="/login">Login</a> to make a new thread.
|
% let redirect = Dream.to_percent_encoded "/new_thread" in
|
||||||
|
% Format.printf "%s@." redirect;
|
||||||
|
<a href="/login?redirect=<%s redirect%>">Login</a> to make a new thread.
|
||||||
% | Some _nick ->
|
% | Some _nick ->
|
||||||
<script type="text/javascript" src="/assets/js/js_newthread.js" defer="defer"></script>
|
<script type="text/javascript" src="/assets/js/js_newthread.js" defer="defer"></script>
|
||||||
<h1>New thread</h1>
|
<h1>New thread</h1>
|
||||||
|
|
|
||||||
|
|
@ -42,15 +42,27 @@ let register_post request =
|
||||||
render_unsafe (Register.f ~nick ~email ~password request) request
|
render_unsafe (Register.f ~nick ~email ~password request) request
|
||||||
| `Ok _ | `Many_tokens _ | `Missing_token _ | `Invalid_token _
|
| `Ok _ | `Many_tokens _ | `Missing_token _ | `Invalid_token _
|
||||||
| `Wrong_session _ | `Expired _ | `Wrong_content_type ->
|
| `Wrong_session _ | `Expired _ | `Wrong_content_type ->
|
||||||
assert false
|
Dream.empty `Bad_Request
|
||||||
|
|
||||||
let login_get request = render_unsafe (Login.f request) request
|
let login_get request = render_unsafe (Login.f request) request
|
||||||
|
|
||||||
let login_post request =
|
let login_post request =
|
||||||
match%lwt Dream.form request with
|
match%lwt Dream.form request with
|
||||||
| `Ok [ ("nick", nick); ("password", password) ] ->
|
| `Ok [ ("nick", nick); ("password", password) ] -> (
|
||||||
render_unsafe (Login.f ~nick ~password request) request
|
match User.login ~nick ~password request with
|
||||||
| _ -> assert false
|
| 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 =
|
let user request =
|
||||||
render_unsafe (Result.fold ~ok:Fun.id ~error:Fun.id (User.list ())) request
|
render_unsafe (Result.fold ~ok:Fun.id ~error:Fun.id (User.list ())) request
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,8 @@ let f thread_view thread_id request =
|
||||||
<%s! thread_view %>
|
<%s! thread_view %>
|
||||||
% begin match Dream.session "nick" request with
|
% begin match Dream.session "nick" request with
|
||||||
% | None ->
|
% | None ->
|
||||||
|
% let redirect = Dream.to_percent_encoded (Format.sprintf "redirect=/thread/%s" thread_id) in
|
||||||
|
<a href="/login?<%s redirect%>">Login to reply!</a>
|
||||||
% | Some _ ->
|
% | Some _ ->
|
||||||
<div class="post-form">
|
<div class="post-form">
|
||||||
<%s! Dream.form_tag ~action:( Format.sprintf "/thread/%s" thread_id)
|
<%s! Dream.form_tag ~action:( Format.sprintf "/thread/%s" thread_id)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue