def recover_password(): form = RecoverPasswordForm(meta={'csrf_context': session}) if form.validate_on_submit(): login = form.login.data user = User.query.filter_by(login=login).first() email = user.email recovery_token = RecoveryToken(user=user) db.session.add(recovery_token) db.session.commit() # Build link app_url_parts = urlsplit(request.base_url) url_path = url_for('account.validate_password_token') url_query = f'user={login}&token={recovery_token.token}' recovery_link = urlunsplit( (app_url_parts.scheme, app_url_parts.netloc, url_path, url_query, '')) topic = 'Recover password' message = f'Żeby zresetować hasło przejdź pod ten link: {recovery_link}' send_email(email, topic, message) flash('Na adres email podany przy rejestracji został wysłany email z linkiem do resetu hasła', 'alert alert-success') return redirect(url_for('account.login')) return render_template('recover_password.html', form=form)
def recover_password(request): FORM_TITLE = _('Password Recovery') main = get_renderer(BASE_TEMPLATE).implementation() localizer = get_localizer(request) recovery_form = RecoverPasswordForm.get_form(localizer) recovery_key = request.params.get('key', None) if recovery_key is None: raise exceptions.NotFound() if request.method == 'POST': controls = request.POST.items() try: appstruct = recovery_form.validate(controls) except deform.ValidationFailure, e: return {'content':e.render(), 'main':main, 'form_stuff':{'form_title':FORM_TITLE}, 'user':get_logged_user(request), } del(appstruct['__LOCALE__']) try: user = AccountRecoveryManager.redefine_password(appstruct['recovery_key'], appstruct['new_password'], request) request.session.flash(_('Password successfully redefined.')) except InvalidActivationKey: raise exceptions.NotFound() except ActivationError: request.session.flash(_('Problems occured when trying to redefine the user password. Please try again.')) return HTTPFound(location=request.route_url('users.login'))
def recover_password(request): FORM_TITLE = _('Password Recovery') main = get_renderer(BASE_TEMPLATE).implementation() localizer = get_localizer(request) recovery_form = RecoverPasswordForm.get_form(localizer) recovery_key = request.params.get('key', None) if recovery_key is None: raise exceptions.NotFound() if request.method == 'POST': controls = request.POST.items() try: appstruct = recovery_form.validate(controls) except deform.ValidationFailure, e: return {'content':e.render(), 'main':main, 'general_stuff':{'form_title':FORM_TITLE}, 'user':get_logged_user(request), } del(appstruct['__LOCALE__']) try: user = AccountRecoveryManager.redefine_password(appstruct['recovery_key'], appstruct['new_password'], request) request.session.flash(_('Password successfully redefined.')) except InvalidActivationKey: raise exceptions.NotFound() except ActivationError: request.session.flash(_('Problems occured when trying to redefine the user password. Please try again.')) return HTTPFound(location=request.route_path('users.login'))
def reset_password(): form = RecoverPasswordForm() if form.validate_on_submit(): user = User.query.filter_by(email=form.email.data).first() if user: flash('Please see your email for instructions on ' 'how to access your account', 'success') user.activation_key = str(uuid4()) db.session.add(user) db.session.commit() return render_template('frontend/reset_password.html', form=form) else: flash('Sorry, no user found for that email address', 'error') return render_template('frontend/reset_password.html', form=form)
def reset_password(): form = RecoverPasswordForm() if form.validate_on_submit(): user = User.query.filter_by(email=form.email.data).first() if user: flash( 'Please see your email for instructions on ' 'how to access your account', 'success') user.activation_key = str(uuid4()) db.session.add(user) db.session.commit() return render_template('frontend/reset_password.html', form=form) else: flash('Sorry, no user found for that email address', 'error') return render_template('frontend/reset_password.html', form=form)