Пример #1
0
    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')
Пример #2
0
    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, '*****@*****.**')
Пример #3
0
    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, '*****@*****.**')
Пример #4
0
    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')
Пример #5
0
    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'))
Пример #6
0
    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')
Пример #7
0
    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'))
Пример #8
0
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!'
Пример #9
0
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!')
Пример #10
0
    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')
Пример #11
0
    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')
Пример #12
0
    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')
Пример #13
0
 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'))
Пример #14
0
 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'))