mirror of
https://github.com/penpot/penpot.git
synced 2025-05-09 18:26:37 +02: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)
|
(rx/of (du/profile-fetched profile)
|
||||||
(rt/nav' :dashboard-team {:team-id team-id}))))))
|
(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
|
;; --- Logout
|
||||||
|
|
||||||
(def clear-user-data
|
(def clear-user-data
|
||||||
|
|
|
@ -104,5 +104,11 @@
|
||||||
(->> (http/send! {:method :post :uri uri :body params})
|
(->> (http/send! {:method :post :uri uri :body params})
|
||||||
(rx/mapcat handle-response))))
|
(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 client-error? http/client-error?)
|
||||||
(def server-error? http/server-error?)
|
(def server-error? http/server-error?)
|
||||||
|
|
|
@ -43,6 +43,7 @@
|
||||||
(mf/defc login-form
|
(mf/defc login-form
|
||||||
[{:keys [locale] :as props}]
|
[{:keys [locale] :as props}]
|
||||||
(let [error? (mf/use-state false)
|
(let [error? (mf/use-state false)
|
||||||
|
submit-event (mf/use-var da/login)
|
||||||
|
|
||||||
on-error
|
on-error
|
||||||
(fn [form event]
|
(fn [form event]
|
||||||
|
@ -53,7 +54,7 @@
|
||||||
(reset! error? false)
|
(reset! error? false)
|
||||||
(let [params (with-meta (:clean-data form)
|
(let [params (with-meta (:clean-data form)
|
||||||
{:on-error on-error})]
|
{:on-error on-error})]
|
||||||
(st/emit! (da/login params))))]
|
(st/emit! (@submit-event params))))]
|
||||||
|
|
||||||
[:*
|
[:*
|
||||||
(when @error?
|
(when @error?
|
||||||
|
@ -78,7 +79,12 @@
|
||||||
:help-icon i/eye
|
:help-icon i/eye
|
||||||
:label (t locale "auth.password-label")}]
|
:label (t locale "auth.password-label")}]
|
||||||
[:& submit-button
|
[:& 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
|
(mf/defc login-page
|
||||||
[{:keys [locale] :as props}]
|
[{:keys [locale] :as props}]
|
||||||
|
|
|
@ -121,12 +121,13 @@
|
||||||
i/arrow-slide]]]))
|
i/arrow-slide]]]))
|
||||||
|
|
||||||
(mf/defc submit-button
|
(mf/defc submit-button
|
||||||
[{:keys [label form] :as props}]
|
[{:keys [label form on-click] :as props}]
|
||||||
(let [form (mf/use-ctx form-ctx)]
|
(let [form (mf/use-ctx form-ctx)]
|
||||||
[:input.btn-primary.btn-large
|
[:input.btn-primary.btn-large
|
||||||
{:name "submit"
|
{:name "submit"
|
||||||
:class (when-not (:valid form) "btn-disabled")
|
:class (when-not (:valid form) "btn-disabled")
|
||||||
:disabled (not (:valid form))
|
:disabled (not (:valid form))
|
||||||
|
:on-click on-click
|
||||||
:value label
|
:value label
|
||||||
:type "submit"}]))
|
:type "submit"}]))
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue