def cookies(self): """Dictionary of cookies keyed by cookie name. Just a plain dictionary, may be empty but not None. """ return get_cookie_dict(self.environ)
def __call__(self, pipe, environ, start_response): remote_ip = environ.get('REMOTE_ADDR', "Unknown") cookies = get_cookie_dict(environ) try: environ['hsr']['user'] = None except KeyError: environ['hsr'] = {'user' : None} environ['hsr']['auth_except'] = None environ['hsr']['session'] = None try: sid = cookies['sid'] if sid == None: raise KeyError session = self.auth_controller.get_session(sid, session_expiration=self.session_expiration) user = session.user except (NoSuchSession, SessionExpired), e: logging.info("%s failed to authenticate using (%s): %s" % (remote_ip, sid, type(e).__name__)) environ['hsr']['auth_except'] = e start_response.delete_cookie('sid') return self.login_view(None, environ, start_response)
def app(environ, start_response): cfg = ConfigParser() cfg.read('crowd.properties') fields = parse_formvars(environ) if environ['REQUEST_METHOD'] == 'POST': cc = CrowdPy() cc.createClient() cc.authenticateApplication() headers = [] headers.append(('content-type','text/html')) try: authenticated = cc.authenticatePrincipal(fields['usernname'],fields['password']) cookieInfo = cc.getCookieInfo() if cookieInfo.domain is None: domain = cfg.get('default','domain.name') else: domain = cookieInfo.domain headers.append(('Set-Cookie','crowd.token_key=' + authenticated + ';path=/;domain='+ domain +';expires=Sat, 7-Feb-2012 03:10:00' )) except WebFault: start_response('200 OK', headers) return ['Invalid username/password'] start_response('200 OK', headers) return ['Hello, ', fields['usernname'], ' You are valid user!'] else: start_response('200 OK', [('content-type', 'text/html')]) cookies = request.get_cookie_dict(environ) if 'crowd.token_key' in cookies.keys(): cc = CrowdPy() cc.createClient() cc.authenticateApplication() isValid = cc.isValidPrincipalToken(cookies['crowd.token_key']) return 'Already Authenticated' return ['<form method="POST">User-name: <input type="text" ' 'name="usernname"><br> Password : <input type="password" name="password" > <input type="submit"></form>']