From 8ae17912b75d169153e86d9c194a9752c33fe417 Mon Sep 17 00:00:00 2001
From: Peter Hormanns <peter.hormanns@hostsharing.net>
Date: Wed, 27 Jul 2011 18:24:38 +0200
Subject: [PATCH] delete pac domains

---
 hsarback/src/de/hsadmin/mods/pac/PacProcessorFactory.java |    6 +++++-
 hsarback/src/de/hsadmin/mods/pac/PacModuleImpl.java       |   28 ++++++++++++++++++++++++++++
 2 files changed, 33 insertions(+), 1 deletions(-)

diff --git a/hsarback/src/de/hsadmin/mods/pac/PacModuleImpl.java b/hsarback/src/de/hsadmin/mods/pac/PacModuleImpl.java
index b5e0e38..ea46170 100644
--- a/hsarback/src/de/hsadmin/mods/pac/PacModuleImpl.java
+++ b/hsarback/src/de/hsadmin/mods/pac/PacModuleImpl.java
@@ -114,5 +114,33 @@
 			throws HSAdminException {
 		throw new AuthorisationException(getLoginUser(), "update", existingEntity);
 	}
+
+	@Override
+	public void delete(AbstractEntity existingEntity) throws HSAdminException {
+		EntityManager em = getTransaction().getEntityManager();
+		Pac pac = (Pac) existingEntity;
+		Date dateCancelled = pac.getCancelled();
+		if (dateCancelled == null || dateCancelled.getTime() > System.currentTimeMillis()) {
+			throw new AuthorisationException(getLoginUser(), "delete", existingEntity);
+		}
+		GenericModuleImpl helperModule = new GenericModuleImpl(getTransaction());
+		
+		Query qDoms = em.createQuery("SELECT dom FROM Domains dom WHERE dom.user.pac.name = :pac");
+		qDoms.setParameter("pac", pac.getName());
+		List<?> domsList = qDoms.getResultList();
+		for (Object o : domsList) {
+			if (o instanceof Domain) {
+				helperModule.delete((AbstractEntity) o);
+			}
+		}
+		
+		UnixUser admin = pac.owningUser(em);
+		for (UnixUser user : pac.getUnixUser()) {
+			if (admin.getId() != user.getId()) {
+				helperModule.delete(user);
+			}
+		}
+		super.delete(existingEntity);
+	}
 	
 }
diff --git a/hsarback/src/de/hsadmin/mods/pac/PacProcessorFactory.java b/hsarback/src/de/hsadmin/mods/pac/PacProcessorFactory.java
index 0492aeb..8cc9406 100644
--- a/hsarback/src/de/hsadmin/mods/pac/PacProcessorFactory.java
+++ b/hsarback/src/de/hsadmin/mods/pac/PacProcessorFactory.java
@@ -77,7 +77,7 @@
 				createNetworkInterfacesProc(hiveValues, pacValuesList), 
 				createSudouersProc(hiveValues, pacValuesList), 
 				createProftpdConfProc(hiveValues, pacValuesList), 
-				createMakePacDirectoryStructure(unixUser));
+				createDelUserProc(unixUser.getName()));
 	}
 
 	private TemplateProcessor createEtcHostsProc(
@@ -113,6 +113,10 @@
 						+ ":" + unixUser.getShell() + "\n");
 	}
 
+	private ShellProcessor createDelUserProc(String pacName) {
+		return new ShellProcessor("deluser --remove-all-files " + pacName);
+	}
+
 	private ShellProcessor createMakePacDirectoryStructure(UnixUser unixUser) {
 		return new ShellProcessor("chmod 711 " + unixUser.getHomedir() + " && " +
 				"su -l " + unixUser.getName() + " -s \"/bin/bash\" -c \"mkdir -p " +

--
Gitblit v1.9.3