1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-19 18:29:23 +00:00

Merge pull request #1348 from haiwen/fix/roles

[role perm] Update settings of role permissions
This commit is contained in:
xiez
2016-09-07 14:24:08 +08:00
committed by GitHub
4 changed files with 58 additions and 28 deletions

View File

@@ -3,7 +3,7 @@ import logging
from django.conf import settings
from seahub.constants import DEFAULT_USER
from seahub.constants import DEFAULT_USER, GUEST_USER
# Get an instance of a logger
logger = logging.getLogger(__name__)
@@ -17,31 +17,43 @@ DEFAULT_ENABLED_ROLE_PERMISSIONS = {
'can_generate_share_link': True,
'can_generate_upload_link': True,
'can_invite_guest': False,
# followings are not implemented yet
'can_drag_drop_folder_to_sync': True,
'can_connect_with_android_clients': True,
'can_connect_with_ios_clients': True,
'can_connect_with_desktop_clients': True,
'can_export_files_via_mobile_client': True,
},
GUEST_USER: {
'can_add_repo': False,
'can_add_group': False,
'can_view_org': False,
'can_use_global_address_book': False,
'can_generate_share_link': False,
'can_generate_upload_link': False,
'can_invite_guest': False,
'can_drag_drop_folder_to_sync': False,
'can_connect_with_android_clients': False,
'can_connect_with_ios_clients': False,
'can_connect_with_desktop_clients': False,
'can_export_files_via_mobile_client': False,
},
}
_default_role_perms = DEFAULT_ENABLED_ROLE_PERMISSIONS.copy()
_default_role_perms.update(settings.ENABLED_ROLE_PERMISSIONS) # merge outter dict
try:
_default_role_perms.update(settings.ENABLED_ROLE_PERMISSIONS) # merge outter dict
except AttributeError:
pass # ignore error if ENABLED_ROLE_PERMISSONS is not set in settings.py
def get_enabled_role_permissions():
ret = {}
for role, perms in _default_role_perms.iteritems():
default_perms = _default_role_perms['default'].copy()
default_perms.update(perms) # merge inner dict
ret[role] = default_perms
# check role permission syntax
for k in default_perms.keys():
for k in perms.keys():
if k not in DEFAULT_ENABLED_ROLE_PERMISSIONS[DEFAULT_USER].keys():
print '"%s" is not valid permission, please review the ENABLED_ROLE_PERMISSIONS setting.' % k
logger.warn('"%s" is not valid permission, please review the ENABLED_ROLE_PERMISSIONS setting.' % k)
assert False, '"%s" is not valid permission, please review the ENABLED_ROLE_PERMISSIONS setting.' % k
return ret
return _default_role_perms
ENABLED_ROLE_PERMISSIONS = get_enabled_role_permissions()

View File

@@ -515,24 +515,8 @@ ENABLE_GLOBAL_ADDRESSBOOK = True
ENABLE_FOLDER_PERM = False
####################
# Role permissions #
# Guest Invite #
####################
from seahub.constants import GUEST_USER
ENABLED_ROLE_PERMISSIONS = {
GUEST_USER: {
'can_add_repo': False,
'can_add_group': False,
'can_view_org': False,
'can_use_global_address_book': False,
'can_generate_share_link': False,
'can_generate_upload_link': False,
'can_invite_guest': False,
'can_connect_with_android_clients': False,
'can_connect_with_ios_clients': False,
'can_connect_with_desktop_clients': False,
},
}
ENABLE_GUEST_INVITATION = False
#####################

View File

@@ -0,0 +1,14 @@
from seahub.constants import GUEST_USER, DEFAULT_USER
from seahub.role_permissions.utils import (
get_available_roles, get_enabled_role_permissions_by_role)
from seahub.test_utils import BaseTestCase
class UtilsTest(BaseTestCase):
def test_get_available_role(self):
assert len(get_available_roles()) == 2
assert GUEST_USER in get_available_roles()
assert DEFAULT_USER in get_available_roles()
def test_get_enabled_role_permissions_by_role(self):
assert len(get_enabled_role_permissions_by_role(DEFAULT_USER).keys()) == 12

View File

@@ -0,0 +1,20 @@
from seahub.base.accounts import User
from seahub.constants import DEFAULT_USER
from seahub.test_utils import BaseTestCase
from seahub.utils.user_permissions import get_user_role
class UserPermissionsTest(BaseTestCase):
def setUp(self):
self.user = self.create_user()
def tearDown(self):
self.remove_user(self.user.email)
def test_get_user_role(self):
assert self.user.role is None
assert get_user_role(self.user) == DEFAULT_USER
User.objects.update_role(self.user.email, 'test_role')
u = User.objects.get(self.user.email)
assert get_user_role(u) == 'test_role'