Also allow demo users access to Flamenco & Attract
This commit is contained in:
@@ -91,16 +91,17 @@ class CloudExtension(PillarExtension):
|
|||||||
from pillar.api import service
|
from pillar.api import service
|
||||||
|
|
||||||
linked_roles = {'flamenco-user', 'attract-user'}
|
linked_roles = {'flamenco-user', 'attract-user'}
|
||||||
link_to = 'subscriber'
|
link_to = {'subscriber', 'demo'}
|
||||||
user_roles = set(user.get('roles', []))
|
user_roles = set(user.get('roles', []))
|
||||||
|
|
||||||
# Determine what to do
|
# Determine what to do
|
||||||
has_linked_roles = not (linked_roles - user_roles)
|
has_linked_roles = not (linked_roles - user_roles)
|
||||||
|
has_link_to = bool(link_to.intersection(user_roles))
|
||||||
action = ''
|
action = ''
|
||||||
if link_to in user_roles and not has_linked_roles:
|
if has_link_to and not has_linked_roles:
|
||||||
self._log.info('Granting roles %s to user %s', linked_roles, user['_id'])
|
self._log.info('Granting roles %s to user %s', linked_roles, user['_id'])
|
||||||
action = 'grant'
|
action = 'grant'
|
||||||
elif link_to not in user_roles and has_linked_roles:
|
elif not has_link_to and has_linked_roles:
|
||||||
self._log.info('Revoking roles %s from user %s', linked_roles, user['_id'])
|
self._log.info('Revoking roles %s from user %s', linked_roles, user['_id'])
|
||||||
action = 'revoke'
|
action = 'revoke'
|
||||||
|
|
||||||
|
@@ -2,7 +2,7 @@ from abstract_cloud_test import AbstractCloudTest
|
|||||||
|
|
||||||
|
|
||||||
class LinkedRolesTest(AbstractCloudTest):
|
class LinkedRolesTest(AbstractCloudTest):
|
||||||
def test_linked_roles(self):
|
def test_linked_roles_subscriber(self):
|
||||||
user_id = self.create_user(roles=[])
|
user_id = self.create_user(roles=[])
|
||||||
db_user = self.fetch_user_from_db(user_id)
|
db_user = self.fetch_user_from_db(user_id)
|
||||||
|
|
||||||
@@ -15,3 +15,17 @@ class LinkedRolesTest(AbstractCloudTest):
|
|||||||
db_user = self.fetch_user_from_db(user_id)
|
db_user = self.fetch_user_from_db(user_id)
|
||||||
self.assertEqual(set(),
|
self.assertEqual(set(),
|
||||||
set(db_user.get('roles', [])))
|
set(db_user.get('roles', [])))
|
||||||
|
|
||||||
|
def test_linked_roles_demo(self):
|
||||||
|
user_id = self.create_user(roles=[])
|
||||||
|
db_user = self.fetch_user_from_db(user_id)
|
||||||
|
|
||||||
|
self.badger(db_user['email'], {'demo'}, 'grant')
|
||||||
|
db_user = self.fetch_user_from_db(user_id)
|
||||||
|
self.assertEqual({'demo', 'flamenco-user', 'attract-user'},
|
||||||
|
set(db_user['roles']))
|
||||||
|
|
||||||
|
self.badger(db_user['email'], {'demo'}, 'revoke')
|
||||||
|
db_user = self.fetch_user_from_db(user_id)
|
||||||
|
self.assertEqual(set(),
|
||||||
|
set(db_user.get('roles', [])))
|
||||||
|
Reference in New Issue
Block a user