Add username to cache key in datasource renderer if OAuth2 is used
(fixes #5849)
This commit is contained in:
parent
7040ba8900
commit
fd74d2f7c1
3
README
3
README
|
@ -162,6 +162,9 @@ A source definition is a dictionnary containing the following keys:
|
||||||
as keyword arguments to the `reader()` or `DictReader()`
|
as keyword arguments to the `reader()` or `DictReader()`
|
||||||
constructors, depending on whether the `fieldnames` arguments is
|
constructors, depending on whether the `fieldnames` arguments is
|
||||||
present,
|
present,
|
||||||
|
- `user_context`, whether the user must be part of the cache key. For retro
|
||||||
|
compatibility If authentication mechanism is OAuth2, it defaults to True
|
||||||
|
otherwise to False.
|
||||||
|
|
||||||
Exemple with the JSON parser
|
Exemple with the JSON parser
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
|
@ -141,9 +141,14 @@ class Data(object):
|
||||||
self.signature_key = source.get('signature_key')
|
self.signature_key = source.get('signature_key')
|
||||||
self.parser_type = source.get('parser_type', 'raw')
|
self.parser_type = source.get('parser_type', 'raw')
|
||||||
self.content_type = source.get('content_type', self.MAPPING[self.parser_type])
|
self.content_type = source.get('content_type', self.MAPPING[self.parser_type])
|
||||||
|
self.user_context = source.get('user_context',
|
||||||
|
config.get('user_context', self.auth_mech == 'oauth2'))
|
||||||
pre_hash = 'datasource-{self.slug}-{self.url}-{self.limit}-' \
|
pre_hash = 'datasource-{self.slug}-{self.url}-{self.limit}-' \
|
||||||
'{self.refresh}-{self.auth_mech}-{self.signature_key}' \
|
'{self.refresh}-{self.auth_mech}-{self.signature_key}' \
|
||||||
.format(self=self)
|
.format(self=self)
|
||||||
|
# If authentication is used
|
||||||
|
if self.user_context:
|
||||||
|
pre_hash += '-%s' % unicode(self.request.user).encode('utf-8')
|
||||||
self.key = hashlib.md5(pre_hash).hexdigest()
|
self.key = hashlib.md5(pre_hash).hexdigest()
|
||||||
self.now = time.time()
|
self.now = time.time()
|
||||||
self.__content = self.__CACHE_SENTINEL
|
self.__content = self.__CACHE_SENTINEL
|
||||||
|
|
Reference in New Issue