Пример #1
0
 def setCookieLifeDays(self, days):
     """ offset for id cookie 'expires' element """
     if type(days) not in (type(1), type(1.0)):
         raise BrowserIdManagerErr('Bad cookie lifetime in days %s '
                                   '(requires integer value)' %
                                   escape(repr(days)))
     self.cookie_life_days = int(days)
Пример #2
0
 def isBrowserIdFromUrl(self):
     """ See IBrowserIdManager.
     """
     if not self.getBrowserId(create=False):
         raise BrowserIdManagerErr('There is no current browser id.')
     if getattr(self.REQUEST, 'browser_id_ns_') == 'url':
         return 1
Пример #3
0
 def isBrowserIdNew(self):
     """ See IBrowserIdManager.
     """
     if not self.getBrowserId(create=False):
         raise BrowserIdManagerErr('There is no current browser id.')
     # ns will be None if new
     return getattr(self.REQUEST, 'browser_id_ns_', None) is None
Пример #4
0
 def setBrowserIdCookieByForce(self, bid):
     """ See IBrowserIdManager.
     """
     if 'cookies' not in self.browserid_namespaces:
         raise BrowserIdManagerErr('Cookies are not now being used as a '
                                   'browser id namespace, thus the '
                                   'browserid cookie cannot be forced.')
     self._setCookie(bid, self.REQUEST)
Пример #5
0
 def flushBrowserIdCookie(self):
     """ See IBrowserIdManager.
     """
     if 'cookies' not in self.browserid_namespaces:
         raise BrowserIdManagerErr('Cookies are not now being used as a '
                                   'browser id namespace, thus the '
                                   'browserid cookie cannot be flushed.')
     self._setCookie('deleted', self.REQUEST, remove=1)
Пример #6
0
 def setBrowserIdNamespaces(self, ns):
     """
     accepts list of allowable browser id namespaces 
     """
     for name in ns:
         if name not in ALLOWED_BID_NAMESPACES:
             raise BrowserIdManagerErr('Bad browser id namespace %s' %
                                       repr(name))
     self.browserid_namespaces = tuple(ns)
Пример #7
0
    def setBrowserIdName(self, k):
        """ Set browser id name string

        o Enforce "valid" values.
        """
        if not (type(k) is type('') and k and not badidnamecharsin(k)):
            raise BrowserIdManagerErr('Bad id name string %s' %
                                      escape(repr(k)))
        self.browserid_name = k
Пример #8
0
 def encodeUrl(self, url, style='querystring', create=1):
     # See IBrowserIdManager
     bid = self.getBrowserId(create)
     if bid is None:
         raise BrowserIdManagerErr('There is no current browser id.')
     name = self.getBrowserIdName()
     if style == 'querystring':  # encode bid in querystring
         if '?' in url:
             return '%s&%s=%s' % (url, name, bid)
         else:
             return '%s?%s=%s' % (url, name, bid)
     else:  # encode bid as first two URL path segments
         proto, host, path, params, query, frag = urlparse(url)
         path = '/%s/%s%s' % (name, bid, path)
         return urlunparse((proto, host, path, params, query, frag))
Пример #9
0
 def setCookieDomain(self, domain):
     """ sets cookie 'domain' element for id cookie """
     if type(domain) is not type(''):
         raise BrowserIdManagerErr('Cookie domain must be string: %s' %
                                   escape(repr(domain)))
     if not domain:
         self.cookie_domain = ''
         return
     if not twodotsin(domain):
         raise BrowserIdManagerErr(
             'Cookie domain must contain at least two dots '
             '(e.g. ".zope.org" or "www.zope.org") or it must '
             'be left blank. : '
             '%s' % escape( ` domain `))
     if badcookiecharsin(domain):
         raise BrowserIdManagerErr('Bad characters in cookie domain %s' %
                                   escape( ` domain `))
     self.cookie_domain = domain
Пример #10
0
 def getBrowserId(self, create=1):
     """ See IBrowserIdManager.
     """
     REQUEST = self.REQUEST
     # let's see if bid has already been attached to request
     bid = getattr(REQUEST, 'browser_id_', None)
     if bid is not None:
         # it's already set in this request so we can just return it
         # if it's well-formed
         if not isAWellFormedBrowserId(bid):
             # somebody screwed with the REQUEST instance during
             # this request.
             raise BrowserIdManagerErr('Ill-formed browserid in '
                                       'REQUEST.browser_id_:  %s' %
                                       escape(bid))
         return bid
     # fall through & ck form/cookie namespaces if bid is not in request.
     tk = self.browserid_name
     ns = self.browserid_namespaces
     for name in ns:
         if name == 'url':
             continue  # browser ids in url are checked by Traverser class
         current_ns = getattr(REQUEST, name, None)
         if current_ns is None:
             continue
         bid = current_ns.get(tk, None)
         if bid is not None:
             # hey, we got a browser id!
             if isAWellFormedBrowserId(bid):
                 # bid is not "plain old broken"
                 REQUEST.browser_id_ = bid
                 REQUEST.browser_id_ns_ = name
                 return bid
     # fall through if bid is invalid or not in namespaces
     if create:
         # create a brand new bid
         bid = getNewBrowserId()
         if 'cookies' in ns:
             self._setCookie(bid, REQUEST)
         REQUEST.browser_id_ = bid
         REQUEST.browser_id_ns_ = None
         return bid
Пример #11
0
 def setCookiePath(self, path=''):
     """ sets cookie 'path' element for id cookie """
     if not (type(path) is type('') and not badcookiecharsin(path)):
         raise BrowserIdManagerErr('Bad cookie path %s' %
                                   escape(repr(path)))
     self.cookie_path = path