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)
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))
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))
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))
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))
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")