def reset(self): form = forms.EmailForm(request.form) if admin.helpers.validate_form_on_submit(form): user = controllers.get_user_by_email(email=form.data['email']) if not user: abort(404, _('Usuário não encontrado')) if not user.email_confirmed: return self.render('admin/auth/unconfirm_email.html') was_sent, error_msg = user.send_reset_password_email() if was_sent: flash( _('Enviamos as instruções para recuperar a senha para: %(email)s', email=user.email)) else: flash( _('Ocorreu um erro no envio das instruções por email para: %(email)s. Erro: %(error)s', email=user.email, error=error_msg), 'error') return redirect(url_for('.index')) self._template_args['form'] = form return self.render('admin/auth/reset.html')
def test_get_user_by_email(self): """ Testando a função controllers.get_user_by_email(), deve retornar um usuários com o mesmo email do usuário cadastrado. """ ut.create_user('*****@*****.**', 'oaj9u2', True) user = controllers.get_user_by_email('*****@*****.**') self.assertEqual(user.email, '*****@*****.**')
def login_view(self): # handle user login form = forms.LoginForm(request.form) if admin.helpers.validate_form_on_submit(form): user_email = form.data['email'] user = controllers.get_user_by_email(user_email) if not user.email_confirmed: return self.render('admin/auth/unconfirm_email.html') login.login_user(user) if login.current_user.is_authenticated: return redirect(url_for('.index')) self._template_args['form'] = form return self.render('admin/auth/login.html')
def confirm_email(self, token): try: ts = get_timed_serializer() email = ts.loads(token, salt="email-confirm-key", max_age=current_app.config['TOKEN_MAX_AGE']) except Exception as e: # 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 = controllers.get_user_by_email(email=email) if not user: abort(404, _('Usuário não encontrado')) controllers.set_user_email_confirmed(user) flash(_('Email: %(email)s confirmado com sucesso!', email=user.email)) return redirect(url_for('.index'))
def confirm_email(self, 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 = controllers.get_user_by_email(email=email) if not user: abort(404, _('Usuário não encontrado')) controllers.set_user_email_confirmed(user) flash(_('Email: %(email)s confirmado com sucesso!', email=user.email)) return redirect(url_for('.index'))
def create_superuser(): """ Cria um novo usuário a partir dos dados inseridos na linha de comandos. Para criar um novo usuário é necessario preencher: - email (deve ser válido é único, se já existe outro usuário com esse email deve inserir outro); - senha (modo echo off) - e se o usuário tem email confirmado (caso sim, pode fazer logim, caso que não, deve verificar por email) """ user_email = None user_password = None while user_email is None: user_email = raw_input(u'Email: ').strip() if user_email == '': user_email = None print u'Email não pode ser vazio' else: form = EmailForm(data={'email': user_email}) if not form.validate(): user_email = None print u'Deve inserir um email válido!' elif controllers.get_user_by_email(user_email): user_email = None print u'Já existe outro usuário com esse email!' os.system("stty -echo") while user_password is None: user_password = raw_input(u'Senha: ').strip() if user_password == '': user_password = None print u'Senha não pode ser vazio' os.system("stty echo") email_confirmed = raw_input('\nEmail confirmado? [y/N]: ').strip() if email_confirmed.upper() in ('Y', 'YES'): email_confirmed = True else: email_confirmed = False print u'Deve enviar o email de confirmação pelo admin' # cria usuario create_user(user_email, user_password, email_confirmed) print u'Novo usuário criado com sucesso!'
def create_superuser(): """ Cria um novo usuário a partir dos dados inseridos na linha de comandos. Para criar um novo usuário é necessario preencher: - email (deve ser válido é único, se já existe outro usuário com esse email deve inserir outro); - senha (modo echo off) - e se o usuário tem email confirmado (caso sim, pode fazer logim, caso que não, deve verificar por email) """ user_email = None user_password = None while user_email is None: user_email = input('Email: ').strip() if user_email == '': user_email = None print('Email não pode ser vazio') else: form = EmailForm(data={'email': user_email}) if not form.validate(): user_email = None print('Deve inserir um email válido!') elif controllers.get_user_by_email(user_email): user_email = None print('Já existe outro usuário com esse email!') os.system("stty -echo") while user_password is None: user_password = input('Senha: ').strip() if user_password == '': user_password = None print('Senha não pode ser vazio') os.system("stty echo") email_confirmed = input('\nEmail confirmado? [y/N]: ').strip() if email_confirmed.upper() in ('Y', 'YES'): email_confirmed = True else: email_confirmed = False print('Deve enviar o email de confirmação pelo admin') # cria usuario create_user(user_email, user_password, email_confirmed) print('Novo usuário criado com sucesso!')
def reset_with_token(self, token): try: ts = get_timed_serializer() email = ts.loads(token, salt="recover-key", max_age=current_app.config['TOKEN_MAX_AGE']) except Exception as e: abort(404) form = forms.PasswordForm(request.form) if admin.helpers.validate_form_on_submit(form): user = controllers.get_user_by_email(email=email) if not user.email_confirmed: return self.render('admin/auth/unconfirm_email.html') controllers.set_user_password(user, form.password.data) flash(_('Nova senha salva com sucesso!!')) return redirect(url_for('.index')) self._template_args['form'] = form self._template_args['token'] = token return self.render('admin/auth/reset_with_token.html')
def reset_with_token(self, token): try: ts = get_timed_serializer() email = ts.loads(token, salt="recover-key", max_age=current_app.config['TOKEN_MAX_AGE']) except Exception: abort(404) form = forms.PasswordForm(request.form) if admin.helpers.validate_form_on_submit(form): user = controllers.get_user_by_email(email=email) if not user.email_confirmed: return self.render('admin/auth/unconfirm_email.html') controllers.set_user_password(user, form.password.data) flash(_('Nova senha salva com sucesso!!')) return redirect(url_for('.index')) self._template_args['form'] = form self._template_args['token'] = token return self.render('admin/auth/reset_with_token.html')
def reset(self): form = forms.EmailForm(request.form) if admin.helpers.validate_form_on_submit(form): user = controllers.get_user_by_email(email=form.data['email']) if not user: abort(404, _('Usuário não encontrado')) if not user.email_confirmed: return self.render('admin/auth/unconfirm_email.html') was_sent, error_msg = user.send_reset_password_email() if was_sent: flash(_('Enviamos as instruções para recuperar a senha para: %(email)s', email=user.email)) else: flash(_('Ocorreu um erro no envio das instruções por email para: %(email)s. Erro: %(error)s', email=user.email, error=error_msg), 'error') return redirect(url_for('.index')) self._template_args['form'] = form return self.render('admin/auth/reset.html')
def validate_password(self, field): user = controllers.get_user_by_email(self.email.data) if user is None: raise validators.ValidationError(_(u'Usuário inválido')) if not user.is_correct_password(self.password.data): raise validators.ValidationError(_(u'Senha inválida'))
def validate_password(self, field): user = controllers.get_user_by_email(self.email.data) if user is None: raise validators.ValidationError(_('Usuário inválido')) if not user.is_correct_password(self.password.data): raise validators.ValidationError(_('Senha inválida'))