def captcha_jpeg(context, request): site = find_site(context) output = StringIO() captcha = PseudoGimpy() image = captcha.render() image.save(output, 'JPEG') data = output.getvalue() browserid = request.environ.get('repoze.browserid') session = site.sessions.get(browserid) session['captcha_solutions'] = captcha.solutions r = Response(data, '200 OK', [ ('Content-Type', 'image/jpeg'), ('Content-Length', len(data)) ]) return r
def forbidden(context, request): site = find_site(context) environ = request.environ referrer = environ.get('HTTP_REFERER', '') if 'REMOTE_ID' in environ: # the user is authenticated but he is not allowed to access this # resource api = API(context, request) body = render( 'templates/forbidden.pt', request, dict(api=api, login_form_url = resource_url(site, request, 'login'), homepage_url = resource_url(site, request)), ) headerlist = [] headerlist.append(('Content-Type', 'text/html; charset=utf-8')) headerlist.append(('Content-Length', str(len(body)))) response = Response(body, headers=headerlist, status='403 Forbidden') elif 'login' in referrer: # this request came from a user submitting the login form login_url = resource_url(site, request, 'login', query={'reason':'Bad username or password', 'came_from':request.url}) headerlist = [('Location', login_url)] response = Response('', headers=headerlist, status='403 Forbidden') else: # the user is not authenticated and did not come in as a result of # submitting the login form query = {'came_from':request.url} url = request.url while url.endswith('/'): url = url[:-1] if url != request.application_url: # if request isnt for homepage query['reason'] = 'Not logged in' login_url = resource_url(site, request, 'login', query=query) headerlist = [('Location', login_url)] response = Response('', headers=headerlist, status='302 Found') return response