Adds manager type, blocks certain permissions
This commit is contained in:
@@ -256,7 +256,9 @@
|
|||||||
{:db/ident :forecasted-transaction/identifier
|
{:db/ident :forecasted-transaction/identifier
|
||||||
:db/doc "An identifier for this forcasted transaction, e.g., 'RENT'"
|
:db/doc "An identifier for this forcasted transaction, e.g., 'RENT'"
|
||||||
:db/valueType :db.type/string
|
:db/valueType :db.type/string
|
||||||
:db/cardinality :db.cardinality/one}]]}}]
|
:db/cardinality :db.cardinality/one}]]}
|
||||||
|
:auto-ap/add-manager-schema {:txes [[{:db/ident :user-role/manager}]]}}
|
||||||
|
]
|
||||||
(println "Conforming database...")
|
(println "Conforming database...")
|
||||||
(c/ensure-conforms conn norms-map)
|
(c/ensure-conforms conn norms-map)
|
||||||
(when (not (seq args))
|
(when (not (seq args))
|
||||||
|
|||||||
@@ -18,8 +18,7 @@
|
|||||||
:in ['$]
|
:in ['$]
|
||||||
:where []}
|
:where []}
|
||||||
:args [(d/db (d/connect uri))]}
|
:args [(d/db (d/connect uri))]}
|
||||||
(add-arg '?e id ['?e])
|
(add-arg '?e id ['?e]))]
|
||||||
(doto println))]
|
|
||||||
|
|
||||||
(->> (d/query query)
|
(->> (d/query query)
|
||||||
(map first)
|
(map first)
|
||||||
@@ -47,7 +46,6 @@
|
|||||||
(let [new-user-trans @(d/transact (d/connect uri) [(cond-> new-user
|
(let [new-user-trans @(d/transact (d/connect uri) [(cond-> new-user
|
||||||
true (assoc :db/id "user")
|
true (assoc :db/id "user")
|
||||||
is-first-user? (assoc :user/role :user-role/admin))])]
|
is-first-user? (assoc :user/role :user-role/admin))])]
|
||||||
(println new-user-trans)
|
|
||||||
(get-by-id (-> new-user-trans :tempids (get "user")))))))
|
(get-by-id (-> new-user-trans :tempids (get "user")))))))
|
||||||
|
|
||||||
(defn raw-graphql [args]
|
(defn raw-graphql [args]
|
||||||
|
|||||||
@@ -824,9 +824,8 @@
|
|||||||
(defn get-user [context args value]
|
(defn get-user [context args value]
|
||||||
(assert-admin (:id context))
|
(assert-admin (:id context))
|
||||||
|
|
||||||
(doto (let [users (d-users/get-graphql args)]
|
(let [users (d-users/get-graphql args)]
|
||||||
(->graphql users))
|
(->graphql users)))
|
||||||
println))
|
|
||||||
|
|
||||||
(defn get-vendor [context args value]
|
(defn get-vendor [context args value]
|
||||||
(->graphql
|
(->graphql
|
||||||
|
|||||||
@@ -5,10 +5,6 @@
|
|||||||
[auto-ap.graphql.utils :refer [->graphql assert-admin can-see-client?]]
|
[auto-ap.graphql.utils :refer [->graphql assert-admin can-see-client?]]
|
||||||
[clojure.string :as str]))
|
[clojure.string :as str]))
|
||||||
|
|
||||||
#_(def role->datomic-role {":none" :user-role/none
|
|
||||||
":admin" :user-role/admin
|
|
||||||
":user" :user-role/user})
|
|
||||||
|
|
||||||
(defn assert-client-code-is-unique [code]
|
(defn assert-client-code-is-unique [code]
|
||||||
(when (seq (d/query {:query {:find '[?id]
|
(when (seq (d/query {:query {:find '[?id]
|
||||||
:in ['$ '?code]
|
:in ['$ '?code]
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
(def role->datomic-role {":none" :user-role/none
|
(def role->datomic-role {":none" :user-role/none
|
||||||
":admin" :user-role/admin
|
":admin" :user-role/admin
|
||||||
|
":manager" :user-role/manager
|
||||||
":user" :user-role/user})
|
":user" :user-role/user})
|
||||||
|
|
||||||
(defn edit-user [context {:keys [edit_user] :as args} value]
|
(defn edit-user [context {:keys [edit_user] :as args} value]
|
||||||
|
|||||||
@@ -72,7 +72,7 @@
|
|||||||
(= (:user/role id) "admin")
|
(= (:user/role id) "admin")
|
||||||
nil
|
nil
|
||||||
|
|
||||||
(= (:user/role id) "user")
|
(#{"manager" "user"} (:user/role id))
|
||||||
(:user/clients id [])))
|
(:user/clients id [])))
|
||||||
|
|
||||||
(defn result->page [results result-count key args]
|
(defn result->page [results result-count key args]
|
||||||
|
|||||||
@@ -11,7 +11,11 @@
|
|||||||
(defn upsert-vendor [context {{:keys [id name hidden terms code print_as primary_contact secondary_contact address default_account_id invoice_reminder_schedule terms_overrides account_overrides] :as in} :vendor} value]
|
(defn upsert-vendor [context {{:keys [id name hidden terms code print_as primary_contact secondary_contact address default_account_id invoice_reminder_schedule terms_overrides account_overrides] :as in} :vendor} value]
|
||||||
(when id
|
(when id
|
||||||
(assert-admin (:id context)))
|
(assert-admin (:id context)))
|
||||||
(let [terms-overrides (mapv
|
(let [hidden (if (is-admin? (:id context))
|
||||||
|
hidden
|
||||||
|
false)
|
||||||
|
|
||||||
|
terms-overrides (mapv
|
||||||
(fn [to]
|
(fn [to]
|
||||||
(cond->
|
(cond->
|
||||||
#:vendor-terms-override {:client (:client_id to)
|
#:vendor-terms-override {:client (:client_id to)
|
||||||
|
|||||||
@@ -160,8 +160,11 @@
|
|||||||
|
|
||||||
(re-frame/reg-sub
|
(re-frame/reg-sub
|
||||||
::vendors
|
::vendors
|
||||||
(fn [db]
|
:<- [::is-admin?]
|
||||||
(filter #(not (:hidden %)) (vals (:vendors db)))))
|
:<- [::all-vendors]
|
||||||
|
(fn [[is-admin all-vendors]]
|
||||||
|
(filter #(or (not (:hidden %))
|
||||||
|
is-admin) all-vendors)))
|
||||||
|
|
||||||
(re-frame/reg-sub
|
(re-frame/reg-sub
|
||||||
::all-vendors
|
::all-vendors
|
||||||
|
|||||||
@@ -55,7 +55,8 @@
|
|||||||
|
|
||||||
|
|
||||||
(defn navbar [ap]
|
(defn navbar [ap]
|
||||||
(let [client (re-frame/subscribe [::subs/client])
|
(let [user (re-frame/subscribe [::subs/user])
|
||||||
|
client (re-frame/subscribe [::subs/client])
|
||||||
clients (re-frame/subscribe [::subs/clients])
|
clients (re-frame/subscribe [::subs/clients])
|
||||||
menu (re-frame/subscribe [::subs/menu])]
|
menu (re-frame/subscribe [::subs/menu])]
|
||||||
[:nav {:class "navbar has-shadow is-fixed-top"}
|
[:nav {:class "navbar has-shadow is-fixed-top"}
|
||||||
@@ -74,12 +75,15 @@
|
|||||||
[:a.navbar-item {:class [(active-when ap = :payments)]
|
[:a.navbar-item {:class [(active-when ap = :payments)]
|
||||||
:href (bidi/path-for routes/routes :payments)}
|
:href (bidi/path-for routes/routes :payments)}
|
||||||
"Payments" ]
|
"Payments" ]
|
||||||
[:a.navbar-item {:class [(active-when ap = :transactions)]
|
(when (not= "manager" (:user/role @user))
|
||||||
:href (bidi/path-for routes/routes :transactions)}
|
[:a.navbar-item {:class [(active-when ap = :transactions)]
|
||||||
"Transactions" ]
|
:href (bidi/path-for routes/routes :transactions)}
|
||||||
[:a.navbar-item {:class [(active-when ap = :ledger)]
|
"Transactions" ])
|
||||||
:href (bidi/path-for routes/routes :ledger)}
|
|
||||||
"Ledger" ]]
|
(when (not= "manager" (:user/role @user))
|
||||||
|
[:a.navbar-item {:class [(active-when ap = :ledger)]
|
||||||
|
:href (bidi/path-for routes/routes :ledger)}
|
||||||
|
"Ledger" ])]
|
||||||
[:div {:class "navbar-burger burger", :data-target "navMenu"}
|
[:div {:class "navbar-burger burger", :data-target "navMenu"}
|
||||||
[:span]
|
[:span]
|
||||||
[:span]
|
[:span]
|
||||||
|
|||||||
@@ -24,7 +24,6 @@
|
|||||||
|
|
||||||
(defn action-modal [{:keys [title class warning action-text id save-event can-submit? status-from] :or {can-submit? true}} & rest]
|
(defn action-modal [{:keys [title class warning action-text id save-event can-submit? status-from] :or {can-submit? true}} & rest]
|
||||||
(let [{:keys [visible? saving? error-message]} @(re-frame/subscribe [::subs/modal-state id status-from])]
|
(let [{:keys [visible? saving? error-message]} @(re-frame/subscribe [::subs/modal-state id status-from])]
|
||||||
(println id visible?)
|
|
||||||
(when visible?
|
(when visible?
|
||||||
[:form {:id id
|
[:form {:id id
|
||||||
:on-submit (fn [e]
|
:on-submit (fn [e]
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
(ns auto-ap.views.components.vendor-dialog
|
(ns auto-ap.views.components.vendor-dialog
|
||||||
(:require [re-frame.core :as re-frame]
|
(:require [re-frame.core :as re-frame]
|
||||||
[auto-ap.views.utils :refer [dispatch-event horizontal-field bind-field with-user active-when]]
|
[auto-ap.views.utils :refer [dispatch-event horizontal-field bind-field with-user with-is-admin? active-when]]
|
||||||
[auto-ap.views.components.modal :refer [action-modal]]
|
[auto-ap.views.components.modal :refer [action-modal]]
|
||||||
[auto-ap.views.components.address :refer [address-field]]
|
[auto-ap.views.components.address :refer [address-field]]
|
||||||
[auto-ap.views.components.typeahead :refer [typeahead-entity]]
|
[auto-ap.views.components.typeahead :refer [typeahead-entity]]
|
||||||
@@ -105,36 +105,37 @@
|
|||||||
|
|
||||||
(re-frame/reg-event-fx
|
(re-frame/reg-event-fx
|
||||||
::save
|
::save
|
||||||
[with-user (forms/triggers-loading ::vendor-form) (forms/in-form ::vendor-form)]
|
[with-user with-is-admin? (forms/triggers-loading ::vendor-form) (forms/in-form ::vendor-form)]
|
||||||
(fn [{:keys [user] {{:keys [name hidden print-as terms invoice-reminder-schedule primary-contact secondary-contact address default-account terms-overrides account-overrides id] :as data} :data} :db} _]
|
(fn [{:keys [user is-admin?] {{:keys [name hidden print-as terms invoice-reminder-schedule primary-contact secondary-contact address default-account terms-overrides account-overrides id] :as data} :data} :db} _]
|
||||||
|
(println user)
|
||||||
(when (s/valid? ::entity/vendor data)
|
(when (s/valid? ::entity/vendor data)
|
||||||
{ :graphql
|
{ :graphql
|
||||||
{:token user
|
{:token user
|
||||||
:query-obj {:venia/operation {:operation/type :mutation
|
:query-obj {:venia/operation {:operation/type :mutation
|
||||||
:operation/name "UpsertVendor"}
|
:operation/name "UpsertVendor"}
|
||||||
:venia/queries [{:query/data [:upsert-vendor
|
:venia/queries [{:query/data [:upsert-vendor
|
||||||
{:vendor {:id id
|
{:vendor (cond-> {:id id
|
||||||
:name name
|
:name name
|
||||||
:hidden hidden
|
:print-as print-as
|
||||||
:print-as print-as
|
:terms terms
|
||||||
:terms terms
|
:terms-overrides (mapv
|
||||||
:terms-overrides (mapv
|
(fn [{:keys [client override id]}]
|
||||||
(fn [{:keys [client override id]}]
|
{:id id
|
||||||
{:id id
|
:client-id (:id client)
|
||||||
:client-id (:id client)
|
:terms override})
|
||||||
:terms override})
|
terms-overrides)
|
||||||
terms-overrides)
|
:default-account-id (:id default-account)
|
||||||
:default-account-id (:id default-account)
|
:account-overrides (mapv
|
||||||
:account-overrides (mapv
|
(fn [{:keys [client override id]}]
|
||||||
(fn [{:keys [client override id]}]
|
{:id id
|
||||||
{:id id
|
:client-id (:id client)
|
||||||
:client-id (:id client)
|
:account-id (:id override)})
|
||||||
:account-id (:id override)})
|
account-overrides)
|
||||||
account-overrides)
|
:address address
|
||||||
:address address
|
:primary-contact primary-contact
|
||||||
:primary-contact primary-contact
|
:secondary-contact secondary-contact
|
||||||
:secondary-contact secondary-contact
|
:invoice-reminder-schedule invoice-reminder-schedule}
|
||||||
:invoice-reminder-schedule invoice-reminder-schedule}}
|
is-admin? (assoc :hidden hidden))}
|
||||||
events/vendor-query]}]}
|
events/vendor-query]}]}
|
||||||
:on-success [::save-complete]
|
:on-success [::save-complete]
|
||||||
:on-error [::forms/save-error ::vendor-form]}})))
|
:on-error [::forms/save-error ::vendor-form]}})))
|
||||||
@@ -171,7 +172,8 @@
|
|||||||
|
|
||||||
(defn form-content [{:keys [data change-event]}]
|
(defn form-content [{:keys [data change-event]}]
|
||||||
(let [accounts @(re-frame/subscribe [::subs/accounts])
|
(let [accounts @(re-frame/subscribe [::subs/accounts])
|
||||||
clients @(re-frame/subscribe [::subs/clients])]
|
clients @(re-frame/subscribe [::subs/clients])
|
||||||
|
is-admin? @(re-frame/subscribe [::subs/is-admin?])]
|
||||||
[:div
|
[:div
|
||||||
[horizontal-field
|
[horizontal-field
|
||||||
[:label.label "Name"]
|
[:label.label "Name"]
|
||||||
@@ -194,15 +196,16 @@
|
|||||||
:event change-event
|
:event change-event
|
||||||
:subscription data}]]]]
|
:subscription data}]]]]
|
||||||
|
|
||||||
[horizontal-field
|
(when is-admin?
|
||||||
[:label.label "Hidden"]
|
[horizontal-field
|
||||||
[:div.control
|
[:label.label "Hidden"]
|
||||||
[bind-field
|
[:div.control
|
||||||
[:input {:type "checkbox"
|
[bind-field
|
||||||
:field :hidden
|
[:input {:type "checkbox"
|
||||||
:spec ::entity/hidden
|
:field :hidden
|
||||||
:event change-event
|
:spec ::entity/hidden
|
||||||
:subscription data}]]]]
|
:event change-event
|
||||||
|
:subscription data}]]]])
|
||||||
[:h2.subtitle "Terms"]
|
[:h2.subtitle "Terms"]
|
||||||
[default-with-overrides {:data data :change-event change-event
|
[default-with-overrides {:data data :change-event change-event
|
||||||
:default-key :terms
|
:default-key :terms
|
||||||
|
|||||||
@@ -71,6 +71,7 @@
|
|||||||
%))
|
%))
|
||||||
(assoc :vendor-id (:id (:vendor data)))
|
(assoc :vendor-id (:id (:vendor data)))
|
||||||
(assoc :yodlee-merchant-id (:id (:yodlee-merchant data)))
|
(assoc :yodlee-merchant-id (:id (:yodlee-merchant data)))
|
||||||
|
(update :description (fn [d] (when d (str/replace d #"\\" "\\\\"))))
|
||||||
(update :accounts (fn [as]
|
(update :accounts (fn [as]
|
||||||
(map #(-> %
|
(map #(-> %
|
||||||
(update :id (fn [i] (if (some-> i (str/starts-with? "new-"))
|
(update :id (fn [i] (if (some-> i (str/starts-with? "new-"))
|
||||||
@@ -99,6 +100,7 @@
|
|||||||
:dom-lte
|
:dom-lte
|
||||||
:dom-gte
|
:dom-gte
|
||||||
:note])
|
:note])
|
||||||
|
(update :description (fn [d] (when d (str/replace d #"\\" "\\\\"))))
|
||||||
(assoc :yodlee-merchant-id (:id (:yodlee-merchant data)))
|
(assoc :yodlee-merchant-id (:id (:yodlee-merchant data)))
|
||||||
(assoc :client-id (:id (:client data)))
|
(assoc :client-id (:id (:client data)))
|
||||||
(assoc :bank-account-id (:id (:bank-account data))))}
|
(assoc :bank-account-id (:id (:bank-account data))))}
|
||||||
|
|||||||
@@ -149,10 +149,11 @@
|
|||||||
:subscription editing}
|
:subscription editing}
|
||||||
[:option {:value ":none"} "None"]
|
[:option {:value ":none"} "None"]
|
||||||
[:option {:value ":user"} "User"]
|
[:option {:value ":user"} "User"]
|
||||||
|
[:option {:value ":manager"} "Manager"]
|
||||||
[:option {:value ":admin"} "Admin"]]]]]]
|
[:option {:value ":admin"} "Admin"]]]]]]
|
||||||
|
|
||||||
|
|
||||||
(when (= ":user" (:role (:user editing)))
|
(when (#{":user" ":manager"} (:role (:user editing)))
|
||||||
[horizontal-field
|
[horizontal-field
|
||||||
[:label.label "Clients"]
|
[:label.label "Clients"]
|
||||||
[:div.control
|
[:div.control
|
||||||
|
|||||||
@@ -70,7 +70,6 @@
|
|||||||
(re-frame/reg-event-db
|
(re-frame/reg-event-db
|
||||||
::save-error
|
::save-error
|
||||||
(fn [db [_ vendor]]
|
(fn [db [_ vendor]]
|
||||||
(println "ERROR?")
|
|
||||||
(-> db
|
(-> db
|
||||||
(assoc-in [:admin :vendor :error] true)
|
(assoc-in [:admin :vendor :error] true)
|
||||||
(assoc-in [:admin :vendor :saving?] false))))
|
(assoc-in [:admin :vendor :saving?] false))))
|
||||||
@@ -78,7 +77,6 @@
|
|||||||
(re-frame/reg-event-db
|
(re-frame/reg-event-db
|
||||||
::change
|
::change
|
||||||
(fn [db [_ path value]]
|
(fn [db [_ path value]]
|
||||||
(println path value)
|
|
||||||
(assoc-in db (concat [:admin :vendor] path)
|
(assoc-in db (concat [:admin :vendor] path)
|
||||||
value)))
|
value)))
|
||||||
|
|
||||||
|
|||||||
@@ -91,8 +91,7 @@
|
|||||||
(assoc-in [:status :loading] false))))
|
(assoc-in [:status :loading] false))))
|
||||||
|
|
||||||
(defn ledger-content []
|
(defn ledger-content []
|
||||||
(let [current-client @(re-frame/subscribe [::subs/client])
|
(let [current-client @(re-frame/subscribe [::subs/client])]
|
||||||
user @(re-frame/subscribe [::subs/user])]
|
|
||||||
[:div
|
[:div
|
||||||
[:h1.title "Ledger"]
|
[:h1.title "Ledger"]
|
||||||
[table/table {:id :ledger
|
[table/table {:id :ledger
|
||||||
@@ -102,13 +101,16 @@
|
|||||||
|
|
||||||
|
|
||||||
(defn ledger-page []
|
(defn ledger-page []
|
||||||
(reagent/create-class
|
(let [user (re-frame/subscribe [::subs/user])]
|
||||||
{:display-name "ledger-page"
|
(reagent/create-class
|
||||||
:component-will-unmount #(re-frame/dispatch [::unmounted])
|
{:display-name "ledger-page"
|
||||||
:reagent-render
|
:component-will-unmount #(re-frame/dispatch [::unmounted])
|
||||||
(fn []
|
:reagent-render
|
||||||
(let [params @(re-frame/subscribe [::params])]
|
(fn []
|
||||||
[side-bar-layout
|
(if (not= "manager" (:user/role @user))
|
||||||
{:side-bar [ledger-side-bar]
|
(let [params @(re-frame/subscribe [::params])]
|
||||||
:main [ledger-content]}]))}))
|
[side-bar-layout
|
||||||
|
{:side-bar [ledger-side-bar]
|
||||||
|
:main [ledger-content]}])
|
||||||
|
[:div "Not authorized"]))})))
|
||||||
|
|
||||||
|
|||||||
@@ -214,6 +214,9 @@
|
|||||||
{:component-will-mount #(re-frame/dispatch-sync [::params-change {:date (date->str (local-now) standard)}]) }))
|
{:component-will-mount #(re-frame/dispatch-sync [::params-change {:date (date->str (local-now) standard)}]) }))
|
||||||
|
|
||||||
(defn balance-sheet-page []
|
(defn balance-sheet-page []
|
||||||
[side-bar-layout
|
(let [user (re-frame/subscribe [::subs/user])]
|
||||||
{:side-bar [ledger-side-bar]
|
(if (not= "manager" (:user/role @user))
|
||||||
:main [balance-sheet-content]}])
|
[side-bar-layout
|
||||||
|
{:side-bar [ledger-side-bar]
|
||||||
|
:main [balance-sheet-content]}]
|
||||||
|
[:div "Not Authorized"])))
|
||||||
|
|||||||
@@ -532,10 +532,13 @@
|
|||||||
(re-frame/dispatch [::ledger-params-changed params]))}]]]))
|
(re-frame/dispatch [::ledger-params-changed params]))}]]]))
|
||||||
|
|
||||||
(defn profit-and-loss-page []
|
(defn profit-and-loss-page []
|
||||||
(let [ledger-list-active? @(re-frame/subscribe [::ledger-list-active?])]
|
(let [ledger-list-active? @(re-frame/subscribe [::ledger-list-active?])
|
||||||
[side-bar-layout
|
user (re-frame/subscribe [::subs/user])]
|
||||||
{:side-bar [ledger-side-bar]
|
(if (not= "manager" (:user/role @user))
|
||||||
:main [profit-and-loss-content]
|
[side-bar-layout
|
||||||
:right-side-bar [appearing-side-bar
|
{:side-bar [ledger-side-bar]
|
||||||
{:visible? ledger-list-active?}
|
:main [profit-and-loss-content]
|
||||||
[ledger-list]]}]))
|
:right-side-bar [appearing-side-bar
|
||||||
|
{:visible? ledger-list-active?}
|
||||||
|
[ledger-list]]}]
|
||||||
|
[:div "Not authorized"])))
|
||||||
|
|||||||
@@ -160,14 +160,17 @@
|
|||||||
(fn []
|
(fn []
|
||||||
(let [{transaction-bar-active? :active?} @(re-frame/subscribe [::forms/form ::edit/form])
|
(let [{transaction-bar-active? :active?} @(re-frame/subscribe [::forms/form ::edit/form])
|
||||||
params @(re-frame/subscribe [::params]) ;; Keep to make sure it doens'nt get disposed
|
params @(re-frame/subscribe [::params]) ;; Keep to make sure it doens'nt get disposed
|
||||||
ap @(re-frame/subscribe [::subs/active-page])]
|
ap @(re-frame/subscribe [::subs/active-page])
|
||||||
[side-bar-layout
|
user (re-frame/subscribe [::subs/user])]
|
||||||
{:side-bar [side-bar/side-bar]
|
(if (not= "manager" (:user/role @user))
|
||||||
:main [:div ^{:key approval-status}
|
[side-bar-layout
|
||||||
[content]]
|
{:side-bar [side-bar/side-bar]
|
||||||
:bottom [:div
|
:main [:div ^{:key approval-status}
|
||||||
[manual/modal {:import-completed [::manual-import-completed ]}]]
|
[content]]
|
||||||
:right-side-bar [appearing-side-bar
|
:bottom [:div
|
||||||
{:visible? transaction-bar-active?}
|
[manual/modal {:import-completed [::manual-import-completed ]}]]
|
||||||
[edit/form {:edit-completed [::edit-completed]}]]}]))}))
|
:right-side-bar [appearing-side-bar
|
||||||
|
{:visible? transaction-bar-active?}
|
||||||
|
[edit/form {:edit-completed [::edit-completed]}]]}]
|
||||||
|
[:div "Not authorized"])))}))
|
||||||
|
|
||||||
|
|||||||
@@ -321,6 +321,15 @@
|
|||||||
(-> context
|
(-> context
|
||||||
(assoc-in [:coeffects :user] (get-in context [:coeffects :db :user]))))))
|
(assoc-in [:coeffects :user] (get-in context [:coeffects :db :user]))))))
|
||||||
|
|
||||||
|
(def with-is-admin?
|
||||||
|
(re-frame/->interceptor
|
||||||
|
:id :with-is-admin?
|
||||||
|
:before (fn [context]
|
||||||
|
(-> context
|
||||||
|
(assoc-in [:coeffects :is-admin?] (= "admin"
|
||||||
|
(:user/role
|
||||||
|
(get-in context [:coeffects :db :user]))))))))
|
||||||
|
|
||||||
(defn query-params []
|
(defn query-params []
|
||||||
(reduce-kv
|
(reduce-kv
|
||||||
(fn [result k v]
|
(fn [result k v]
|
||||||
|
|||||||
Reference in New Issue
Block a user