From 5607ec72f708c79fd4e7a361fcb5cf9160a158fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20Gr=C3=B6ger?= Date: Sat, 28 Dec 2019 23:34:09 +0100 Subject: [PATCH] update userControler, databaseController, ldapControlle and user for locking user --- geruecht/controller/databaseController.py | 16 +++++------ geruecht/controller/ldapController.py | 2 ++ geruecht/controller/userController.py | 13 +++++++-- geruecht/model/user.py | 33 ++++++++++++++++++++++- 4 files changed, 53 insertions(+), 11 deletions(-) diff --git a/geruecht/controller/databaseController.py b/geruecht/controller/databaseController.py index 522f5ac..54f5f15 100644 --- a/geruecht/controller/databaseController.py +++ b/geruecht/controller/databaseController.py @@ -69,13 +69,13 @@ class DatabaseController(metaclass=Singleton): retVal += group return retVal - def insertUser(self, data): + def insertUser(self, user): self.connect() cursor = self.db.cursor() - groups = self._convertGroupToString(data['group']) + groups = self._convertGroupToString(user.group) try: - cursor.execute("insert into user (uid, dn, firstname, lastname, gruppe) VALUES ('{}','{}','{}','{}','{}')".format( - data['uid'], data['dn'], data['givenName'], data['sn'], groups)) + cursor.execute("insert into user (uid, dn, firstname, lastname, gruppe, limit, locked, autoLock) VALUES ('{}','{}','{}','{}','{}',{},{},{})".format( + user.uid, user.dn, user.firstname, user.lastname, groups)) self.db.commit() except Exception as err: self.db.rollback() @@ -83,13 +83,13 @@ class DatabaseController(metaclass=Singleton): raise err self.db.close() - def updateUser(self, data): + def updateUser(self, user): self.connect() cursor = self.db.cursor() - groups = self._convertGroupToString(data['group']) + groups = self._convertGroupToString(user.group) try: - cursor.execute("update user set dn='{}', firstname='{}', lastname='{}', gruppe='{}' where uid='{}'".format( - data['dn'], data['givenName'], data['sn'], groups, data['uid'])) + cursor.execute("update user set dn='{}', firstname='{}', lastname='{}', gruppe='{}, limit={}, locked={}, autoLock={}' where uid='{}'".format( + user.dn, user.firstname, user.lastname, groups, user.limit, user.locked, user.autoLock, user.uid)) self.db.commit() except Exception as err: self.db.rollback() diff --git a/geruecht/controller/ldapController.py b/geruecht/controller/ldapController.py index 059db9b..b543e64 100644 --- a/geruecht/controller/ldapController.py +++ b/geruecht/controller/ldapController.py @@ -36,6 +36,8 @@ class LDAPController(metaclass=Singleton): for k,v in retVal.items(): retVal[k] = v[0].decode('utf-8') retVal['dn'] = self.dn + retVal['firstname'] = retVal['givenName'] + retVal['lastname'] = retVal['sn'] return retVal diff --git a/geruecht/controller/userController.py b/geruecht/controller/userController.py index 6584ef8..21ee2f5 100644 --- a/geruecht/controller/userController.py +++ b/geruecht/controller/userController.py @@ -1,4 +1,5 @@ from . import LOGGER, Singleton, db, ldapController as ldap +from geruecht.model.user import User from geruecht.exceptions import PermissionDenied class UserController(metaclass=Singleton): @@ -6,6 +7,12 @@ class UserController(metaclass=Singleton): def __init__(self): pass + def updateConfig(self, username, data): + user = self.getUser(username) + user.updateData(data) + db.updateUser(user) + return self.getUser(username) + def addAmount(self, username, amount, year, month): user = self.getUser(username) user.addAmount(amount, year=year, month=month) @@ -31,9 +38,11 @@ class UserController(metaclass=Singleton): user_data = ldap.getUserData(username) user_data['group'] = groups if user is None: - db.insertUser(user_data) + user = User(user_data) + db.insertUser(user) else: - db.updateUser(user_data) + user.updateData(user_data) + db.updateUser(user) user = db.getUser(username) return user diff --git a/geruecht/model/user.py b/geruecht/model/user.py index 70dde36..d709939 100644 --- a/geruecht/model/user.py +++ b/geruecht/model/user.py @@ -26,6 +26,18 @@ class User(): self.firstname = data['firstname'] self.lastname = data['lastname'] self.group = data['gruppe'] + if 'limit' in data: + self.limit = data['limit'] + else: + self.limit = 4200 + if 'locked' in data: + self.locked = bool(data['locked']) + else: + self.locked = False + if 'autoLock' in data: + self.autoLock = bool(data['autoLock']) + else: + self.autoLock = True if type(data['gruppe']) == list: self.group = data['gruppe'] elif type(data['gruppe']) == str: @@ -33,6 +45,22 @@ class User(): if 'creditLists' in data: self.geruechte = data['creditLists'] + def updateData(self, data): + if 'dn' in data: + self.dn = data['dn'] + if 'firstname' in data: + self.firstname = data['firstname'] + if 'lastname' in data: + self.lastname = data['lastname'] + if 'gruppe' in data: + self.group = data['gruppe'] + if 'limit' in data: + self.limit = data['limit'] + if 'locked' in data: + self.locked = bool(data['locked']) + if 'autoLock' in data: + self.autoLock = bool(data['autoLock']) + def initGeruechte(self, creditLists): if type(creditLists) == list: self.geruechte = creditLists @@ -166,7 +194,10 @@ class User(): "firstname": self.firstname, "lastname": self.lastname, "group": self.group, - "username": self.uid + "username": self.uid, + "locked": self.locked, + "autoLock": self.autoLock, + "limit": self.limit } return dic