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 @@ public class PacModuleImpl extends AbstractModuleImpl { 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 @@ public class PacProcessorFactory implements EntityProcessorFactory { createNetworkInterfacesProc(hiveValues, pacValuesList), createSudouersProc(hiveValues, pacValuesList), createProftpdConfProc(hiveValues, pacValuesList), - createMakePacDirectoryStructure(unixUser)); + createDelUserProc(unixUser.getName())); } private TemplateProcessor createEtcHostsProc( @@ -113,6 +113,10 @@ public class PacProcessorFactory implements EntityProcessorFactory { + ":" + 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 " +