diff options
Diffstat (limited to 'server/object.py')
| -rw-r--r-- | server/object.py | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/server/object.py b/server/object.py index 73bd96e..2c1692a 100644 --- a/server/object.py +++ b/server/object.py @@ -36,22 +36,34 @@ class Object: def get_permission(self, user): file = open(self.path + 'permissions', 'r') for line in file: - name, sep, perm = line.rstrip('\n').partition(' ') + name, perm, None = line.split() if name == user: return int(perm) return 0 - + + def get_key(self, user): + file = open(self.path + 'permissions', 'r') + for line in file: + name, perm, key = line.split() + if name == user: + if not int(perm) & READ: + logging.error("User {} doesn't have read access to object {}" + .format(user, self.hash)) + raise PermissionError + return key + return 0 + def get_child_list(self, user): perm = self.get_permission(user) - if not perm & LIST : + if not perm & LIST: logging.error("User {} doesn't have the list permission for object {}" .format(user, self.hash)) raise PermissionError file = open(self.path + "childs", 'r') result = [] - for line in file : + for line in file: name = line.rstrip('\n') try: child = Object(self.owner, name) @@ -60,15 +72,16 @@ class Object: self.owner)) else: permission = child.get_permission(user) + key = child.get_key(user) if permission > 0: - result.append((name, permission)) + result.append((name, permission, key)) file.close() return result def get_content(self, user): perm = self.get_permission(user) - if not perm & READ : + if not perm & READ: logging.error("User {} doesn't have read access to object {}" .format(user, self.hash)) raise PermissionError |
