Improve posible race condition handling on user registration.

This commit is contained in:
Andrey Antukh 2021-02-03 23:27:47 +01:00 committed by Hirunatan
parent 6e08c6bc35
commit 992a8e9aef

View file

@ -170,15 +170,24 @@
active? (if demo? true is-active) active? (if demo? true is-active)
props (db/tjson (or props {})) props (db/tjson (or props {}))
password (derive-password password)] password (derive-password password)]
(-> (db/insert! conn :profile (try
{:id id (-> (db/insert! conn :profile
:fullname fullname {:id id
:email (str/lower email) :fullname fullname
:password password :email (str/lower email)
:props props :password password
:is-active active? :props props
:is-demo demo?}) :is-active active?
(update :props db/decode-transit-pgobject)))) :is-demo demo?})
(update :props db/decode-transit-pgobject))
(catch org.postgresql.util.PSQLException e
(let [state (.getSQLState e)]
(if (not= state "23505")
(throw e)
(ex/raise :type :validation
:code :email-already-exists
:cause e)))))))
(defn- create-profile-relations (defn- create-profile-relations
[conn profile] [conn profile]