From de233cdbf5a042455efcf6a571d65bda92f748f1 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Tue, 15 Mar 2016 20:54:04 +0200 Subject: [PATCH] Add backend integration for auth (login page). --- src/uxbox/data/auth.cljs | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/src/uxbox/data/auth.cljs b/src/uxbox/data/auth.cljs index 9e0b47ad1..ea31fbbe3 100644 --- a/src/uxbox/data/auth.cljs +++ b/src/uxbox/data/auth.cljs @@ -13,12 +13,12 @@ [uxbox.router :as r] [uxbox.state :as st] [uxbox.schema :as sc] - [uxbox.util.time :as time])) + [uxbox.locales :refer (tr)] + [uxbox.ui.messages :as uum])) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Schemas -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Schema +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (def ^:const +login-schema+ {:username [sc/required sc/string] @@ -30,33 +30,24 @@ :photo [sc/required sc/string] :fullname [sc/required sc/string]}) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Events -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -(defn- login-success - [{:keys [full photo username email] :as params}] - (sc/validate! +user-schema+ params) - (reify - rs/UpdateEvent - (-apply-update [_ state] - (assoc state :auth params)) - - rs/EffectEvent - (-apply-effect [_ state] - (r/go :dashboard/projects)))) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defn login [{:keys [username password] :as params}] (sc/validate! +login-schema+ params) (letfn [(on-error [err] - (rx/of (login-success {}))) + (uum/error (tr "errors.auth")) + (rx/empty)) (on-success [value] - (rx/of (login-success value)))] + (rx/of (rs/swap #(assoc % :auth value)) + (r/navigate :dashboard/projects)))] (reify rs/WatchEvent (-apply-watch [_ state] - (->> (rp/do :login params) + (->> (rp/do :login (merge params {:scope "webapp"})) + (rx/from-promise) (rx/flat-map on-success) (rx/catch on-error))))))