From fd7c0b62e755037aed18adddb81482730893ed62 Mon Sep 17 00:00:00 2001 From: Bryce Date: Wed, 6 Sep 2023 14:52:22 -0700 Subject: [PATCH] making ssr pages incorporate auth. --- src/clj/auto_ap/datomic/reports.clj | 11 ++-- src/clj/auto_ap/datomic/yodlee2.clj | 53 ++++++++++---------- src/clj/auto_ap/ssr/company/company_1099.clj | 15 +++--- src/clj/auto_ap/ssr/company/plaid.clj | 23 +++++---- src/clj/auto_ap/ssr/grid_page_helper.clj | 1 + 5 files changed, 57 insertions(+), 46 deletions(-) diff --git a/src/clj/auto_ap/datomic/reports.clj b/src/clj/auto_ap/datomic/reports.clj index 472ab0d0..2f030134 100644 --- a/src/clj/auto_ap/datomic/reports.clj +++ b/src/clj/auto_ap/datomic/reports.clj @@ -8,14 +8,19 @@ merge-query pull-many query2]] - [auto-ap.graphql.utils :refer [can-see-client? limited-clients]] + [auto-ap.graphql.utils :refer [can-see-client? extract-client-ids]] [clj-time.coerce :as c] [datomic.api :as dc])) (def default-read '[:db/id :report/client :report/created :report/url :report/name :report/creator]) (defn raw-graphql-ids [db args] - (let [query (cond-> {:query {:find [] + + (let [valid-clients (extract-client-ids (:clients args) + (:client-id args) + (when (:client-code args) + [:client/code (:client-code args)])) + query (cond-> {:query {:find [] :in ['$ ] :where []} :args [db]} @@ -24,7 +29,7 @@ (seq (:clients args)) (merge-query {:query {:in ['[?xx ...]] :where ['[?e :report/client ?xx]]} - :args [(set (map :db/id (:clients args)))]}) + :args [valid-clients]}) (:sort args) (add-sorter-fields {"client" ['[?e :report/client ?c] '[?c :client/name ?sort-client]] diff --git a/src/clj/auto_ap/datomic/yodlee2.clj b/src/clj/auto_ap/datomic/yodlee2.clj index 17316ade..ea65ae13 100644 --- a/src/clj/auto_ap/datomic/yodlee2.clj +++ b/src/clj/auto_ap/datomic/yodlee2.clj @@ -8,7 +8,7 @@ merge-query pull-many query2]] - [auto-ap.graphql.utils :refer [limited-clients]] + [auto-ap.graphql.utils :refer [extract-client-ids]] [clj-time.coerce :as c] [datomic.api :as dc])) @@ -18,36 +18,37 @@ (-> x (update :yodlee-provider-account/last-updated c/from-date))) (defn raw-graphql-ids [db args] - (->> (cond-> {:query {:find [] - :in ['$] - :where ['[?e :yodlee-provider-account/id]]} - :args [db]} + (let [valid-clients (extract-client-ids (:clients args) + (:client-id args) + (when (:client-code args) + [:client/code (:client-code args)]))] + (->> (cond-> {:query {:find [] + :in ['$ '[?xx ...]] + :where ['[?e :yodlee-provider-account/id] + '[?e :yodlee-provider-account/client ?xx]]} + :args [db valid-clients]} - (seq (:clients args)) - (merge-query {:query {:in ['[?xx ...]] - :where ['[?e :yodlee-provider-account/client ?xx]]} - :args [(set (map :db/id (:clients args)))]}) - (:client-id args) - (merge-query {:query {:in ['?client-id] - :where ['[?e :yodlee-provider-account/client ?client-id]]} - :args [ (:client-id args)]}) + (:client-id args) + (merge-query {:query {:in ['?client-id] + :where ['[?e :yodlee-provider-account/client ?client-id]]} + :args [ (:client-id args)]}) - (:client-code args) - (merge-query {:query {:in ['?client-code] - :where ['[?e :yodlee-provider-account/client ?client-id] - '[?client-id :client/code ?client-code]]} - :args [ (:client-code args)]}) + (:client-code args) + (merge-query {:query {:in ['?client-code] + :where ['[?e :yodlee-provider-account/client ?client-id] + '[?client-id :client/code ?client-code]]} + :args [ (:client-code args)]}) - (:sort args) (add-sorter-fields {"status" ['[?e :yodlee-provider-account/status ?sort-status]]} - args) - true - (merge-query {:query {:find ['?e ] - :where ['[?e :yodlee-provider-account/id]]}}) ) + (:sort args) (add-sorter-fields {"status" ['[?e :yodlee-provider-account/status ?sort-status]]} + args) + true + (merge-query {:query {:find ['?e ] + :where ['[?e :yodlee-provider-account/id]]}}) ) - (query2) - (apply-sort-3 args) - (apply-pagination args))) + (query2) + (apply-sort-3 args) + (apply-pagination args)))) (defn graphql-results [ids db _] diff --git a/src/clj/auto_ap/ssr/company/company_1099.clj b/src/clj/auto_ap/ssr/company/company_1099.clj index b92e5f1e..a2a6ef91 100644 --- a/src/clj/auto_ap/ssr/company/company_1099.clj +++ b/src/clj/auto_ap/ssr/company/company_1099.clj @@ -1,7 +1,8 @@ (ns auto-ap.ssr.company.company-1099 (:require [auto-ap.datomic :refer [apply-pagination-raw conn remove-nils]] - [auto-ap.graphql.utils :refer [assert-can-see-client is-admin?]] + [auto-ap.graphql.utils + :refer [assert-can-see-client extract-client-ids is-admin?]] [auto-ap.ssr-routes :as ssr-routes] [auto-ap.ssr.components :as com] [auto-ap.ssr.grid-page-helper :as helper] @@ -10,8 +11,7 @@ [bidi.bidi :as bidi] [cemerick.url :as url] [clojure.string :as str] - [datomic.api :as dc] - [iol-ion.query :refer [can-see-client?]])) + [datomic.api :as dc])) (def vendor-read '[:db/id :vendor/name @@ -45,7 +45,10 @@ vendor-id))) (defn get-1099-companies [user {:keys [clients] :as args}] - (let [ + (let [valid-clients (extract-client-ids (:clients args) + (:client-id args) + (when (:client-code args) + [:client/code (:client-code args)])) results (cond clients (dc/q '[:find @@ -63,7 +66,7 @@ [?p :payment/amount ?a] [?p :payment/vendor ?v]] (dc/db conn) - (set (map :db/id clients)) + valid-clients vendor-read) (is-admin? user) @@ -100,7 +103,7 @@ [?p :payment/amount ?a] [?p :payment/vendor ?v]] (dc/db conn) - clients + valid-clients vendor-read)) all (->> results (filter (fn [[_ _ a]] diff --git a/src/clj/auto_ap/ssr/company/plaid.clj b/src/clj/auto_ap/ssr/company/plaid.clj index 389baa1b..66b9b5e8 100644 --- a/src/clj/auto_ap/ssr/company/plaid.clj +++ b/src/clj/auto_ap/ssr/company/plaid.clj @@ -9,7 +9,8 @@ pull-attr pull-many-by-id query2]] - [auto-ap.graphql.utils :refer [assert-can-see-client limited-clients]] + [auto-ap.graphql.utils + :refer [assert-can-see-client extract-client-ids]] [auto-ap.logging :as alog] [auto-ap.plaid.core :as p] [auto-ap.ssr-routes :as ssr-routes] @@ -36,20 +37,20 @@ :plaid-account/name]}]) (defn raw-graphql-ids [db args] - (let [query (cond-> {:query {:find [] - :in ['$] - :where []} - :args [db]} + (println "ARGS " args) + (let [valid-clients (extract-client-ids (:clients args) + (:client-id args) + (when (:client-code args) + [:client/code (:client-code args)])) + query (cond-> {:query {:find [] + :in ['$ '[?xx ...]] + :where ['[?e :plaid-item/client ?xx]]} + :args [db valid-clients]} (:sort args) (add-sorter-fields {"external-id" ['[?e :plaid-item/external-id ?sort-external-id]] "status" ['[?e :plaid-item/status ?sort-status]]} args) - (:clients args) - (merge-query {:query {:in ['[?xx ...]] - :where ['[?e :plaid-item/client ?xx]]} - :args [ (set (map :db/id (:clients args)))]}) - (:client-id args) (merge-query {:query {:in '[?client-id] :where ['[?e :plaid-item/client ?client-id]]} @@ -142,7 +143,7 @@ :nav (com/company-aside-nav) :id-fn :db/id :fetch-page (fn [user args] - (get-page (assoc args :id user))) + (get-page (assoc args :id user :clients (:clients (:request args))))) :breadcrumbs [[:a {:href (bidi/path-for ssr-routes/only-routes :company)} "My Company"] diff --git a/src/clj/auto_ap/ssr/grid_page_helper.clj b/src/clj/auto_ap/ssr/grid_page_helper.clj index fddf6b99..4f3068d8 100644 --- a/src/clj/auto_ap/ssr/grid_page_helper.clj +++ b/src/clj/auto_ap/ssr/grid_page_helper.clj @@ -181,6 +181,7 @@ request (com/page {:nav (:nav grid-spec) :client-selection (:client-selection (:session request)) + :clients (:clients request) :client (:client request) :identity (:identity request)} (apply com/breadcrumbs {} (:breadcrumbs grid-spec))