steffen: server/kolab-webadmin/kolab-webadmin/www/admin/user user.php, 1.58, 1.59

cvs at intevation.de cvs at intevation.de
Wed Apr 27 23:40:01 CEST 2005


Author: steffen

Update of /kolabrepository/server/kolab-webadmin/kolab-webadmin/www/admin/user
In directory doto:/tmp/cvs-serv10265/kolab-webadmin/www/admin/user

Modified Files:
	user.php 
Log Message:
Prevent deletion of accounts when they are the last member of a dist. list (Issue607)

Index: user.php
===================================================================
RCS file: /kolabrepository/server/kolab-webadmin/kolab-webadmin/www/admin/user/user.php,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -d -r1.58 -r1.59
--- user.php	9 Apr 2005 08:55:02 -0000	1.58
+++ user.php	27 Apr 2005 21:39:59 -0000	1.59
@@ -718,6 +718,19 @@
    if (!$dn) array_push($errors, _("Error: need dn for delete operation"));
    elseif ($auth->group() != "maintainer" && $auth->group() != "admin") 
      array_push($errors, _("Error: you need administrative permissions to delete users"));
+
+   // Check for distribution lists with only this user as member
+   $ldap->search( $_SESSION['base_dn'], 
+				  '(&(objectClass=kolabGroupOfNames)(member='.$ldap->escape($dn).'))',
+				  array( 'dn', 'cn', 'member' ) );
+   $distlists = $ldap->getEntries();
+   foreach( $distlists as $distlist ) {
+	 if( $distlist['member']['count'] == 1 ) {
+	   $dlcn = $distlist['cn'][0];
+	   $errors[] = _("Account could not be deleted, distribution list '$dlcn' depends on it.");
+	 }
+   }
+
    if( !$errors ) {
 	 if (!$ldap->deleteObject($dn)) {
 	   array_push($errors, _("LDAP Error: could not mark '$dn' for deletion: ").$ldap->error());
@@ -726,6 +739,19 @@
 	   $contenttemplate = 'userdeleted.tpl';
 	 }
    }
+
+   if( $errors ) {
+	 $heading = _('Delete User');
+	 foreach( $form->entries as $k => $v ) {
+	   if( $v['type'] != 'hidden' ) {
+		 $form->entries[$k]['attrs'] = 'readonly';
+	   }
+	 }
+	 fill_form_for_modify( $form, $dn, $ldap_object );
+	 $form->entries['action']['value'] = 'kill';
+	 $form->submittext = _('Delete');
+	 $content = $form->outputForm();
+   }   
    break;
 }
 





More information about the commits mailing list