mirror of
https://github.com/penpot/penpot.git
synced 2026-09-24 12:56:15 +00:00
🐛 Fix register flow from workspace url (#11756)
* 🐛 Fix show validation errors below inputs instead of showing a toast * 🐛 Fix redirect to send email screen after a successful registration
This commit is contained in:
parent
de6fb9d13e
commit
58b1acbb66
@ -21,7 +21,6 @@
|
|||||||
[app.util.i18n :as i18n :refer [tr]]
|
[app.util.i18n :as i18n :refer [tr]]
|
||||||
[app.util.storage :as storage]
|
[app.util.storage :as storage]
|
||||||
[beicon.v2.core :as rx]
|
[beicon.v2.core :as rx]
|
||||||
[cuerdas.core :as str]
|
|
||||||
[rumext.v2 :as mf]))
|
[rumext.v2 :as mf]))
|
||||||
|
|
||||||
;; --- PAGE: Register
|
;; --- PAGE: Register
|
||||||
@ -81,42 +80,40 @@
|
|||||||
(mf/use-fn
|
(mf/use-fn
|
||||||
(fn [cause]
|
(fn [cause]
|
||||||
(reset! submitted? false)
|
(reset! submitted? false)
|
||||||
(let [{:keys [type code] :as edata} (ex-data cause)]
|
(let [{:keys [type code] :as edata} (ex-data cause)
|
||||||
|
|
||||||
|
set-field-error!
|
||||||
|
(fn [field message]
|
||||||
|
(swap! form assoc-in [:extra-errors field] message)
|
||||||
|
(swap! form assoc-in [:touched field] true))]
|
||||||
|
|
||||||
(condp = [type code]
|
(condp = [type code]
|
||||||
[:restriction :email-does-not-match-invitation]
|
[:restriction :email-does-not-match-invitation]
|
||||||
(st/emit! (ntf/error (tr "errors.email-does-not-match-invitation")))
|
(set-field-error! :email {:message (tr "errors.email-does-not-match-invitation")})
|
||||||
|
|
||||||
[:restriction :registration-disabled]
|
[:restriction :registration-disabled]
|
||||||
(st/emit! (ntf/error (tr "errors.registration-disabled")))
|
(set-field-error! :email {:message (tr "errors.registration-disabled")})
|
||||||
|
|
||||||
[:restriction :email-domain-is-not-allowed]
|
[:restriction :email-domain-is-not-allowed]
|
||||||
(st/emit! (ntf/error (tr "errors.email-domain-not-allowed")))
|
(set-field-error! :email {:message (tr "errors.email-domain-not-allowed")})
|
||||||
|
|
||||||
[:restriction :email-has-permanent-bounces]
|
[:restriction :email-has-permanent-bounces]
|
||||||
(st/emit! (ntf/error (tr "errors.email-has-permanent-bounces" (:email edata))))
|
(set-field-error! :email {:message (tr "errors.email-has-permanent-bounces" (:email edata))})
|
||||||
|
|
||||||
[:restriction :email-has-complaints]
|
[:restriction :email-has-complaints]
|
||||||
(st/emit! (ntf/error (tr "errors.email-has-permanent-bounces" (:email edata))))
|
(set-field-error! :email {:message (tr "errors.email-has-permanent-bounces" (:email edata))})
|
||||||
|
|
||||||
[:validation :email-already-exists]
|
[:validation :email-already-exists]
|
||||||
(st/emit! (ntf/error (tr "errors.email-already-exists")))
|
(set-field-error! :email {:message (tr "errors.email-already-exists")})
|
||||||
|
|
||||||
[:validation :email-as-password]
|
[:validation :email-as-password]
|
||||||
(st/emit! (ntf/error (tr "errors.email-as-password")))
|
(set-field-error! :password {:message (tr "errors.email-as-password")})
|
||||||
|
|
||||||
[:validation :weak-password]
|
[:validation :weak-password]
|
||||||
(let [details (:details edata)
|
(let [options (when (seq (:details edata))
|
||||||
items (when (seq details)
|
(mapv tr (:details edata)))]
|
||||||
(->> details
|
(set-field-error! :password {:message (tr "errors.weak-password")
|
||||||
(map #(str "<li>" (tr %) "</li>"))
|
:options options}))
|
||||||
(str/join "")))
|
|
||||||
detail (when items
|
|
||||||
(str "<ul>" items "</ul>"))]
|
|
||||||
(st/emit! (ntf/show {:content (tr "errors.weak-password")
|
|
||||||
:detail detail
|
|
||||||
:is-html true
|
|
||||||
:type :toast
|
|
||||||
:level :error})))
|
|
||||||
|
|
||||||
(do
|
(do
|
||||||
(when-let [explain (get edata :explain)]
|
(when-let [explain (get edata :explain)]
|
||||||
@ -128,7 +125,7 @@
|
|||||||
(mf/deps on-success-callback)
|
(mf/deps on-success-callback)
|
||||||
(fn [params]
|
(fn [params]
|
||||||
(if (fn? on-success-callback)
|
(if (fn? on-success-callback)
|
||||||
(on-success-callback (:email params))
|
(on-success-callback params)
|
||||||
(cond
|
(cond
|
||||||
(some? (:invitation-token params))
|
(some? (:invitation-token params))
|
||||||
(let [token (:invitation-token params)]
|
(let [token (:invitation-token params)]
|
||||||
|
|||||||
@ -125,13 +125,22 @@
|
|||||||
success-register
|
success-register
|
||||||
(mf/use-fn
|
(mf/use-fn
|
||||||
(fn [data]
|
(fn [data]
|
||||||
(reset! register-token (:token data))
|
(cond
|
||||||
(reset! current-section :register-validate)))
|
(:invitation-token data)
|
||||||
|
(st/emit! (rt/nav :auth-verify-token {:token (:invitation-token data)}))
|
||||||
|
|
||||||
|
(:is-active data)
|
||||||
|
(st/emit! (rt/reload true))
|
||||||
|
|
||||||
|
:else
|
||||||
|
(do
|
||||||
|
(reset! user-email (:email data))
|
||||||
|
(reset! current-section :register-email-sent)))))
|
||||||
|
|
||||||
register-email-sent
|
register-email-sent
|
||||||
(mf/use-fn
|
(mf/use-fn
|
||||||
(fn [email]
|
(fn [data]
|
||||||
(reset! user-email email)
|
(reset! user-email (if (string? data) data (:email data)))
|
||||||
(reset! current-section :register-email-sent)))
|
(reset! current-section :register-email-sent)))
|
||||||
|
|
||||||
recovery-email-sent
|
recovery-email-sent
|
||||||
|
|||||||
@ -9,6 +9,7 @@
|
|||||||
(:require
|
(:require
|
||||||
[app.common.logging :as log]
|
[app.common.logging :as log]
|
||||||
[app.main.data.modal :as modal]
|
[app.main.data.modal :as modal]
|
||||||
|
[app.main.router :as rt]
|
||||||
[app.main.store :as st]
|
[app.main.store :as st]
|
||||||
[app.main.ui.auth.login :refer [login-dialog*]]
|
[app.main.ui.auth.login :refer [login-dialog*]]
|
||||||
[app.main.ui.auth.recovery-request :refer [recovery-request-page*]]
|
[app.main.ui.auth.recovery-request :refer [recovery-request-page*]]
|
||||||
@ -68,8 +69,17 @@
|
|||||||
|
|
||||||
success-register
|
success-register
|
||||||
(fn [data]
|
(fn [data]
|
||||||
(reset! register-token (:token data))
|
(cond
|
||||||
(set-current-section :register-validate))]
|
(:invitation-token data)
|
||||||
|
(st/emit! (rt/nav :auth-verify-token {:token (:invitation-token data)}))
|
||||||
|
|
||||||
|
(:is-active data)
|
||||||
|
(st/emit! (modal/hide))
|
||||||
|
|
||||||
|
:else
|
||||||
|
(do
|
||||||
|
(reset! user-email (:email data))
|
||||||
|
(set-current-section :email-sent))))]
|
||||||
|
|
||||||
[:div {:class (stl/css :modal-overlay)}
|
[:div {:class (stl/css :modal-overlay)}
|
||||||
[:div {:class (stl/css :modal-container)}
|
[:div {:class (stl/css :modal-container)}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user