Skip to content
Snippets Groups Projects

Bezpečné transakce při zakládání uživatelů/účastníků/účastí

Merged Martin Mareš requested to merge mj/transakce into devel
1 file
+ 9
17
Compare changes
  • Side-by-side
  • Inline
+ 9
17
@@ -498,31 +498,23 @@ class Reg2:
@@ -498,31 +498,23 @@ class Reg2:
email = mo.users.normalize_email(rr.email) # Pro jistotu
email = mo.users.normalize_email(rr.email) # Pro jistotu
sess = db.get_session()
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
# Úč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')
app.logger.info(f'Reg2: Účet s e-mailem {email} začal během registrace existovat')
self.status = RegStatus.already_exists
self.status = RegStatus.already_exists
return False
return False
user = db.User(
email=email,
first_name=first_name,
last_name=last_name,
)
mo.users.set_password(user, passwd)
mo.users.set_password(user, passwd)
mo.users.login(user)
rr.used_at = mo.now
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()
sess.commit()
self.user = user
self.user = user
return True
return True
Loading