0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-03-13 00:01:51 -05:00

🎉 login with LDAP form and event

This commit is contained in:
Vitaly Kornilov 2020-07-24 18:19:18 +03:00 committed by Andrey Antukh
parent 764bc2074c
commit 005f70ed19
4 changed files with 40 additions and 3 deletions

View file

@ -78,6 +78,30 @@
(rx/of (du/profile-fetched profile)
(rt/nav' :dashboard-team {:team-id team-id}))))))
(defn login-with-ldap
[{:keys [email password] :as data}]
(us/verify ::login-params data)
(ptk/reify ::login-with-ldap
ptk/UpdateEvent
(update [_ state]
(merge state (dissoc initial-state :route :router)))
ptk/WatchEvent
(watch [this state s]
(let [{:keys [on-error on-success]
:or {on-error identity
on-success identity}} (meta data)
params {:email email
:password password
:scope "webapp"}]
(->> (rx/timer 100)
(rx/mapcat #(rp/mutation :login-with-ldap params))
(rx/tap on-success)
(rx/catch (fn [err]
(on-error err)
(rx/empty)))
(rx/map logged-in))))))
;; --- Logout
(def clear-user-data

View file

@ -104,5 +104,11 @@
(->> (http/send! {:method :post :uri uri :body params})
(rx/mapcat handle-response))))
(defmethod mutation :login-with-ldap
[id params]
(let [uri (str cfg/public-uri "/api/login-ldap")]
(->> (http/send! {:method :post :uri uri :body params})
(rx/mapcat handle-response))))
(def client-error? http/client-error?)
(def server-error? http/server-error?)

View file

@ -43,6 +43,7 @@
(mf/defc login-form
[{:keys [locale] :as props}]
(let [error? (mf/use-state false)
submit-event (mf/use-var da/login)
on-error
(fn [form event]
@ -53,7 +54,7 @@
(reset! error? false)
(let [params (with-meta (:clean-data form)
{:on-error on-error})]
(st/emit! (da/login params))))]
(st/emit! (@submit-event params))))]
[:*
(when @error?
@ -78,7 +79,12 @@
:help-icon i/eye
:label (t locale "auth.password-label")}]
[:& submit-button
{:label (t locale "auth.login-submit-label")}]]]))
{:label (t locale "auth.login-submit-label")
:on-click #(reset! submit-event da/login)}]
(when cfg/login-with-ldap
[:& submit-button
{:label (t locale "auth.login-with-ldap-submit-label")
:on-click #(reset! submit-event da/login-with-ldap)}])]]))
(mf/defc login-page
[{:keys [locale] :as props}]

View file

@ -121,12 +121,13 @@
i/arrow-slide]]]))
(mf/defc submit-button
[{:keys [label form] :as props}]
[{:keys [label form on-click] :as props}]
(let [form (mf/use-ctx form-ctx)]
[:input.btn-primary.btn-large
{:name "submit"
:class (when-not (:valid form) "btn-disabled")
:disabled (not (:valid form))
:on-click on-click
:value label
:type "submit"}]))