Skip to content

Commit 0d52f0a

Browse files
author
awb99
committed
cleanup, user login persistence
1 parent 97988d0 commit 0d52f0a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+250
-447
lines changed

demo/deps.edn

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"target/webly"]
44

55
:deps {org.clojure/clojure {:mvn/version "1.11.3"}
6-
org.pinkgorilla/webly {:mvn/version "0.7.693"}
6+
org.pinkgorilla/webly {:mvn/version "0.8.707"}
77
org.pinkgorilla/ui-tailwind {:mvn/version "0.1.8"}
88
org.pinkgorilla/oauth2 {:local/root "../" :deps/manifest :deps}
99
nrepl/nrepl {:mvn/version "1.2.0"}}
@@ -13,7 +13,7 @@
1313
:profile "npm-install"}}
1414

1515
:npm-install {:exec-args {:profile "npm-install"}}
16-
:compile {:exec-args {:profile "compile2"}}
16+
:compile {:exec-args {:profile "compile"}}
1717
:release {:exec-args {:profile "release"}}
1818
:release-adv {:exec-args {:profile "release-adv"}}
1919
:static {:exec-args {:profile "static"}}

demo/resources/demo-services.edn

-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
:oauth2 {:start (token.oauth2.service/start-oauth2-service
3535
{:clj (clip/ref :clj-service)
3636
:providers (:oauth2 (:token (deref (clip/ref :config))))
37-
;:providers {:google {:client-id "" :client-secret ""}}
3837
:store-path ".webly/tokenstore"
3938
:store-role nil ; #{}
4039
})}

demo/resources/dev-services.edn

-31
This file was deleted.

demo/resources/test-services.edn

-43
This file was deleted.

demo/src/demo/page/oauth2.cljs

+2-6
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,8 @@
2323

2424
(defn user-details []
2525
(fn []
26-
(let [{:keys [user token provider] :as edn} @user-a]
27-
[block2 "user details:"
28-
[:p "edn: " (pr-str edn)]
29-
[:p "user: " user]
30-
[:p "provider: " provider]
31-
[:p "token: " token]])))
26+
[block2 "user details (for debugging): "
27+
[:p (pr-str @user-a)]]))
3228

3329
(def provider-scopes
3430
{:github [;https://docs.github.com/en/developers/apps/scopes-for-oauth-apps

demo/src/demo/repl/identity/login.clj

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
(ns repl.identity.login
2+
(:require
3+
[modular.system]
4+
[token.identity.local :refer [get-token verify-token]]))
5+
6+
7+
(def this (modular.system/system :oauth2))
8+
9+
(get-token this "bongo" "11111")
10+
(get-token this "demo" "11111")
11+
(get-token this "demo" "1234")
12+
13+
(verify-token this "eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiZGVtbyJ9.mWO7pjUFhFpEDeQT_3OjM1YCZ1TN8LNZiA_3xF-NkBI")
14+
15+
(verify-token this "eyJhbGciOiJIUzI1NiJ9.eyJ1c2xyIjoiZGVtbyJ9.mWO7pjUFhFpEDeQT_3OjM1YCZ1TN8LNZiA_3xF-NkBI")

deps.edn

+3-7
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
;ring-oauth2/ring-oauth2 {:mvn/version "0.1.5"}
2626
; clj-oauth/clj-oauth {:mvn/version "1.5.2"}; copied over from REST
2727
; pink-gorilla dependencies
28-
org.pinkgorilla/modular {:mvn/version "0.2.56"} ; for edn saving (with time formats encoding added)
29-
org.pinkgorilla/clj-service {:mvn/version "0.3.20"} ; brings permission + websocket
28+
org.pinkgorilla/modular {:mvn/version "0.2.61"} ; for edn saving (with time formats encoding added)
29+
org.pinkgorilla/clj-service {:mvn/version "0.4.21"} ; brings permission + websocket
3030
}
3131

3232
:aliases
@@ -39,13 +39,9 @@
3939
; github ci
4040
:build {:deps {io.github.clojure/tools.build {:git/tag "v0.6.1" :git/sha "515b334"}
4141
io.github.slipset/deps-deploy {:git/sha "b4359c5d67ca002d9ed0c4b41b710d7e5a82e3bf"}
42-
io.github.seancorfield/build-clj {:git/tag "v0.5.4" :git/sha "bc9c0cc"}
43-
;rewrite-clj/rewrite-clj {:mvn/version "1.0.699-alpha"}
44-
babashka/fs {:mvn/version "0.0.5"}}
42+
io.github.seancorfield/build-clj {:git/tag "v0.5.4" :git/sha "bc9c0cc"}}
4543
:ns-default build}
4644

47-
48-
4945
;
5046
}}
5147

resources/ext/oauth2.edn

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
:lazy false
44
:cljs-namespace [token.oauth2.store.ui
55
token.identity.user
6-
token.identity.ui
7-
]
6+
token.identity.ui]
87
:cljs-ns-bindings {; make sure the namespaces in sci and cljs are identical
98
token.oauth2.store.ui {'provider-status-grid token.oauth2.store.ui/provider-status-grid}
109
token.identity.user {'get-user token.identity.user/get-user

src/token/identity/dialog.cljs

+12-16
Original file line numberDiff line numberDiff line change
@@ -30,29 +30,27 @@
3030
(let [scope (get-identity-scope provider)
3131
r-p (oauth2/get-auth-token {:provider provider
3232
:scope scope
33-
;:width
34-
;:height
35-
})]
33+
:width 500
34+
:height 800
35+
:title (str "login via " provider)})]
3636
(-> r-p
3737
(p/then (fn [token]
3838
(println "login oauth2 token success! token: " token)
3939
(show-notification :info [:span.bg-blue-300.inline "logged in successfully"] 1000)
4040
(let [user-p (oidc/login provider token)]
41-
(-> user-p
42-
(p/then (fn [login-result]
43-
(println "oauth2 login success: " login-result)))
44-
(p/catch (fn [login-err]
45-
(println "oauth2 login error: " login-err))))
46-
;(user/set-user! usermap)
47-
)
48-
(dialog-close)))
41+
(-> user-p
42+
(p/then (fn [usermap]
43+
(println "oauth2 login success: " usermap)
44+
(user/set-user! usermap)
45+
(dialog-close)))
46+
(p/catch (fn [login-err]
47+
(println "oauth2 login error: " login-err)
48+
(dialog-close)))))))
4949
(p/catch (fn [err]
5050
(println "login local error: " err)
5151
(show-notification :error [:span.bg-red-300.inline "login error!"] 1000)
5252
(dialog-close))))))
5353

54-
55-
5654
(defn- login-ui []
5755
(let [username (r/atom "")
5856
password (r/atom "")
@@ -96,11 +94,9 @@
9694

9795
(defn show-login-dialog []
9896
(dialog-show
99-
[:div [login-ui]]
97+
[login-ui]
10098
:medium))
10199

102-
103-
104100
#_(rf/reg-event-fx
105101
:oauth2/login-oauth-success
106102
(fn [{:keys [db]} [_ provider token]]

src/token/identity/local.clj

+20-26
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
[clj-service.executor :refer [*user* *session*]]
1111
[clj-service.core :refer [expose-functions]]))
1212

13-
1413
(defn start-local-identity [{:keys [permission clj secret] :as this}]
1514
(info "starting local-identity service..")
1615
(assert (and secret (string? secret)) "local-identity service needs :secret (a string)")
@@ -30,11 +29,8 @@
3029
(-> (hash/blake2b-128 pwd)
3130
(codecs/bytes->hex)))
3231

33-
(defn create-claim [{:keys [secret] :as this} user-id]
34-
(let [claim {:type :local
35-
:provider :local
36-
:user user-id}
37-
token (jwt/sign claim secret)]
32+
(defn create-claim [{:keys [secret] :as this} claim]
33+
(let [token (jwt/sign claim secret)]
3834
(assoc claim :token token)))
3935

4036
(defn get-token [{:keys [permission] :as this} user-name user-password]
@@ -53,7 +49,11 @@
5349
:error-message (str "Bad password for [" user-name "].")}
5450
; succes
5551
:else
56-
(create-claim this (:id user)))))
52+
(create-claim this {:type :local
53+
:provider :local
54+
:user (:id user)
55+
:roles (:roles user)
56+
:email (:email user)}))))
5757

5858
(defn verify-token [{:keys [secret] :as this} token]
5959
(println "verifying token: " token)
@@ -66,9 +66,9 @@
6666

6767
(defn login
6868
[{:keys [permission secret] :as this} token]
69-
(println "login/local: token: " token " session: " *session*)
69+
(info "login/local: token: " token " session: " *session*)
7070
(let [{:keys [user error] :as r} (verify-token this token)]
71-
(println "login/local: result: " r)
71+
(info "login/local: result: " r)
7272
(when user
7373
(set-user! permission *session* user))
7474
r))
@@ -79,32 +79,26 @@
7979
(pwd-hash "7890")
8080
(pwd-hash "")
8181

82-
(get-token "bongo" "11111")
83-
(get-token "demo" "11111")
84-
(get-token "demo" "1234")
85-
86-
(verify-token "eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiZGVtbyJ9.mWO7pjUFhFpEDeQT_3OjM1YCZ1TN8LNZiA_3xF-NkBI")
87-
88-
(verify-token "eyJhbGciOiJIUzI1NiJ9.eyJ1c2xyIjoiZGVtbyJ9.mWO7pjUFhFpEDeQT_3OjM1YCZ1TN8LNZiA_3xF-NkBI")
89-
90-
(clj-jwt/str->jwt "eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiZGVtbyJ9.mWO7pjUFhFpEDeQT_3OjM1YCZ1TN8LNZiA_3xF-NkBI")
82+
; (clj-jwt/str->jwt "eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiZGVtbyJ9.mWO7pjUFhFpEDeQT_3OjM1YCZ1TN8LNZiA_3xF-NkBI")
9183

9284
; jwks_uri
9385
; https://accounts.google.com/.well-known/openid-configuration
9486

95-
(clj-jwt/unsign
96-
"https://www.googleapis.com/oauth2/v3/certs"
97-
87+
; (clj-jwt/unsign
88+
; "https://www.googleapis.com/oauth2/v3/certs"
9889
;id-token
99-
"eyJhbGciOiJSUzI1NiIsImtpZCI6ImQwMWMxYWJlMjQ5MjY5ZjcyZWY3Y2EyNjEzYTg2YzlmMDVlNTk1NjciLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiI4Nzc3MTk3NDczLWQ4cWp1MWsyZTJvMWhrbGZvdWh0MXYwbTM2aW1nYnJ2LmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiYXVkIjoiODc3NzE5NzQ3My1kOHFqdTFrMmUybzFoa2xmb3VodDF2MG0zNmltZ2Jydi5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNzIzMjc5NzY1NjI4MDM5MDg2MSIsImVtYWlsIjoiaG9lcnRsZWhuZXJAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsImF0X2hhc2giOiJsOGltUkRtUktfNmdGS0RqNmZWWVlRIiwibm9uY2UiOiIwLjMyMzAxNDQ1MTgzNDgwODgiLCJuYW1lIjoiRmxvcmlhbiBIb2VydGxlaG5lciIsInBpY3R1cmUiOiJodHRwczovL2xoMy5nb29nbGV1c2VyY29udGVudC5jb20vYS9BQVRYQUp4RlRUSGNLZDVGNGVZU2JOcUNUXzZzT2pzdm9YZEVuU29ZTDJDVWEzND1zOTYtYyIsImdpdmVuX25hbWUiOiJGbG9yaWFuIiwiZmFtaWx5X25hbWUiOiJIb2VydGxlaG5lciIsImxvY2FsZSI6ImVuIiwiaWF0IjoxNjQxNTY0OTk0LCJleHAiOjE2NDE1Njg1OTR9.r_yRMMXXyn75-wSucS3OaLbmBA4viX-Pr9_WVxcbbOFuqDAInXYTLHGr9Z0h1hg_IvY_iTM4HSpHUUNv2x82igz4BI7J8q2ZwI4EwTP16i5K5qMAaQ8op4Pk7YrIpFiuH6Ki7zn3eN-Rx1WlORDiPkyYgCQjDr5XSM94EpygiEk2cTFNP0NK0T7XF80CiliWDqkDTuE3sVPWBLab4x0FVfO5M0dLbL70V0Ede2Unb9WbO566xmZv3hqpER0sVHYc1DcNDRetcIVu9RlCccBE18xqTL8tXnsfGWoCO-POilY-1iPEwCj_SLW8u6Rj0ehYHTK96_hHOnBpxuyL8KPGzg"
90+
; "eyJhbGciOiJSUzI1NiIsImtpZCI6ImQwMWMxYWJlMjQ5MjY5ZjcyZWY3Y2EyNjEzYTg2YzlmMDVlNTk1NjciLCJ0eXAiOiJKV1QifQ.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJhenAiOiI4Nzc3MTk3NDczLWQ4cWp1MWsyZTJvMWhrbGZvdWh0MXYwbTM2aW1nYnJ2LmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIiwiYXVkIjoiODc3NzE5NzQ3My1kOHFqdTFrMmUybzFoa2xmb3VodDF2MG0zNmltZ2Jydi5hcHBzLmdvb2dsZXVzZXJjb250ZW50LmNvbSIsInN1YiI6IjExNzIzMjc5NzY1NjI4MDM5MDg2MSIsImVtYWlsIjoiaG9lcnRsZWhuZXJAZ21haWwuY29tIiwiZW1haWxfdmVyaWZpZWQiOnRydWUsImF0X2hhc2giOiJsOGltUkRtUktfNmdGS0RqNmZWWVlRIiwibm9uY2UiOiIwLjMyMzAxNDQ1MTgzNDgwODgiLCJuYW1lIjoiRmxvcmlhbiBIb2VydGxlaG5lciIsInBpY3R1cmUiOiJodHRwczovL2xoMy5nb29nbGV1c2VyY29udGVudC5jb20vYS9BQVRYQUp4RlRUSGNLZDVGNGVZU2JOcUNUXzZzT2pzdm9YZEVuU29ZTDJDVWEzND1zOTYtYyIsImdpdmVuX25hbWUiOiJGbG9yaWFuIiwiZmFtaWx5X25hbWUiOiJIb2VydGxlaG5lciIsImxvY2FsZSI6ImVuIiwiaWF0IjoxNjQxNTY0OTk0LCJleHAiOjE2NDE1Njg1OTR9.r_yRMMXXyn75-wSucS3OaLbmBA4viX-Pr9_WVxcbbOFuqDAInXYTLHGr9Z0h1hg_IvY_iTM4HSpHUUNv2x82igz4BI7J8q2ZwI4EwTP16i5K5qMAaQ8op4Pk7YrIpFiuH6Ki7zn3eN-Rx1WlORDiPkyYgCQjDr5XSM94EpygiEk2cTFNP0NK0T7XF80CiliWDqkDTuE3sVPWBLab4x0FVfO5M0dLbL70V0Ede2Unb9WbO566xmZv3hqpER0sVHYc1DcNDRetcIVu9RlCccBE18xqTL8tXnsfGWoCO-POilY-1iPEwCj_SLW8u6Rj0ehYHTK96_hHOnBpxuyL8KPGzg"
10091

10192
;"1//05HkiJ3mkxEaeCgYIARAAGAUSNwF-L9IrN6ze8eRTdHMXGkTfRe1tQyjUGHAYWyHwmauFf8ZuWPiWTkS4baZCExUWDqzqwzeqdQg"
10293
;"ya29.a0ARrdaM93BFZ3FkKkCEPn3acy9INGwmywONA8_TIFgD5YSfx83Tnn6ojGYbJR3rvEv2rZ2htF5SzaVRXvcv2z9pktxavf5Vp9544qr9UbbVTNFQGjZ-vgshyS43oBU15wzmAfki4TBLD2oJypE8PYOpvyWWJi"
103-
)
94+
; )
10495
; xero
10596
; https://identity.xero.com/.well-known/openid-configuration
106-
(clj-jwt/unsign
107-
"https://identity.xero.com/.well-known/openid-configuration/jwks"
108-
"eyJhbGciOiJSUzI1NiIsImtpZCI6IjFDQUY4RTY2NzcyRDZEQzAyOEQ2NzI2RkQwMjYxNTgxNTcwRUZDMTkiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJISy1PWm5jdGJjQW8xbkp2MENZVmdWY09fQmsifQ.eyJuYmYiOjE2NDE1NjcwOTksImV4cCI6MTY0MTU2ODg5OSwiaXNzIjoiaHR0cHM6Ly9pZGVudGl0eS54ZXJvLmNvbSIsImF1ZCI6Imh0dHBzOi8vaWRlbnRpdHkueGVyby5jb20vcmVzb3VyY2VzIiwiY2xpZW50X2lkIjoiMUQ0RTUxQzMyNDA1NDUxQ0JCQTMyQzExMjkwOUE3QjgiLCJzdWIiOiJkODZhNTIyMThiODk1MDFiODE0ZmIyMDY1YjU5NzNlMSIsImF1dGhfdGltZSI6MTY0MTU2NjQ3OSwieGVyb191c2VyaWQiOiIzYzczNjBjMC02MTk1LTQ2MmQtYjkxMy03NmNlOWM2NmNiYjgiLCJnbG9iYWxfc2Vzc2lvbl9pZCI6IjZjYjZhZjRkNTQ4ZDQ3NDZhZTZjMTNjNWJjOThlOWFmIiwianRpIjoiZTM2Y2NkYzdlMjViOGVlMDFhM2U3YzBkNDAwZDk2OWIiLCJhdXRoZW50aWNhdGlvbl9ldmVudF9pZCI6IjA4ZTg2ZTdiLTZkMjctNDQxMS05MTFiLTY0YjJmMWQ1NzhjMCIsInNjb3BlIjpbImVtYWlsIiwicHJvZmlsZSIsIm9wZW5pZCIsImFjY291bnRpbmcucmVwb3J0cy5yZWFkIiwiYWNjb3VudGluZy5zZXR0aW5ncyIsImFjY291bnRpbmcuYXR0YWNobWVudHMiLCJhY2NvdW50aW5nLnRyYW5zYWN0aW9ucyIsImFjY291bnRpbmcuam91cm5hbHMucmVhZCIsImFjY291bnRpbmcudHJhbnNhY3Rpb25zLnJlYWQiLCJhY2NvdW50aW5nLmNvbnRhY3RzIiwib2ZmbGluZV9hY2Nlc3MiXX0.t9c33xsXXqAfxC8JOyTRPG8b-QrLzqkxIItenXyul3kaSulzue281jed1wFyIpBefDq_xNUfFt4SfrMMyplOxThjQMyYktweyftijfMfnHwa4ZlGJaArdNOFNNzm2XOhdlyjFsVpWrAsMdhb8U9LyZjtagePE90VWyF47N3733tsDj9IBMKOUTg0HVEzyHqR0b-yRXE7KraM9KB3A_-CmuKBjT9JfExfFD8K17vS5T94cHW36EAy1UwWS2NZcFai_nh838Yi4sT1x7HCC3rOJlH8-S-GdmgPXpY5enrJ3nvwhca9bSXQKrnxktubDZeKVV3M1Mfhp5Gr-44Jkzu5Ww"))
97+
; (clj-jwt/unsign
98+
; "https://identity.xero.com/.well-known/openid-configuration/jwks"
99+
;"eyJhbGciOiJSUzI1NiIsImtpZCI6IjFDQUY4RTY2NzcyRDZEQzAyOEQ2NzI2RkQwMjYxNTgxNTcwRUZDMTkiLCJ0eXAiOiJKV1QiLCJ4NXQiOiJISy1PWm5jdGJjQW8xbkp2MENZVmdWY09fQmsifQ.eyJuYmYiOjE2NDE1NjcwOTksImV4cCI6MTY0MTU2ODg5OSwiaXNzIjoiaHR0cHM6Ly9pZGVudGl0eS54ZXJvLmNvbSIsImF1ZCI6Imh0dHBzOi8vaWRlbnRpdHkueGVyby5jb20vcmVzb3VyY2VzIiwiY2xpZW50X2lkIjoiMUQ0RTUxQzMyNDA1NDUxQ0JCQTMyQzExMjkwOUE3QjgiLCJzdWIiOiJkODZhNTIyMThiODk1MDFiODE0ZmIyMDY1YjU5NzNlMSIsImF1dGhfdGltZSI6MTY0MTU2NjQ3OSwieGVyb191c2VyaWQiOiIzYzczNjBjMC02MTk1LTQ2MmQtYjkxMy03NmNlOWM2NmNiYjgiLCJnbG9iYWxfc2Vzc2lvbl9pZCI6IjZjYjZhZjRkNTQ4ZDQ3NDZhZTZjMTNjNWJjOThlOWFmIiwianRpIjoiZTM2Y2NkYzdlMjViOGVlMDFhM2U3YzBkNDAwZDk2OWIiLCJhdXRoZW50aWNhdGlvbl9ldmVudF9pZCI6IjA4ZTg2ZTdiLTZkMjctNDQxMS05MTFiLTY0YjJmMWQ1NzhjMCIsInNjb3BlIjpbImVtYWlsIiwicHJvZmlsZSIsIm9wZW5pZCIsImFjY291bnRpbmcucmVwb3J0cy5yZWFkIiwiYWNjb3VudGluZy5zZXR0aW5ncyIsImFjY291bnRpbmcuYXR0YWNobWVudHMiLCJhY2NvdW50aW5nLnRyYW5zYWN0aW9ucyIsImFjY291bnRpbmcuam91cm5hbHMucmVhZCIsImFjY291bnRpbmcudHJhbnNhY3Rpb25zLnJlYWQiLCJhY2NvdW50aW5nLmNvbnRhY3RzIiwib2ZmbGluZV9hY2Nlc3MiXX0.t9c33xsXXqAfxC8JOyTRPG8b-QrLzqkxIItenXyul3kaSulzue281jed1wFyIpBefDq_xNUfFt4SfrMMyplOxThjQMyYktweyftijfMfnHwa4ZlGJaArdNOFNNzm2XOhdlyjFsVpWrAsMdhb8U9LyZjtagePE90VWyF47N3733tsDj9IBMKOUTg0HVEzyHqR0b-yRXE7KraM9KB3A_-CmuKBjT9JfExfFD8K17vS5T94cHW36EAy1UwWS2NZcFai_nh838Yi4sT1x7HCC3rOJlH8-S-GdmgPXpY5enrJ3nvwhca9bSXQKrnxktubDZeKVV3M1Mfhp5Gr-44Jkzu5Ww")
100+
101+
;
102+
)
109103

110104

src/token/identity/local.cljs

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,22 @@
11
(ns token.identity.local
2-
(:require
3-
[promesa.core :as p]
4-
[goldly.service.core :refer [clj]]))
2+
(:require
3+
[promesa.core :as p]
4+
[goldly.service.core :refer [clj]]))
55

6-
(defn get-token
6+
(defn get-token
77
"returns a promise with the token or an error"
88
[user password]
99
(println "local get-token user: " user "password: " password)
1010
(let [r-p (p/deferred)
1111
data-p (clj 'token.identity.local/get-token user password)]
1212
(-> data-p
1313
(p/then (fn [{:keys [error error-message] :as token}]
14-
(if error
14+
(if error
1515
(p/reject! r-p error-message)
1616
(p/resolve! r-p token))))
1717
(p/catch (fn [err]
1818
(println "get-token error: " err)
19-
(p/reject! r-p err)
20-
)))
19+
(p/reject! r-p err))))
2120
r-p))
2221

2322
(defn login

0 commit comments

Comments
 (0)