Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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'))
Exemplo n.º 3
0
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'))
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
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)