def signup(): form = SignupForm() if form.validate_on_submit(): u = User() form.populate_obj(u) u.password = User.encrypt_password(request.form.get('password', None)) u.save() if login_user(u): flash(_('Awesome, thanks for signing up!'), 'success') return redirect(url_for('user.welcome')) return render_template('user/signup.jinja2', form=form)
def update_credentials(): form = UpdateCredentials(current_user, uid=current_user.id) if form.validate_on_submit(): # We cannot form.populate_obj() because the password is optional. new_password = request.form.get('password', '') current_user.email = request.form.get('email') if new_password: current_user.password = User.encrypt_password(new_password) current_user.save() flash(_('Your sign in settings have been updated.'), 'success') return redirect(url_for('user.settings')) return render_template('user/update_credentials.jinja2', form=form)
def password_reset(): form = PasswordResetForm(reset_token=request.args.get('reset_token')) if form.validate_on_submit(): u = User.deserialize_token(request.form.get('reset_token')) if u is None: flash(_('Your reset token has expired or was tampered with.'), 'error') return redirect(url_for('user.begin_password_reset')) form.populate_obj(u) u.password = User.encrypt_password(request.form.get('password', None)) u.save() if login_user(u): flash(_('Your password has been reset.'), 'success') return redirect(url_for('user.settings')) return render_template('user/password_reset.jinja2', form=form)
def users(): """ Create random users. """ random_emails = [] data = [] # Ensure we get about 50 unique random emails, +1 due to the seeded email. for i in range(0, 49): random_emails.append(fake.email()) random_emails.append(SEED_ADMIN_EMAIL) random_emails = list(set(random_emails)) while True: if len(random_emails) == 0: break email = random_emails.pop() params = { 'role': random.choice(User.ROLE.keys()), 'email': email, 'password': User.encrypt_password('password'), 'name': fake.name(), 'locale': random.choice(ACCEPT_LANGUAGES) } # Ensure the seeded admin is always an admin. if email == SEED_ADMIN_EMAIL: params['role'] = 'admin' params['locale'] = 'en' data.append(params) return _bulk_insert(User, data, 'users')