Пример #1
0
    def test_login_succeeds(self):
        """ Make sure we can login """
        from pyramid_signup.models import User
        admin = User(username='******', password='******')
        admin.activated = True

        self.session.add(admin)
        self.session.flush()

        from pyramid_signup.views import AuthController
        self.config.add_route('index', '/')

        self.config.include('pyramid_signup')

        request = self.get_csrf_request(post={
            'submit': True,
            'Username': '******',
            'Password': '******',
        },
                                        request_method='POST')

        view = AuthController(request)
        response = view.login()

        assert response.status_int == 302
Пример #2
0
    def post(self):
        if self.request.method == 'POST':
            try:
                controls = self.request.POST.items()
                captured = self.form.validate(controls)
            except deform.ValidationFailure, e:
                return {'form': e.render(), 'errors': e.error.children}

            email = captured['Email']
            username = captured['Username']
            password = captured['Password']


            mgr = UserManager(self.request)
            user = mgr.get_by_username(username)

            if user:
                self.request.session.flash(_('That username is already used.'), 'error')
                return {'form': self.form.render(self.request.POST)}

            activation = None

            try:
                user = User(username=username, password=password, email=email)

                if self.require_activation:
                    activation = Activation()
                    self.db.add(activation)

                    user.activation = activation

                    body = pystache.render(_("Please activate your e-mail address by visiting {{ link }}"),
                        {
                            'link': route_url('activate', self.request, code=user.activation.code)
                        }
                    )

                    subject = _("Please active your e-mail address!")

                    message = Message(subject=subject, recipients=[user.email], body=body)
                    self.mailer.send(message)

                    self.request.session.flash(_('Please check your E-mail for an activation link'), 'success')
                else:
                    user.activated = True

                self.db.add(user)
                self.db.flush()
            except Exception as exc:
                self.request.session.flash(exc.message, 'error')
                return {'form': self.form.render()}

            self.request.registry.notify(
                NewRegistrationEvent(self.request, user, activation, controls)
            )

            return HTTPFound(location=self.register_redirect_view)
Пример #3
0
    def test_valid_login(self): 
        """ Call the login view, make sure routes are working """
        from pyramid_signup.models import User
        admin = User(username='******', password='******')
        admin.activated = True
        self.session.add(admin)
        self.session.flush()

        res = self.app.get('/login')

        csrf = res.form.fields['csrf_token'][0].value

        res = self.app.post('/login', 
            {
                'submit': True,
                'Username': '******',
                'Password': '******',
                'csrf_token': csrf
            }
        )

        assert res.status_int == 302
Пример #4
0
    def test_login_succeeds(self):
        """ Make sure we can login """
        from pyramid_signup.models import User
        admin = User(username='******', password='******')
        admin.activated = True

        self.session.add(admin)
        self.session.flush()

        from pyramid_signup.views import AuthController
        self.config.add_route('index', '/')

        self.config.include('pyramid_signup')

        request = self.get_csrf_request(post={
                'submit': True,
                'Username': '******',
                'Password': '******',
            }, request_method='POST')

        view = AuthController(request)
        response = view.login()

        assert response.status_int == 302
Пример #5
0
    def post(self):
        if self.request.method == 'POST':
            try:
                controls = self.request.POST.items()
                captured = self.form.validate(controls)
            except deform.ValidationFailure, e:
                return {'form': e.render(), 'errors': e.error.children}

            email = captured['Email']
            username = captured['Username']
            password = captured['Password']

            mgr = UserManager(self.request)
            user = mgr.get_by_username(username)

            if user:
                self.request.session.flash(_('That username is already used.'),
                                           'error')
                return {'form': self.form.render(self.request.POST)}

            activation = None

            try:
                user = User(username=username, password=password, email=email)

                if self.require_activation:
                    activation = Activation()
                    self.db.add(activation)

                    user.activation = activation

                    body = pystache.render(
                        _("Please activate your e-mail address by visiting {{ link }}"
                          ), {
                              'link':
                              route_url('activate',
                                        self.request,
                                        code=user.activation.code)
                          })

                    subject = _("Please active your e-mail address!")

                    message = Message(subject=subject,
                                      recipients=[user.email],
                                      body=body)
                    self.mailer.send(message)

                    self.request.session.flash(
                        _('Please check your E-mail for an activation link'),
                        'success')
                else:
                    user.activated = True

                self.db.add(user)
                self.db.flush()
            except Exception as exc:
                self.request.session.flash(exc.message, 'error')
                return {'form': self.form.render()}

            self.request.registry.notify(
                NewRegistrationEvent(self.request, user, activation, controls))

            return HTTPFound(location=self.register_redirect_view)