diff options
| author | Alon Levy <alon@pobox.com> | 2015-03-01 20:47:45 +0200 |
|---|---|---|
| committer | Alon Levy <alon@pobox.com> | 2015-03-01 20:47:45 +0200 |
| commit | 0ecd1c985bf758eebdce1ad2a83992b06b0d5c22 (patch) | |
| tree | 1911656b0e79e064a3ffb11239190c09d7f1259c /src/server | |
| parent | b1d20b3ceed90fdd9a33aae99a744f2818bb15ed (diff) | |
server/rz_user_db: add matching user_rm_role plus valid_role, admin & user only valid roles for now
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/rz_user_db.py | 16 |
1 files changed, 16 insertions, 0 deletions
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 |
