diff --git a/mo/web/acct.py b/mo/web/acct.py
index d1497402b84a89a497b8f963d7b6c99c1f95b340..e54311a2d0ef6bc6440d8685f1fa3182a46ebfb1 100644
--- a/mo/web/acct.py
+++ b/mo/web/acct.py
@@ -498,31 +498,23 @@ class Reg2:
         email = mo.users.normalize_email(rr.email)      # Pro jistotu
         sess = db.get_session()
 
-        if db.get_session().query(db.User).with_for_update().filter_by(email=email).one_or_none():
+        try:
+            user, is_new, _ = mo.users.find_or_create_user(email, first_name, last_name, is_org=False, reason='register')
+        except mo.CheckError as e:
+            app.logger.info(f'Reg2: Založení účtu {email} selhalo: {e}')
+            self.status = RegStatus.already_exists
+            return False
+
+        if not is_new:
             # Účet mohl začít existovat mezi 1. a 2. krokem registrace
             app.logger.info(f'Reg2: Účet s e-mailem {email} začal během registrace existovat')
             self.status = RegStatus.already_exists
             return False
 
-        user = db.User(
-            email=email,
-            first_name=first_name,
-            last_name=last_name,
-        )
         mo.users.set_password(user, passwd)
-
+        mo.users.login(user)
         rr.used_at = mo.now
-        sess.add(user)
-        sess.flush()
 
-        app.logger.info(f'Reg2: Založen uživatel user=#{user.user_id} email=<{user.email}>')
-        mo.util.log(
-            type=db.LogType.user,
-            what=user.user_id,
-            details={'action': 'register', 'new': db.row2dict(user)},
-        )
-
-        mo.users.login(user)
         sess.commit()
         self.user = user
         return True