From 005f70ed19863edabf3941736654eed281c25925 Mon Sep 17 00:00:00 2001 From: Vitaly Kornilov Date: Fri, 24 Jul 2020 18:19:18 +0300 Subject: [PATCH] :tada: login with LDAP form and event --- frontend/src/uxbox/main/data/auth.cljs | 24 +++++++++++++++++++ frontend/src/uxbox/main/repo.cljs | 6 +++++ frontend/src/uxbox/main/ui/auth/login.cljs | 10 ++++++-- .../src/uxbox/main/ui/components/forms.cljs | 3 ++- 4 files changed, 40 insertions(+), 3 deletions(-) diff --git a/frontend/src/uxbox/main/data/auth.cljs b/frontend/src/uxbox/main/data/auth.cljs index 3047a3d81..186c130e7 100644 --- a/frontend/src/uxbox/main/data/auth.cljs +++ b/frontend/src/uxbox/main/data/auth.cljs @@ -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 diff --git a/frontend/src/uxbox/main/repo.cljs b/frontend/src/uxbox/main/repo.cljs index 5574fb4fa..927da0d78 100644 --- a/frontend/src/uxbox/main/repo.cljs +++ b/frontend/src/uxbox/main/repo.cljs @@ -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?) diff --git a/frontend/src/uxbox/main/ui/auth/login.cljs b/frontend/src/uxbox/main/ui/auth/login.cljs index 16f69ac1b..24ef2a38e 100644 --- a/frontend/src/uxbox/main/ui/auth/login.cljs +++ b/frontend/src/uxbox/main/ui/auth/login.cljs @@ -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}] diff --git a/frontend/src/uxbox/main/ui/components/forms.cljs b/frontend/src/uxbox/main/ui/components/forms.cljs index 81a0e43b5..e5341bf31 100644 --- a/frontend/src/uxbox/main/ui/components/forms.cljs +++ b/frontend/src/uxbox/main/ui/components/forms.cljs @@ -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"}]))