Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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