User specific settings to be used for custom language configuration
This commit is contained in:
parent
192e606fea
commit
c105ffec18
1 changed files with 39 additions and 3 deletions
|
|
@ -36,6 +36,12 @@ class UserManager(object):
|
|||
def changeUserPassword(self, username, password):
|
||||
pass
|
||||
|
||||
def getUserSetting(self, username, key):
|
||||
return None
|
||||
|
||||
def changeUserSetting(self, username, key, value):
|
||||
pass
|
||||
|
||||
def removeUser(self, username):
|
||||
pass
|
||||
|
||||
|
|
@ -89,7 +95,8 @@ class FilebasedUserManager(UserManager):
|
|||
"password": user._passwordHash,
|
||||
"active": user._active,
|
||||
"roles": user._roles,
|
||||
"apikey": user._apikey
|
||||
"apikey": user._apikey,
|
||||
"settings": user._settings
|
||||
}
|
||||
|
||||
with open(self._userfile, "wb") as f:
|
||||
|
|
@ -159,6 +166,24 @@ class FilebasedUserManager(UserManager):
|
|||
self._dirty = True
|
||||
self._save()
|
||||
|
||||
def changeUserSetting(self, username, key, value):
|
||||
if not username in self._users.keys():
|
||||
raise UnknownUser(username)
|
||||
|
||||
user = self._users[username]
|
||||
current = user.get_setting(key)
|
||||
if not current or current != value:
|
||||
user.set_setting(key, value)
|
||||
self._dirty = True
|
||||
self._save()
|
||||
|
||||
def getUserSetting(self, username, key):
|
||||
if not username in self._users.keys():
|
||||
raise UnknownUser(username)
|
||||
|
||||
user = self._users[username]
|
||||
return user.get_setting(key)
|
||||
|
||||
def generateApiKey(self, username):
|
||||
if not username in self._users.keys():
|
||||
raise UnknownUser(username)
|
||||
|
|
@ -223,20 +248,25 @@ class UnknownRole(Exception):
|
|||
##~~ User object
|
||||
|
||||
class User(UserMixin):
|
||||
def __init__(self, username, passwordHash, active, roles, apikey=None):
|
||||
def __init__(self, username, passwordHash, active, roles, apikey=None, settings=None):
|
||||
self._username = username
|
||||
self._passwordHash = passwordHash
|
||||
self._active = active
|
||||
self._roles = roles
|
||||
self._apikey = apikey
|
||||
|
||||
if not settings:
|
||||
settings = dict()
|
||||
self._settings = settings
|
||||
|
||||
def asDict(self):
|
||||
return {
|
||||
"name": self._username,
|
||||
"active": self.is_active(),
|
||||
"admin": self.is_admin(),
|
||||
"user": self.is_user(),
|
||||
"apikey": self._apikey
|
||||
"apikey": self._apikey,
|
||||
"settings": self._settings
|
||||
}
|
||||
|
||||
def check_password(self, passwordHash):
|
||||
|
|
@ -257,6 +287,12 @@ class User(UserMixin):
|
|||
def is_admin(self):
|
||||
return "admin" in self._roles
|
||||
|
||||
def get_setting(self, key):
|
||||
return self._settings[key] if key in self._settings else None
|
||||
|
||||
def set_setting(self, key, value):
|
||||
self._settings[key] = value
|
||||
|
||||
##~~ DummyUser object to use when accessControl is disabled
|
||||
|
||||
class DummyUser(User):
|
||||
|
|
|
|||
Loading…
Reference in a new issue