From 72c20107235ec73cdce25ec7e32b15a26dab3326 Mon Sep 17 00:00:00 2001
From: Julian Rother <julianr@fsmpi.rwth-aachen.de>
Date: Tue, 23 Feb 2021 19:39:07 +0100
Subject: [PATCH] Replace custom code with ldapalchemys 1-n-relationships

---
 deps/ldapalchemy      |  2 +-
 uffd/mfa/models.py    | 10 ++--------
 uffd/oauth2/models.py | 18 +++---------------
 3 files changed, 6 insertions(+), 24 deletions(-)

diff --git a/deps/ldapalchemy b/deps/ldapalchemy
index 6a0b85f2..db135ec7 160000
--- a/deps/ldapalchemy
+++ b/deps/ldapalchemy
@@ -1 +1 @@
-Subproject commit 6a0b85f2c6a11951d99d4b4e84b1df992580d964
+Subproject commit db135ec7a4940a384e82a4500cfb0e73ecd2f557
diff --git a/uffd/mfa/models.py b/uffd/mfa/models.py
index 92d20cfb..89879889 100644
--- a/uffd/mfa/models.py
+++ b/uffd/mfa/models.py
@@ -13,6 +13,7 @@ import crypt
 
 from flask import request, current_app
 from sqlalchemy import Column, Integer, Enum, String, DateTime, Text
+from ldapalchemy.dbutils import DBRelationship
 
 from uffd.database import db
 from uffd.user.models import User
@@ -29,6 +30,7 @@ class MFAMethod(db.Model):
 	created = Column(DateTime())
 	name = Column(String(128))
 	dn = Column(String(128))
+	user = DBRelationship('dn', User, backref='mfa_methods')
 
 	__mapper_args__ = {
 		'polymorphic_on': type,
@@ -39,14 +41,6 @@ class MFAMethod(db.Model):
 		self.name = name
 		self.created = datetime.datetime.now()
 
-	@property
-	def user(self):
-		return User.query.get(self.dn)
-
-	@user.setter
-	def user(self, new_user):
-		self.dn = new_user.dn
-
 class RecoveryCodeMethod(MFAMethod):
 	code_salt = Column('recovery_salt', String(64))
 	code_hash = Column('recovery_hash', String(256))
diff --git a/uffd/oauth2/models.py b/uffd/oauth2/models.py
index 2900367c..162ac321 100644
--- a/uffd/oauth2/models.py
+++ b/uffd/oauth2/models.py
@@ -1,5 +1,6 @@
 from flask import current_app
 from sqlalchemy import Column, Integer, String, DateTime, Text
+from ldapalchemy.dbutils import DBRelationship
 
 from uffd.database import db
 from uffd.user.models import User
@@ -36,14 +37,7 @@ class OAuth2Grant(db.Model):
 	id = Column(Integer, primary_key=True)
 
 	user_dn = Column(String(128))
-
-	@property
-	def user(self):
-		return User.query.get(self.user_dn)
-
-	@user.setter
-	def user(self, newuser):
-		self.user_dn = newuser.dn
+	user = DBRelationship('user_dn', User, backref='oauth2_grants')
 
 	client_id = Column(String(40))
 
@@ -76,13 +70,7 @@ class OAuth2Token(db.Model):
 	id = Column(Integer, primary_key=True)
 
 	user_dn = Column(String(128))
-	@property
-	def user(self):
-		return User.query.get(self.user_dn)
-
-	@user.setter
-	def user(self, newuser):
-		self.user_dn = newuser.dn
+	user = DBRelationship('user_dn', User, backref='oauth2_tokens')
 
 	client_id = Column(String(40))
 
-- 
GitLab