Make permissions a setter

This is better because it reuses native constructs of the language,
rather than half reimplementing them ourselves.
This commit is contained in:
Chris Hill-Scott
2019-06-05 11:13:42 +01:00
parent 0be359b678
commit 8492496c34
+7 -10
View File
@@ -53,7 +53,7 @@ class User(JSONModel, UserMixin):
def __init__(self, _dict): def __init__(self, _dict):
super().__init__(_dict) super().__init__(_dict)
self._set_permissions(_dict.get('permissions', {})) self.permissions = _dict.get('permissions', {})
self.max_failed_login_count = current_app.config['MAX_FAILED_LOGIN_COUNT'] self.max_failed_login_count = current_app.config['MAX_FAILED_LOGIN_COUNT']
@classmethod @classmethod
@@ -86,7 +86,12 @@ class User(JSONModel, UserMixin):
return None return None
return user return user
def _set_permissions(self, permissions_by_service): @property
def permissions(self):
return self._permissions
@permissions.setter
def permissions(self, permissions_by_service):
""" """
Permissions is a dict {'service_id': ['permission a', 'permission b', 'permission c']} Permissions is a dict {'service_id': ['permission a', 'permission b', 'permission c']}
@@ -174,14 +179,6 @@ class User(JSONModel, UserMixin):
super(User, self).is_authenticated super(User, self).is_authenticated
) )
@property
def permissions(self):
return self._permissions
@permissions.setter
def permissions(self, permissions):
raise AttributeError("Read only property")
def has_permissions(self, *permissions, restrict_admin_usage=False): def has_permissions(self, *permissions, restrict_admin_usage=False):
unknown_permissions = set(permissions) - all_permissions unknown_permissions = set(permissions) - all_permissions
if unknown_permissions: if unknown_permissions: