nice tweak for validation
This commit is contained in:
@@ -23,7 +23,8 @@
|
||||
[config.core :refer [env]]
|
||||
[datomic.api :as dc]
|
||||
[malli.core :as mc]
|
||||
[malli.transform :as mt2]))
|
||||
[malli.transform :as mt2]
|
||||
[manifold.time :as mt]))
|
||||
|
||||
(defn filters [request]
|
||||
[:form {"hx-trigger" "change delay:500ms, keyup changed from:.hot-filter delay:1000ms"
|
||||
@@ -245,22 +246,14 @@
|
||||
(let [user (some-> request
|
||||
:params
|
||||
:user-id
|
||||
not-empty
|
||||
Long/parseLong
|
||||
(#(dc/pull (dc/db conn) default-read %)))
|
||||
new-clients (map #(Long/parseLong %)
|
||||
(cond-> (get form-params "clients")
|
||||
(string? (get form-params "clients")) vector))
|
||||
|
||||
_ @(dc/transact conn [
|
||||
[:upsert-entity {:db/id (:db/id user)
|
||||
:user/role (keyword "user-role" (get form-params "role"))
|
||||
:user/clients new-clients}]])
|
||||
:user/clients (some-> request :params :clients)}]])
|
||||
user (some-> request
|
||||
:params
|
||||
:user-id
|
||||
not-empty
|
||||
Long/parseLong
|
||||
(#(dc/pull (dc/db conn) default-read %)))]
|
||||
|
||||
(html-response
|
||||
@@ -272,8 +265,6 @@
|
||||
(let [user (some-> request
|
||||
:params
|
||||
:user-id
|
||||
not-empty
|
||||
Long/parseLong
|
||||
(#(dc/pull (dc/db conn) default-read %)))]
|
||||
(html-response
|
||||
(com/modal
|
||||
@@ -324,27 +315,70 @@
|
||||
|
||||
[:div])]]))))
|
||||
|
||||
(def form-schema
|
||||
(mc/schema
|
||||
[:map
|
||||
[:id nat-int?]
|
||||
[:client-ids [:vector nat-int?]]
|
||||
[:role [:enum :user-role/admin :user-role/test]]]))
|
||||
(defn forced-vector [x]
|
||||
[:vector {:decode/json {:enter (fn [x]
|
||||
(if (sequential? x)
|
||||
x
|
||||
[x])
|
||||
)}}
|
||||
x])
|
||||
|
||||
#_(mc/coerce
|
||||
form-schema
|
||||
{"id" "1230812"
|
||||
"client-ids" ["123"]
|
||||
"role" "admin"}
|
||||
mt2/json-transformer)
|
||||
(def entity-id (mc/schema nat-int?))
|
||||
|
||||
#_(mt2/coerck)
|
||||
(defn wrap-schema-decode [handler & {:keys [form query params]}]
|
||||
(fn [{:keys [form-params query-params] :as request}]
|
||||
(try
|
||||
(handler (cond-> request
|
||||
(and (:params request) params)
|
||||
(assoc :params
|
||||
(mc/coerce
|
||||
params
|
||||
(:params request)
|
||||
(mt2/transformer
|
||||
(mt2/key-transformer {:encode name :decode keyword})
|
||||
mt2/string-transformer
|
||||
mt2/json-transformer) ))
|
||||
|
||||
(and form form-params)
|
||||
(assoc :parsed-form-params
|
||||
(mc/coerce
|
||||
form
|
||||
form-params
|
||||
(mt2/transformer
|
||||
(mt2/key-transformer {:encode name :decode keyword})
|
||||
mt2/string-transformer
|
||||
mt2/json-transformer) ))
|
||||
|
||||
(and query query-params)
|
||||
(assoc :parsed-query-params
|
||||
(mc/coerce
|
||||
form
|
||||
form-params
|
||||
(mt2/transformer
|
||||
(mt2/key-transformer {:encode name :decode keyword})
|
||||
mt2/string-transformer
|
||||
mt2/json-transformer) ))))
|
||||
(catch Exception e
|
||||
{:status 400
|
||||
:body "error"}))))
|
||||
|
||||
|
||||
(def key->handler
|
||||
{:users (wrap-admin (helper/page-route grid-page))
|
||||
:user-table (wrap-admin (helper/table-route grid-page))
|
||||
:user-edit-save (wrap-client-redirect-unauthenticated (wrap-admin user-edit-save))
|
||||
:user-edit-dialog (wrap-client-redirect-unauthenticated (wrap-admin user-edit-dialog))
|
||||
{:users (wrap-admin (helper/page-route grid-page))
|
||||
:user-table (wrap-admin (helper/table-route grid-page))
|
||||
:user-edit-save (-> user-edit-save
|
||||
wrap-admin
|
||||
wrap-client-redirect-unauthenticated
|
||||
(wrap-schema-decode
|
||||
:params (mc/schema
|
||||
[:map
|
||||
[:user-id nat-int?]
|
||||
[:clients (forced-vector entity-id)]
|
||||
[:role [:enum {:decode/string #(keyword "user-role" %)} :user-role/admin :user-role/manager :user-role/power-user :user-role/user :user-role/none]]])))
|
||||
:user-edit-dialog (-> user-edit-dialog
|
||||
wrap-admin
|
||||
wrap-client-redirect-unauthenticated
|
||||
(wrap-schema-decode
|
||||
:params (mc/schema [:map [:user-id entity-id]])))
|
||||
:user-impersonate (wrap-client-redirect-unauthenticated (wrap-admin impersonate))})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user