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:
parent
764bc2074c
commit
005f70ed19
4 changed files with 40 additions and 3 deletions
|
@ -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
|
||||
|
|
|
@ -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?)
|
||||
|
|
|
@ -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}]
|
||||
|
|
|
@ -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"}]))
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue