list users

This commit is contained in:
zapashcanon 2021-11-07 01:32:38 +01:00
parent 6f7a3c568c
commit 936e03b591
No known key found for this signature in database
GPG key ID: 8981C3C62D1D28F1
4 changed files with 43 additions and 17 deletions

View file

@ -1,3 +1,3 @@
# Hello world
<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://www.openstreetmap.org/export/embed.html?bbox=-0.11535644531250001%2C48.09642606004488%2C3.5925292968750004%2C49.47169378524674&amp;layer=mapnik" style="border: 1px solid black"></iframe><br/><small><a href="https://www.openstreetmap.org/#map=9/48.7888/1.7386">Afficher une carte plus grande</a></small>
<iframe width="800" height="600" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://www.openstreetmap.org/export/embed.html?bbox=-0.11535644531250001%2C48.09642606004488%2C3.5925292968750004%2C49.47169378524674&amp;layer=mapnik" style="border: 1px solid black"></iframe><br/><small><a href="https://www.openstreetmap.org/#map=9/48.7888/1.7386">Afficher une carte plus grande</a></small>

View file

@ -41,7 +41,23 @@ let page_of_name name =
let homepage _request = page_of_name "index"
let register _request = page_of_name "register"
let register_get request = render_unsafe (Register.f request)
let register_post request =
match%lwt Dream.form request with
| `Ok [ ("email", email); ("nick", nick); ("password", password) ] ->
render_unsafe (Register.f ~nick ~email ~password request)
| _ -> assert false
let login_get request = render_unsafe (Login.f request)
let login_post request =
match%lwt Dream.form request with
| `Ok [ ("nick", nick); ("password", password) ] ->
render_unsafe (Login.f ~nick ~password request)
| _ -> assert false
let user request = render_unsafe (User.list request)
let () =
Dream.run ~interface:"0.0.0.0"
@ -49,19 +65,10 @@ let () =
@@ Dream.router
[ Dream.get "/assets/**" (Dream.static ~loader:asset_loader "")
; Dream.get "/" homepage
; Dream.get "/register" (fun request ->
render_unsafe (Register.f request) )
; Dream.post "/register" (fun request ->
match%lwt Dream.form request with
| `Ok [ ("email", email); ("nick", nick); ("password", password) ]
->
render_unsafe (Register.f ~nick ~email ~password request)
| _ -> assert false )
; Dream.get "/login" (fun request -> render_unsafe (Login.f request))
; Dream.post "/login" (fun request ->
match%lwt Dream.form request with
| `Ok [ ("nick", nick); ("password", password) ] ->
render_unsafe (Login.f ~nick ~password request)
| _ -> assert false )
; Dream.get "/register" register_get
; Dream.post "/register" register_post
; Dream.get "/login" login_get
; Dream.post "/login" login_post
; Dream.get "/user" user
]
@@ Dream.not_found

View file

@ -11,7 +11,7 @@ let render_unsafe ~title ~content =
<header>
<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark">
<div class="container-fluid">
<a class="navbar-brand" href="/">permap</a>
<a class="navbar-brand" href="/"><img src="/assets/img/favicon.png" alt="Permap" height="42" /></a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
@ -26,6 +26,9 @@ let render_unsafe ~title ~content =
<li class="nav-item">
<a class="nav-link" href="/login">Login</a>
</li>
<li class="nav-item">
<a class="nav-link" href="/user">Users</a>
</li>
</ul>
</div>
</div>

View file

@ -69,3 +69,19 @@ let register ~email ~nick ~password =
| Error e -> Error (Format.sprintf "db error: %s" (Rc.to_string e)) )
| Ok _ -> Error "nick or email already exists"
| Error e -> Error (Format.sprintf "db error: %s" (Rc.to_string e))
let list _request =
let open Sqlite3_utils in
let users =
Db.with_db (fun db ->
exec_raw_args db "SELECT nick FROM user;" [||] ~f:Cursor.to_list )
in
match users with
| Error e -> Format.sprintf "db error: %s" (Rc.to_string e)
| Ok users ->
Format.asprintf "<ul>%a</ul>"
(Format.pp_print_list (fun fmt -> function
| [| Data.TEXT s |] ->
Format.fprintf fmt {|<li><a href="/user/%s">%s</a></li>|} s s
| _ -> failwith "error" ) )
users