steffen: server/kolab-webadmin/kolab-webadmin/www/admin/user index.php, 1.7, 1.8 user.php, 1.38, 1.39

cvs at intevation.de cvs at intevation.de
Tue Oct 12 01:32:51 CEST 2004


Author: steffen

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

Modified Files:
	index.php user.php 
Log Message:
Fix for issue451 (internal user/group/resource confusion)

Index: index.php
===================================================================
RCS file: /kolabrepository/server/kolab-webadmin/kolab-webadmin/www/admin/user/index.php,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- index.php	20 Aug 2004 02:10:01 -0000	1.7
+++ index.php	11 Oct 2004 23:32:49 -0000	1.8
@@ -93,13 +93,25 @@
         $a = strlen($sn);
         $b = strlen($cn);
         $fn = substr($cn, 0, $b - $a);
+		$dncomp = split( ',', $dn );
+		if( in_array('cn=groups',$dncomp) ) {
+		  $type = 'G';
+		} else if( in_array('cn=resources',$dncomp) ) {
+		  $type = 'R';
+		} else if( in_array('cn=internal',$dncomp) ) {
+		  $type = 'I';
+		} else {
+		  $type = 'U';
+		}
+
 		// skip admins and maintainers
 		if( !array_key_exists( $dn, $privmembers ) ) {
 		  $entries[] = array( 'dn' => $dn,
 							  'sn' => $sn,
 							  'fn' => $fn,
+							  'type' => $type,
 							  'mail' => $mail,
-                                                          'uid' => $uid,
+							  'uid' => $uid,
 							  'deleted' => $deleted );
 		}
 		$entry = ldap_next_entry( $ldap->connection,$entry );

Index: user.php
===================================================================
RCS file: /kolabrepository/server/kolab-webadmin/kolab-webadmin/www/admin/user/user.php,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -d -r1.38 -r1.39
--- user.php	11 Oct 2004 13:37:09 -0000	1.38
+++ user.php	11 Oct 2004 23:32:49 -0000	1.39
@@ -138,6 +138,7 @@
 }
 
 function fill_form_for_modify( &$form, $dn, &$ldap_object ) {
+  global $auth;
   if (is_array($ldap_object['sn'])) $lastname = $ldap_object['sn'][0];
   else $lastname = $ldap_object['sn'];
   if (is_array($ldap_object['cn'])) $cn = $ldap_object['cn'][0];
@@ -163,13 +164,15 @@
   // accttype
   $dncomp = split( ',', $dn );
   if( in_array('cn=groups',$dncomp) ) {
-	$form->entries['accttype']['value'] = 1;
+	$form->entries['accttype']['value'] = 2;
   } else if( in_array('cn=resources',$dncomp) ) {
-	$form->entries['accttype']['value'] = 2;	
+	$form->entries['accttype']['value'] = 3;	
+  } else if( in_array('cn=internal',$dncomp) ) {
+	$form->entries['accttype']['value'] = 1;	
   } else {
 	$form->entries['accttype']['value'] = 0;
   }
-  $form->entries['accttype']['attrs'] = 'readonly';
+  if( $auth->group() == 'user' ) $form->entries['accttype']['attrs'] = 'readonly';
 
   // Automatic invitation handling
   $policies = array();
@@ -195,17 +198,6 @@
   }
   $form->entries['resourceaction']['policies'] = $policies;  
 
-  // visible
-  $internaldn = 'cn=internal,'.domain_dn();
-  debug("<br/>internaldn=$internaldn");
-  debug("<br/>ldap_object['dn']=$dn");
-  debug("<br/>substr=".substr( $dn, strlen($dn)-strlen( $internaldn ) ));
-  if( substr( $dn, strlen($dn)-strlen( $internaldn ) ) === $internaldn ) {
-	$form->entries['visible']['value'] = false;
-  } else {
-	$form->entries['visible']['value'] = true;
-  }
-
   foreach( array( 'title', 'o', 'ou', 'roomNumber', 'street', 
 				  'postOfficeBox', 'postalCode', 'l', 'c', 
 				  'telephoneNumber', 'facsimileTelephoneNumber' ) as $attr ) {
@@ -321,9 +313,10 @@
 								 'comment' => $comment_kolabhomeserver,
 								 'value' => $_SESSION['fqdnhostname'] ),
 		  'accttype' => array( 'name' => _('Account Type'),
-								 'type' => 'select',
-								 'options' => array( _('User Account'), _('Group Account'), _('Resource Account') ),
-								 'value'   => 0 ),
+							   'type' => 'select',
+							   'options' => array( _('User Account'), _('Internal User Account'), _('Group Account'), _('Resource Account') ),
+							   'value'   => 0,
+							   'comment' => _('NOTE: An internal user is a user that will not be visible in the address book')),
 		  'resourceaction' => array( 'name' => _('Resource/Group Policies'),
 									 'type' => 'resourcepolicy',
 									 'policies' => array(array( 'user' => 'anyone', 'policyno' => 4 )),
@@ -348,10 +341,6 @@
 $entries['c_0'] = array( 'name' => _('Country') );
 $entries['telephoneNumber_0'] = array( 'name' => _('Telephone Number') );
 $entries['facsimileTelephoneNumber_0'] = array( 'name' => _('Fax Number') );
-$entries['visible'] = array( 'name' => _('Addressbook'),
-			     'type' => 'checkbox',
-			     'value' => true,
-			     'comment' => _('Check here to make this users address <br> visible in the address book'));
 if( $auth->group() == "admin" || $auth->group() == "maintainer" ) {
   $entries['cyrus-userquota'] = array( 'name' => _('User Quota in MBytes'),
 				 'comment' => _('Leave blank for unlimited') );
@@ -395,7 +384,7 @@
        if( !empty( $_POST['password_0'] ) ) {
 		 $ldap_object['userPassword'] = '{sha}'.base64_encode( pack('H*', 
 																	sha1( $_POST['password_0'])));
-		 if( isset( $_POST['accttype'] ) && $_POST['accttype'] > 0 ) {
+		 if( isset( $_POST['accttype'] ) && $_POST['accttype'] > 1 ) {
 		   // We have a group or resource, create encrypted pw
 		   $pubkeydata=file_get_contents("$kolab_prefix/etc/kolab/res_pub.pem" );		   
 		   $pkey = openssl_pkey_get_public( $pubkeydata );
@@ -468,11 +457,6 @@
 		 $ldap_object['alias'] = array_unique( array_filter( array_map( 'trim', preg_split( '/\n/', $_POST['alias'] ) ), 'strlen') );	   
 		 if( !$ldap_object['alias'] && $action == 'firstsave' ) unset($ldap_object['alias']);
 
-		 // visible
-		 if (!empty($_POST['visible']) && $_POST['visible'] == "on") 
-		   $visible = true;
-		 else $visible = false;
-
 		 // userquota
 		 if( isset( $_POST['cyrus-userquota'] ) ) {
 		   $ldap_object['cyrus-userquota'] = trim($_POST['cyrus-userquota']);
@@ -480,21 +464,17 @@
 			 $ldap_object['cyrus-userquota'] = array();
 		   }
 		 }
-		 if (!$visible) $dn_add = ",cn=internal";		
        }
 	   if( $_POST['accttype'] == 0 ) $dn_accttype='';
-	   else if( $_POST['accttype'] == 1 ) $dn_accttype='cn=groups,';
-	   else if( $_POST['accttype'] == 2 ) $dn_accttype='cn=resources,';
+	   else if( $_POST['accttype'] == 1 ) $dn_accttype='cn=internal,';
+	   else if( $_POST['accttype'] == 2 ) $dn_accttype='cn=groups,';
+	   else if( $_POST['accttype'] == 3 ) $dn_accttype='cn=resources,';
        $domain_dn = $dn_accttype.domain_dn();
 	   
        if ($action == "save") {
 		 if (!$errors) {
 		   if (!empty($ldap_object['cn'])) $newdn = "cn=".$ldap_object['cn'].",".$domain_dn;
 		   else $newdn = $dn;
-		   if (!$visible && !strstr($newdn,$dn_add)) {
-			 list($cn,$rest) = split(',', $newdn, 2); 
-			 $newdn = $cn.$dn_add.','.$rest;
-		   } 
 		   if (strcmp($dn,$newdn) != 0) {
 			 if (($result=ldap_read($ldap->connection,$dn,"(objectclass=*)")) &&
 				 ($entry=ldap_first_entry($ldap->connection,$result)) &&
@@ -550,7 +530,6 @@
 		 $form->setValues();
 		 $form->entries['mail_0']['attrs'] = 'readonly';
 		 $form->entries['kolabhomeserver']['attrs'] = 'readonly';
-		 $form->entries['accttype']['attrs'] = 'readonly';
 		 $form->entries['action']['value'] = 'save';
 		 $form->entries['dn'] = array( 'name' => 'dn',
 									   'type' => 'hidden',





More information about the commits mailing list