Exemplo n.º 1
0
def reset_password_with_token(token):
    form = forms.PasswordForm(request.form)
    try:
        ts = get_timed_serializer()
        email = ts.loads(
            token,
            salt="recover-key",
            max_age=current_app.config['TOKEN_MAX_AGE'])
    except Exception:
        abort(404)
    else:
        if request.method == 'POST':
            if form.validate():
                new_password = request.form['password']
                user_obj = User()
                user = user_obj.get_by_email(email)
                if not user:
                    abort(404, "User not found")
                elif not user.active:
                    flash('This user: %s is inactive!' % email)
                    return redirect(url_for('accounts.login'))
                elif current_app.config['ACCOUNTS_REQUIRES_EMAIL_CONFIRMATION'] and not user.email_confirmed:
                    return render_template("accounts/unconfirm_email.html")
                else:
                    user.set_new_password(new_password)
                    flash(u"New password saved successfully!", "success")
                    return redirect(url_for('accounts.login'))
            else:
                flash(u"Fix form errors")
    context = {
        'form': form,
        'token': token,
    }
    return render_template('accounts/reset_with_token.html', **context)
Exemplo n.º 2
0
def send_reset_password_email(recipient_email):
    """
    Envia um email com as intruccões para recuperar a senha para: ``recipient_email``
    Retorna:
     - (True, '') em caso de sucesso.
     - (Flase, 'MENSAGEM DE ERRO/EXCEÇÃO') em caso de exceção/erro
    """
    try:
        ts = utils.get_timed_serializer()
        token = ts.dumps(recipient_email, salt='recover-key')
    except Exception, e:
        return (False, 'Invalid Token: %s' % str(e))
Exemplo n.º 3
0
def send_confirmation_email(recipient_email):
    """
    Envia um email de confirmação para ``recipient_email``
    Retorna:
     - (True, '') em caso de sucesso.
     - (Flase, 'MENSAGEM DE ERRO/EXCEÇÃO') em caso de exceção/erro
    """

    try:
        ts = utils.get_timed_serializer()
        token = ts.dumps(recipient_email, salt='email-confirm-key')
    except Exception, e:
        return (False, 'Invalid Token: %s' % str(e))
Exemplo n.º 4
0
def send_reset_password_email(recipient_email):
    """
    Envia um email com as intruccões para recuperar a senha para: ``recipient_email``
    Retorna:
     - (True, '') em caso de sucesso.
     - (False, 'MENSAGEM DE ERRO/EXCEÇÃO') em caso de exceção/erro
    """
    if not isinstance(recipient_email, six.string_types) or not utils.REGEX_EMAIL.match(recipient_email):
        raise ValueError(u'recipient_email é inválido!')
    try:
        ts = utils.get_timed_serializer()
        token = ts.dumps(recipient_email, salt='recover-key')
    except Exception, e:
        return (False, u'Token inválido: %s' % unicode(e))
Exemplo n.º 5
0
def send_confirmation_email(recipient_email):
    """
    Envia um email de confirmação para ``recipient_email``
    Retorna:
     - (True, '') em caso de sucesso.
     - (False, 'MENSAGEM DE ERRO/EXCEÇÃO') em caso de exceção/erro
    """
    if not isinstance(recipient_email, six.string_types) or not utils.REGEX_EMAIL.match(recipient_email):
        raise ValueError(u'recipient_email é inválido!')
    try:
        ts = utils.get_timed_serializer()
        token = ts.dumps(recipient_email, salt='email-confirm-key')
    except Exception, e:
        return (False, u'Token inválido: %s' % unicode(e))
Exemplo n.º 6
0
def confirm_email(token):
    try:
        ts = get_timed_serializer()
        email = ts.loads(
            token,
            salt="email-confirm-key",
            max_age=current_app.config['TOKEN_MAX_AGE'])
    except Exception:  # possiveis exceções: https://pythonhosted.org/itsdangerous/#exceptions
        # qualquer exeção invalida a operação de confirmação
        abort(404)  # melhorar mensagem de erro para o usuário

    user = User().get_by_email(email)
    if user:
        user.set_email_confirmed()
        flash(u'Email: %s confirmed successfully! Now you can login!' % user.email, 'success')
        return redirect(url_for('accounts.login'))
    else:
        abort(404, u"User not found")