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