From 15a5d64621da076301822f1ebcda06caecadf613 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Sat, 15 Jun 2019 23:57:04 +0200 Subject: [PATCH] feat(backend): minor refactor on middlewares --- backend/src/uxbox/api/images.clj | 1 - backend/src/uxbox/api/middleware.clj | 61 ++++++++++++++-------------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/backend/src/uxbox/api/images.clj b/backend/src/uxbox/api/images.clj index 8b3d037fd..07f78958c 100644 --- a/backend/src/uxbox/api/images.clj +++ b/backend/src/uxbox/api/images.clj @@ -97,7 +97,6 @@ :mimetype [st/required st/string] :collection [st/uuid-str]}}} [{:keys [user parameters] :as ctx}] - (prn "create-image" (:body-params ctx) (:multipart-params ctx)) (let [params (get parameters :multipart) upload (get params :upload) filename (fs/name (:filename upload)) diff --git a/backend/src/uxbox/api/middleware.clj b/backend/src/uxbox/api/middleware.clj index aee47ec3e..c24b071a2 100644 --- a/backend/src/uxbox/api/middleware.clj +++ b/backend/src/uxbox/api/middleware.clj @@ -5,10 +5,8 @@ ;; Copyright (c) 2016-2019 Andrey Antukh (ns uxbox.api.middleware - (:require [muuntaja.core :as m] - [promesa.core :as p] + (:require [promesa.core :as p] [reitit.core :as rc] - [reitit.dev.pretty :as pretty] [reitit.ring.middleware.multipart :as multipart] [reitit.ring.middleware.muuntaja :as muuntaja] [reitit.ring.middleware.parameters :as parameters] @@ -18,9 +16,9 @@ [ring.middleware.multipart-params :refer [wrap-multipart-params]] [struct.core :as st] [uxbox.api.errors :as api-errors] + [uxbox.util.http :as http] [uxbox.util.data :refer [normalize-attrs]] - [uxbox.util.exceptions :as ex] - [uxbox.util.transit :as t])) + [uxbox.util.exceptions :as ex])) (defn- transform-handler [handler] @@ -101,8 +99,6 @@ {:name ::parameters-validation-middleware :compile compile})) - - (def ^:private session-middleware (let [options {:store (cookie-store {:key "a 16-byte secret"}) :cookie-name "session" @@ -125,30 +121,35 @@ ::exception/default api-errors/errors-handler ::exception/wrap api-errors/wrap-print-errors))) +(def authorization-middleware + {:name ::authorization-middleware + :wrap (fn [handler] + (fn + ([request] + (if-let [identity (get-in request [:session :user-id])] + (handler (assoc request :identity identity :user identity)) + (http/forbidden nil))) + ([request respond raise] + (if-let [identity (get-in request [:session :user-id])] + (handler (assoc request :identity identity :user identity) respond raise) + (respond (http/forbidden nil))))))}) -(def ^:private muuntaja-instance - (m/create (update-in m/default-options [:formats "application/transit+json"] - merge {:encoder-opts {:handlers t/+write-handlers+} - :decoder-opts {:handlers t/+read-handlers+}}))) -(def router-options - {;;:reitit.middleware/transform dev/print-request-diffs - :exception pretty/exception - :data {:muuntaja muuntaja-instance - :middleware [session-middleware - parameters/parameters-middleware - muuntaja/format-negotiate-middleware - ;; encoding response body - muuntaja/format-response-middleware - ;; exception handling - exception-middleware - ;; decoding request body - muuntaja/format-request-middleware - ;; multipart - multipart-params-middleware - ;; parameters normalization - normalize-params-middleware - ;; parameters validation - parameters-validation-middleware]}}) +(def middleware + [session-middleware + parameters/parameters-middleware + muuntaja/format-negotiate-middleware + ;; encoding response body + muuntaja/format-response-middleware + ;; exception handling + exception-middleware + ;; decoding request body + muuntaja/format-request-middleware + ;; multipart + multipart-params-middleware + ;; parameters normalization + normalize-params-middleware + ;; parameters validation + parameters-validation-middleware]) (defn handler [invar]