Exemplo n.º 1
0
    def _remember(self, environ, identity):
        log.debug('remembering')
        if self.include_ip:
            remote_addr = environ['REMOTE_ADDR']
        else:
            remote_addr = '0.0.0.0'

        cookies = get_cookies(environ)
        old_cookie = cookies.get(self.cookie_name)
        existing = cookies.get(self.cookie_name)
        old_cookie_value = getattr(existing, 'value', None)
        max_age = identity.get('max_age', None)

        timestamp, userid, tokens, userdata = None, '', (), ''

        if old_cookie_value:
            try:
                timestamp, userid, tokens, userdata = auth_tkt.parse_ticket(
                    self.secret,
                    old_cookie_value,
                    remote_addr,
                    digest_algo=self.digest_algo)
            except auth_tkt.BadTicket:
                pass
        tokens = tuple(tokens)

        who_userid = identity['repoze.who.plugins.visitor_tracker.userid']
        log.debug('remembering: user_id=%r', who_userid)
        who_tokens = tuple(identity.get('tokens', ()))
        who_userdata = identity.get('userdata', '')

        encoding_data = self.userid_type_encoders.get(type(who_userid))
        if encoding_data:
            encoding, encoder = encoding_data
            who_userid = encoder(who_userid)
            # XXX we are discarding the userdata passed in the identity?
            who_userdata = 'userid_type:%s' % encoding

        old_data = (userid, tokens, userdata)
        new_data = (who_userid, who_tokens, who_userdata)

        if old_data != new_data or (self.reissue_time and (
            (timestamp + self.reissue_time) < time.time())):
            ticket = auth_tkt.AuthTicket(self.secret,
                                         who_userid,
                                         remote_addr,
                                         tokens=who_tokens,
                                         user_data=who_userdata,
                                         cookie_name=self.cookie_name,
                                         secure=self.secure,
                                         digest_algo=self.digest_algo)
            new_cookie_value = ticket.cookie_value()

            if old_cookie_value != new_cookie_value:
                # return a set of Set-Cookie headers
                return self._get_cookies(environ, new_cookie_value, max_age)
Exemplo n.º 2
0
    def remember(self, environ, identity):
        if self.include_ip:
            remote_addr = environ['REMOTE_ADDR']
        else:
            remote_addr = '0.0.0.0'

        cookies = get_cookies(environ)
        old_cookie = cookies.get(self.cookie_name)
        existing = cookies.get(self.cookie_name)
        old_cookie_value = getattr(existing, 'value', None)
        max_age = identity.get('max_age', None)

        timestamp, userid, tokens, userdata = None, '', (), ''

        if old_cookie_value:
            try:
                timestamp, userid, tokens, userdata = auth_tkt.parse_ticket(
                    self.secret, old_cookie_value, remote_addr,
                    self.digest_algo)
            except auth_tkt.BadTicket:
                pass
        tokens = tuple(tokens)

        who_userid = identity['repoze.who.userid']
        who_tokens = tuple(identity.get('tokens', ()))
        who_userdata_dict = identity.get('userdata', {})

        encoding_data = self.userid_type_encoders.get(type(who_userid))
        if encoding_data:
            encoding, encoder = encoding_data
            who_userid = encoder(who_userid)
            who_userdata_dict[self.userid_typename] = encoding

        who_userdata = urlencode(who_userdata_dict)

        old_data = (userid, tokens, userdata)
        new_data = (who_userid, who_tokens, who_userdata)

        if old_data != new_data or (self.reissue_time and (
            (timestamp + self.reissue_time) < time.time())):
            ticket = auth_tkt.AuthTicket(self.secret,
                                         who_userid,
                                         remote_addr,
                                         tokens=who_tokens,
                                         user_data=who_userdata,
                                         cookie_name=self.cookie_name,
                                         secure=self.secure,
                                         digest_algo=self.digest_algo)
            new_cookie_value = ticket.cookie_value()

            if old_cookie_value != new_cookie_value:
                # return a set of Set-Cookie headers
                return self._get_cookies(environ, new_cookie_value, max_age)
Exemplo n.º 3
0
 def _makeTicket(self, userid='userid', remote_addr='0.0.0.0',
                 tokens = [], userdata='userdata',
                 cookie_name='auth_tkt', secure=False,
                 time=None):
     #from paste.auth import auth_tkt
     import repoze.who._auth_tkt as auth_tkt
     ticket = auth_tkt.AuthTicket(
         'secret',
         userid,
         remote_addr,
         tokens=tokens,
         user_data=userdata,
         time=time,
         cookie_name=cookie_name,
         secure=secure)
     return ticket.cookie_value()
Exemplo n.º 4
0
 def _makeTicket(self, userid='userid', remote_addr='0.0.0.0',
                 tokens = [], userdata='userdata',
                 cookie_name='auth_tkt', secure=False,
                 time=None, digest_algo="md5"):
     import repoze.who._auth_tkt as auth_tkt
     ticket = auth_tkt.AuthTicket(
         'secret',
         userid,
         remote_addr,
         tokens=tokens,
         user_data=userdata,
         time=time,
         cookie_name=cookie_name,
         secure=secure,
         digest_algo=digest_algo)
     return ticket.cookie_value()
Exemplo n.º 5
0
    def remember(self, environ, identity):
        logger.debug('remember: START')
        if self.include_ip:
            remote_addr = environ['REMOTE_ADDR']
        else:
            remote_addr = '0.0.0.0'

        cookies = get_cookies(environ)
        logger.debug('remember -- cookies: %s' % (cookies))
        old_cookie = cookies.get(self.cookie_name)
        logger.debug('remember -- old_cookie: %s' % (old_cookie))
        existing = cookies.get(self.cookie_name)
        logger.debug('remember -- existing cookies: %s' % (existing))
        old_cookie_value = getattr(existing, 'value', None)
        logger.debug('remember -- old_cookie_value: %s' % (old_cookie_value))
        max_age = identity.get('max_age', None)
        logger.debug('remember -- max_age: %s' % (max_age))

        timestamp, userid, tokens, userdata = None, '', (), ''

        if old_cookie_value:
            try:
                timestamp,userid,tokens,userdata = auth_tkt.parse_ticket(
                    self.secret, old_cookie_value, remote_addr)
            except auth_tkt.BadTicket:
                pass
        tokens = tuple(tokens)

        who_userid = identity['repoze.who.userid']
        logger.debug('remember -- who_userid: {0}'.format(who_userid))
        who_tokens = tuple(identity.get('tokens', ()))
        logger.debug('remember -- who_token: {0}'.format(who_tokens))
        who_userdata_dict = identity.get('userdata', {})
        logger.debug('remember -- who_userdata_dict: {0}'.format(who_userdata_dict))

        encoding_data = self.userid_type_encoders.get(type(who_userid))
        if encoding_data:
            logger.debug('remember -- Encoding Data')
            encoding, encoder = encoding_data
            who_userid = encoder(who_userid)
            who_userdata_dict[self.userid_typename] = encoding

        who_userdata = urlencode(who_userdata_dict)

        old_data = (userid, tokens, userdata)
        new_data = (who_userid, who_tokens, who_userdata)

        logger.debug('remember -- old_data: {0}'.format(old_data))
        logger.debug('remember -- new_data : {0}'.format(new_data ))

        if old_data != new_data or (self.reissue_time and
                ( (timestamp + self.reissue_time) < time.time() )):
            ticket = auth_tkt.AuthTicket(
                self.secret,
                who_userid,
                remote_addr,
                tokens=who_tokens,
                user_data=who_userdata,
                cookie_name=self.cookie_name,
                secure=self.secure)
            new_cookie_value = ticket.cookie_value()

            logger.debug('remember -- old_cookie_value : {0}'.format(old_cookie_value ))
            logger.debug('remember -- new_cookie_value : {0}'.format(new_cookie_value ))
            if old_cookie_value != new_cookie_value:
                # return a set of Set-Cookie headers
                return self._get_cookies(environ, new_cookie_value, max_age)