From 0ecd1c985bf758eebdce1ad2a83992b06b0d5c22 Mon Sep 17 00:00:00 2001 From: Alon Levy Date: Sun, 1 Mar 2015 20:47:45 +0200 Subject: server/rz_user_db: add matching user_rm_role plus valid_role, admin & user only valid roles for now --- src/server/rz_user_db.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/server') diff --git a/src/server/rz_user_db.py b/src/server/rz_user_db.py index 56829fc5..84eb1515 100644 --- a/src/server/rz_user_db.py +++ b/src/server/rz_user_db.py @@ -134,10 +134,20 @@ class User_DB(object): del self.persistent_data_store[uid] def user_add_role(self, uid, role): + if not self.valid_role(uid, role): + raise Exception("invalid role %s for user %s" % (role, uid)) u = self.persistent_data_store[uid] u.role_set.append(role) self.persistent_data_store[uid] = u + def user_rm_role(self, uid, role): + u = self.persistent_data_store[uid] + i = u.role_set.index(role) + if -1 == i: + return + del u.role_set[i] + self.persistent_data_store[uid] = u + def user_has_role(self, uid, role): """ @return: True if user roles contain passed role @@ -146,6 +156,12 @@ class User_DB(object): u = self.persistent_data_store[uid] return role in u.role_set + def valid_role(self, uid, role): + """ + @return: True if role is appropriate for uid. Currently ignores uid + """ + return role in ['admin', 'user'] + def validate_login(self, email_address, pw_hash): _, u_account = self.__lookup_user__by_email_address(email_address) existing_pw_hash = u_account.pw_hash -- cgit v1.3.1