refactor invalid form handling

This commit is contained in:
pena 2022-04-05 23:22:55 +02:00 committed by Swrup
parent 855564bed6
commit 4cfe4e671a
3 changed files with 17 additions and 40 deletions

View file

@ -130,7 +130,4 @@ let post request =
| Ok () -> pp_discussion (request, user_id, comrade_id)
| Error e -> Utils.render e request
end
| `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form"
| `Expired _ | `Many_tokens _ | `Missing_token _ | `Invalid_token _
| `Wrong_session _ | `Wrong_content_type ->
Dream.empty `Bad_Request )
| form -> Utils.handle_invalid_form form )

View file

@ -30,10 +30,7 @@ let register_post request =
(User.login ~login:nick ~password request)
in
render res request )
| `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form"
| `Many_tokens _ | `Missing_token _ | `Invalid_token _ | `Wrong_session _
| `Expired _ | `Wrong_content_type ->
Dream.empty `Bad_Request
| form -> Utils.handle_invalid_form form
let login_get request = render (Login.f request) request
@ -51,10 +48,7 @@ let login_post request =
Dream.respond ~status:`See_Other
~headers:[ ("Location", url) ]
"Logged in: Happy geo-posting!" )
| `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form"
| `Many_tokens _ | `Missing_token _ | `Invalid_token _ | `Wrong_session _
| `Expired _ | `Wrong_content_type ->
Dream.empty `Bad_Request
| form -> Utils.handle_invalid_form form
let admin_get request =
match Dream.session "user_id" request with
@ -101,10 +95,7 @@ let admin_post request =
Dream.respond ~status:`See_Other
~headers:[ ("Location", "/admin") ]
"" )
| `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form"
| `Expired _ | `Many_tokens _ | `Missing_token _ | `Invalid_token _
| `Wrong_session _ | `Wrong_content_type ->
Dream.empty `Bad_Request )
| form -> Utils.handle_invalid_form form )
let catalog request =
let catalog_content =
@ -132,10 +123,7 @@ let delete_post request =
Dream.respond ~status:`See_Other
~headers:[ ("Location", "/") ]
"Your post was deleted!" )
| `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form"
| `Expired _ | `Many_tokens _ | `Missing_token _ | `Invalid_token _
| `Wrong_session _ | `Wrong_content_type ->
Dream.empty `Bad_Request )
| form -> Utils.handle_invalid_form form )
let report_get request =
let post_id = Dream.param request "post_id" in
@ -153,10 +141,7 @@ let report_post request =
let post_id = Dream.param request "post_id" in
let* () = Babillard.report ~user_id ~reason post_id in
Ok "The post was reported!"
| `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form"
| `Expired _ | `Many_tokens _ | `Missing_token _ | `Invalid_token _
| `Wrong_session _ | `Wrong_content_type ->
Dream.empty `Bad_Request )
| form -> Utils.handle_invalid_form form )
let user request =
render (Result.fold ~ok:Fun.id ~error:Fun.id (User.list ())) request
@ -205,10 +190,7 @@ let account_post request =
let* () = User.update_password password user_id in
Ok "Your password was updated!"
else Error "Password confirmation does not match"
| `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form"
| `Many_tokens _ | `Missing_token _ | `Invalid_token _ | `Wrong_session _
| `Expired _ | `Wrong_content_type ->
Dream.empty `Bad_Request )
| form -> Utils.handle_invalid_form form )
let profile_get request =
Utils.logged_in_or_redirect request (fun user_id ->
@ -246,6 +228,7 @@ let profile_post request =
| `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form"
| `Many_tokens _ | `Missing_token _ | `Invalid_token _ | `Wrong_session _
| `Expired _ | `Wrong_content_type -> (
(* TODO: why is this here ?! *)
match%lwt Dream.multipart request with
| `Ok [ ("file", file) ] -> (
match User.upload_avatar file user_id with
@ -254,10 +237,7 @@ let profile_post request =
~headers:[ ("Location", "/profile") ]
"Your avatar was updated!"
| Error e -> render e request )
| `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form"
| `Expired _ | `Many_tokens _ | `Missing_token _ | `Invalid_token _
| `Wrong_session _ | `Wrong_content_type ->
Dream.empty `Bad_Request ) )
| form -> Utils.handle_invalid_form form ) )
let get_post_image ~thumbnail request =
let id = Dream.param request "id" in
@ -347,10 +327,7 @@ let babillard_post request =
~headers:[ ("Location", adress) ]
"Your thread was posted!"
| Error e -> render e request ) )
| `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form"
| `Expired _ | `Many_tokens _ | `Missing_token _ | `Invalid_token _
| `Wrong_session _ | `Wrong_content_type ->
Dream.empty `Bad_Request )
| form -> Utils.handle_invalid_form form )
let thread_feed_get request =
let thread_id = Dream.param request "thread_id" in
@ -401,10 +378,7 @@ let reply_post request =
~headers:[ ("Location", adress) ]
"Your reply was posted!"
| Error e -> render e request )
| `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form"
| `Expired _ | `Many_tokens _ | `Missing_token _ | `Invalid_token _
| `Wrong_session _ | `Wrong_content_type ->
Dream.empty `Bad_Request )
| form -> Utils.handle_invalid_form form )
let error_template _error _debug_info response =
let status = Dream.status response in

View file

@ -22,3 +22,9 @@ let logged_in_or_redirect request logged_in =
let redirect_url = Format.sprintf "/login=?redirect=%s" target in
Dream.respond ~status:`See_Other ~headers:[ ("Location", redirect_url) ] ""
| Some user_id -> logged_in user_id
let handle_invalid_form = function
| `Ok _ -> Dream.respond ~status:`Bad_Request "invalid form"
| `Many_tokens _ | `Missing_token _ | `Invalid_token _ | `Wrong_session _
| `Expired _ | `Wrong_content_type ->
Dream.empty `Bad_Request