|
@@ -13,6 +13,11 @@ from misago.users.permissions.decorators import authenticated_only
|
|
"""
|
|
"""
|
|
Admin Permissions Form
|
|
Admin Permissions Form
|
|
"""
|
|
"""
|
|
|
|
+CAN_BROWSE_USERS_LIST = forms.YesNoSwitch(
|
|
|
|
+ label=_("Can browse users list"),
|
|
|
|
+ initial=1)
|
|
|
|
+CAN_SEE_USERS_ONLINE_LIST = forms.YesNoSwitch(
|
|
|
|
+ label=_("Can see users online list"))
|
|
CAN_SEARCH_USERS = forms.YesNoSwitch(
|
|
CAN_SEARCH_USERS = forms.YesNoSwitch(
|
|
label=_("Can search user profiles"),
|
|
label=_("Can search user profiles"),
|
|
initial=1)
|
|
initial=1)
|
|
@@ -26,12 +31,18 @@ CAN_SEE_BAN_DETAILS = forms.YesNoSwitch(
|
|
|
|
|
|
class LimitedPermissionsForm(forms.Form):
|
|
class LimitedPermissionsForm(forms.Form):
|
|
legend = _("User profiles")
|
|
legend = _("User profiles")
|
|
|
|
+
|
|
|
|
+ can_browse_users_list = CAN_BROWSE_USERS_LIST
|
|
|
|
+ can_see_users_online_list = CAN_SEE_USERS_ONLINE_LIST
|
|
|
|
+ can_search_users = CAN_SEARCH_USERS
|
|
can_search_users = CAN_SEARCH_USERS
|
|
can_search_users = CAN_SEARCH_USERS
|
|
can_see_users_name_history = CAN_SEE_USER_NAME_HISTORY
|
|
can_see_users_name_history = CAN_SEE_USER_NAME_HISTORY
|
|
can_see_ban_details = CAN_SEE_BAN_DETAILS
|
|
can_see_ban_details = CAN_SEE_BAN_DETAILS
|
|
|
|
|
|
|
|
|
|
class PermissionsForm(LimitedPermissionsForm):
|
|
class PermissionsForm(LimitedPermissionsForm):
|
|
|
|
+ can_browse_users_list = CAN_BROWSE_USERS_LIST
|
|
|
|
+ can_see_users_online_list = CAN_SEE_USERS_ONLINE_LIST
|
|
can_search_users = CAN_SEARCH_USERS
|
|
can_search_users = CAN_SEARCH_USERS
|
|
can_follow_users = forms.YesNoSwitch(
|
|
can_follow_users = forms.YesNoSwitch(
|
|
label=_("Can follow other users"),
|
|
label=_("Can follow other users"),
|
|
@@ -64,8 +75,10 @@ ACL Builder
|
|
"""
|
|
"""
|
|
def build_acl(acl, roles, key_name):
|
|
def build_acl(acl, roles, key_name):
|
|
new_acl = {
|
|
new_acl = {
|
|
|
|
+ 'can_browse_users_list': 0,
|
|
|
|
+ 'can_see_users_online_list': 0,
|
|
'can_search_users': 0,
|
|
'can_search_users': 0,
|
|
- 'can_follow_users': 1,
|
|
|
|
|
|
+ 'can_follow_users': 0,
|
|
'can_be_blocked': 1,
|
|
'can_be_blocked': 1,
|
|
'can_see_users_name_history': 0,
|
|
'can_see_users_name_history': 0,
|
|
'can_see_ban_details': 0,
|
|
'can_see_ban_details': 0,
|
|
@@ -77,6 +90,8 @@ def build_acl(acl, roles, key_name):
|
|
|
|
|
|
return algebra.sum_acls(
|
|
return algebra.sum_acls(
|
|
new_acl, roles=roles, key=key_name,
|
|
new_acl, roles=roles, key=key_name,
|
|
|
|
+ can_browse_users_list=algebra.greater,
|
|
|
|
+ can_see_users_online_list=algebra.greater,
|
|
can_search_users=algebra.greater,
|
|
can_search_users=algebra.greater,
|
|
can_follow_users=algebra.greater,
|
|
can_follow_users=algebra.greater,
|
|
can_be_blocked=algebra.lower,
|
|
can_be_blocked=algebra.lower,
|
|
@@ -114,6 +129,18 @@ def add_acl_to_target(user, target):
|
|
"""
|
|
"""
|
|
ACL tests
|
|
ACL tests
|
|
"""
|
|
"""
|
|
|
|
+def allow_browse_users_list(user):
|
|
|
|
+ if not user.acl['can_browse_users_list']:
|
|
|
|
+ raise PermissionDenied(_("You can't browse users list."))
|
|
|
|
+can_browse_users_list = return_boolean(allow_browse_users_list)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def allow_see_users_online_list(user):
|
|
|
|
+ if not user.acl['can_see_users_online_list']:
|
|
|
|
+ raise PermissionDenied(_("You can't browse users online list."))
|
|
|
|
+can_see_users_online_list = return_boolean(allow_see_users_online_list)
|
|
|
|
+
|
|
|
|
+
|
|
@authenticated_only
|
|
@authenticated_only
|
|
def allow_follow_user(user, target):
|
|
def allow_follow_user(user, target):
|
|
if not user.acl['can_follow_users']:
|
|
if not user.acl['can_follow_users']:
|