aboutsummaryrefslogtreecommitdiffstats
path: root/server/object.py
diff options
context:
space:
mode:
Diffstat (limited to 'server/object.py')
-rw-r--r--server/object.py25
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