From b9bc4eaa3d73977d269161662d8a11a210ef79df Mon Sep 17 00:00:00 2001 From: Guillaume Horel Date: Fri, 21 Jan 2011 01:06:44 -0500 Subject: Added key management to the component server --- server/object.py | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'server/object.py') 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 -- cgit v1.2.3-70-g09d2