def challenge(self, environ, status, app_headers, forget_headers): path_info = environ['PATH_INFO'] # Configuring the headers to be set: cookies = [(h, v) for (h, v) in app_headers if h.lower() == 'set-cookie'] headers = forget_headers + cookies if path_info == self.logout_handler_path: params = {} if 'came_from' in environ: params.update({'came_from': environ['came_from']}) destination = _build_url(environ, self.post_logout_url, params=params) else: came_from_params = parse_qs(environ.get('QUERY_STRING', '')) params = { 'came_from': _build_url(environ, path_info, came_from_params) } destination = _build_url(environ, self.login_form_url, params=params) return HTTPFound(location=destination, headers=headers)
def identify(self, environ): path_info = environ['PATH_INFO'] if path_info == self.login_handler_path: query = self._get_form_data(environ) try: credentials = { 'login': query['login'], 'password': query['password'], 'max_age': query.get('remember') } except KeyError: credentials = None params = {} if 'came_from' in query: params['came_from'] = query['came_from'] if self.login_counter_name is not None and self.login_counter_name in query: params[self.login_counter_name] = query[ self.login_counter_name] destination = _build_url(environ, self.post_login_url, params=params) environ['repoze.who.application'] = HTTPFound(location=destination) return credentials elif path_info == self.logout_handler_path: query = self._get_form_data(environ) came_from = query.get('came_from') if came_from is None: came_from = _build_url(environ, '/') # set in environ for self.challenge() to find later environ['came_from'] = came_from environ['repoze.who.application'] = HTTPUnauthorized() elif path_info in (self.login_form_url, self.post_login_url): query = self._get_form_data(environ) environ['repoze.who.logins'] = 0 if self.login_counter_name is not None and self.login_counter_name in query: environ['repoze.who.logins'] = int( query[self.login_counter_name]) del query[self.login_counter_name] environ['QUERY_STRING'] = urlencode(query, doseq=True) return None
def challenge(self, environ, status, app_headers, forget_headers): path_info = environ['PATH_INFO'] # Configuring the headers to be set: cookies = [(h,v) for (h,v) in app_headers if h.lower() == 'set-cookie'] headers = forget_headers + cookies if path_info == self.logout_handler_path: params = {} if 'came_from' in environ: params.update({'came_from':environ['came_from']}) destination = _build_url(environ, self.post_logout_url, params=params) else: params = {'came_from': _build_url(environ, path_info)} destination = _build_url(environ, self.login_form_url, params=params) return HTTPFound(location=destination, headers=headers)
def identify(self, environ): path_info = environ['PATH_INFO'] if path_info == self.login_handler_path: query = self._get_form_data(environ) try: credentials = {'login': query['login'], 'password': query['password'], 'max_age':query.get('remember')} except KeyError: credentials = None params = {} if 'came_from' in query: params['came_from'] = query['came_from'] if self.login_counter_name is not None and self.login_counter_name in query: params[self.login_counter_name] = query[self.login_counter_name] destination = _build_url(environ, self.post_login_url, params=params) environ['repoze.who.application'] = HTTPFound(location=destination) return credentials elif path_info == self.logout_handler_path: query = self._get_form_data(environ) came_from = query.get('came_from') if came_from is None: came_from = _build_url(environ, '/') # set in environ for self.challenge() to find later environ['came_from'] = came_from environ['repoze.who.application'] = HTTPUnauthorized() elif path_info in (self.login_form_url, self.post_login_url): query = self._get_form_data(environ) environ['repoze.who.logins'] = 0 if self.login_counter_name is not None and self.login_counter_name in query: environ['repoze.who.logins'] = int(query[self.login_counter_name]) del query[self.login_counter_name] environ['QUERY_STRING'] = urlencode(query, doseq=True) return None