diff --git a/src/clj/auto_ap/datomic/users.clj b/src/clj/auto_ap/datomic/users.clj index 091c1b88..c7b99b83 100644 --- a/src/clj/auto_ap/datomic/users.clj +++ b/src/clj/auto_ap/datomic/users.clj @@ -26,12 +26,30 @@ (map #(update % :user/role :db/ident)) first))) +(defn find-or-insert! [{:keys [:user/provider :user/provider-id] :as new-user}] + (let [user (some-> {:query [:find '(pull ?e [* + {:user/clients [*]} + {:user/role [:db/ident]}]) + :in '$ '?provider '?provider-id + :where '[?e :user/provider ?provider] + '[?e :user/provider-id ?provider-id]] + :args [(d/db (d/connect uri)) provider provider-id]} + (d/query) + first + first + (update :user/role :db/ident))] + (if user + user + (let [new-user-trans @(d/transact (d/connect uri) [(assoc new-user :db/id "user")])] + (println new-user-trans) + (get-by-id (-> new-user-trans :tempids (get "user"))))))) + (defn raw-graphql [args] (let [query (cond-> {:query {:find ['(pull ?e [* {:user/clients [*]} {:user/role [:db/ident]}])] :in ['$] - :where ['[?e :user/original-id]]} + :where ['[?e :user/role]]} :args [(d/db (d/connect uri))]})] (->> (d/query query) diff --git a/src/clj/auto_ap/routes/auth.clj b/src/clj/auto_ap/routes/auth.clj index ae673347..0efb51f2 100644 --- a/src/clj/auto_ap/routes/auth.clj +++ b/src/clj/auto_ap/routes/auth.clj @@ -1,5 +1,5 @@ (ns auto-ap.routes.auth - (:require [auto-ap.db.users :as users] + (:require [auto-ap.datomic.users :as users] [buddy.sign.jwt :as jwt] [clj-http.client :as http] [clj-time.core :as time] @@ -27,17 +27,19 @@ {:headers {"Authorization" (str "Bearer " token)} :as :json}) :body (doto println)) - user (users/find-or-insert! {:provider "google" - :provider-id (:id profile) - :role "none" - :name (:name profile)})] + user (users/find-or-insert! {:user/provider "google" + :user/provider-id (:id profile) + :user/role :user-role/none + :user/name (:name profile)}) + ] + (println "authenticated as user" user) (if (and token user) {:status 301 :headers {"Location" (str "/?jwt=" (jwt/sign {:user "test" :exp (time/plus (time/now) (time/days 7)) - :companies (:companies user) - :role (:role user) + :companies (:user/clients user) + :role (name (:user/role user)) :name (:name profile)} (:jwt-secret env) {:alg :hs512}))}}