def _delete_string(self, key, value):
return self._delete_strings(key, [value,])
+ def _delete_dn(self, dn):
+ logging.debug("Deleting %s" % dn)
+
+ # Authenticate before performing any delete operations
+ self.accounts._authenticate()
+
+ # Run delete operation
+ self.ldap.delete_s(dn)
+
@property
def objectclasses(self):
return self._get_strings("objectClass")
# Delete cached attributes
self.memcache.delete("accounts:%s:attrs" % self.dn)
+ @property
+ def kerberos_principal_dn(self):
+ return "krbPrincipalName=%s@IPFIRE.ORG,cn=IPFIRE.ORG,cn=krb5,dc=ipfire,dc=org" % self.uid
+
@lazy_property
def kerberos_attributes(self):
res = self.backend.accounts._query(
if not self.can_be_deleted_by(user):
raise RuntimeError("Cannot delete user %s" % self)
+ logging.info("Deleting user %s" % self)
+
async with asyncio.TaskGroup() as tasks:
t = datetime.datetime.now()
# XXX Delete on Discourse
- # XXX Delete on LDAP
+ # Delete on LDAP
+ self._delete()
def can_be_deleted_by(self, user):
"""
# Looks okay
return True
+ def _delete(self):
+ """
+ Deletes this object from LDAP
+ """
+ # Delete the Kerberos Principal
+ self._delete_dn(self.kerberos_principal_dn)
+
+ # Delete this object
+ self._delete_dn(self.dn)
+
# Nickname
def get_nickname(self):