steffen: server/kolab-webadmin/kolab-webadmin/www/admin/user user.php, 1.31, 1.32

cvs at intevation.de cvs at intevation.de
Thu Sep 23 13:02:45 CEST 2004


Author: steffen

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

Modified Files:
	user.php 
Log Message:
webgui for user/group specific policies

Index: user.php
===================================================================
RCS file: /kolabrepository/server/kolab-webadmin/kolab-webadmin/www/admin/user/user.php,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -d -r1.31 -r1.32
--- user.php	21 Sep 2004 13:46:17 -0000	1.31
+++ user.php	23 Sep 2004 11:02:43 -0000	1.32
@@ -124,6 +124,19 @@
   return '';
 }
 
+function policy2number( $pol, $default = 3 )
+{
+  // Translate policy to number
+  switch ($pol) {
+  case 'ACT_ALWAYS_ACCEPT': return 0;
+  case 'ACT_ALWAYS_REJECT': return 1;
+  case 'ACT_REJECT_IF_CONFLICTS': return 2;
+  case 'ACT_MANUAL_IF_CONFLICTS': return 3;
+  case 'ACT_MANUAL': return 4;
+  default: return $default;
+  }
+}
+
 function fill_form_for_modify( &$form, $dn, &$ldap_object ) {
   if (is_array($ldap_object['sn'])) $lastname = $ldap_object['sn'][0];
   else $lastname = $ldap_object['sn'];
@@ -164,31 +177,28 @@
 	unset($form->entries['resourceaction']);
   } else {
 	// group or resource
-	switch ($ldap_object['kolabResourceAction'][0]) {
-    case 'ACT_ALWAYS_ACCEPT':
-	  $form->entries['resourceaction']['value'] = 0;
-	  break;
-    case 'ACT_ALWAYS_REJECT':
-	  $form->entries['resourceaction']['value'] = 1;
-	  break;
-    case 'ACT_REJECT_IF_CONFLICTS':
-	  $form->entries['resourceaction']['value'] = 2;
-	  break;
-    case 'ACT_MANUAL_IF_CONFLICTS':
-	  $form->entries['resourceaction']['value'] = 3;
-	  break;
-    case 'ACT_MANUAL':
-	  $form->entries['resourceaction']['value'] = 4;
-	  break;
-    default:
+	$policies = array();
+	for( $i = 0; $i < $ldap_object['kolabResourceAction']['count']; $i++ ) {
+	  $resact = $ldap_object['kolabResourceAction'][$i];
+	  debug("resact=$resact");
+	  if( ereg( '(.*):(.*)', trim($resact), $regs ) ) {
+		$user = trim($regs[1]);
+		$pol  = trim($regs[2]);
+		if( empty($user) ) continue;
+	  } else {
+		$user = 'anyone';
+		$pol = trim($resact);
+	  }
 	  if( $form->entries['accttype']['value'] == 1 ) {
 		// default for groups
-		$form->entries['resourceaAction']['value'] = 3;
+		$pol = policy2number( $pol, 3 );
 	  } else {
 		// default for resources
-		$form->entries['resourceaAction']['value'] = 2;		
+		$pol = policy2number( $pol, 2 );
 	  }
-    }
+	  $policies[$user] = $pol;
+	}
+	$form->entries['resourceaction']['policies'] = $policies;
   }
 
   // visible
@@ -320,15 +330,19 @@
 								 'type' => 'select',
 								 'options' => array( _('User Account'), _('Group Account'), _('Resource Account') ),
 								 'value'   => 0 ),
-		  'resourceaction' => array( 'name' => _('Resource/Group Action'),
-									 'type' => 'select',
-									 'options' => array( _('Always accept'), 
-														 _('Always reject'), 
-														 _('Reject if conflicts'), 
-														 _('Manual if conflicts'),
-														 _('Manual') ),
-									 'value' => 2,
-									 'comment' => _('Only applies to group and resource accounts') ),														 
+		  'resourceaction' => array( 'name' => _('Resource/Group Policies'),
+									 'type' => 'resourcepolicy',
+									 'policies' => array( 'user' => 'anyone', 'policyno' => 2 ),
+									 'comment' => _('Only applies to group and resource accounts') ),
+#		  'resourceaction' => array( 'name' => _('Resource/Group Action'),
+#									 'type' => 'select',
+#									 'options' => array( _('Always accept'), 
+#														 _('Always reject'), 
+#														 _('Reject if conflicts'), 
+#														 _('Manual if conflicts'),
+#														 _('Manual') ),
+#									 'value' => 2,
+#									 'comment' => _('Only applies to group and resource accounts') ),														 
 		  'title_0' => array( 'name' => _('Title') ) );
 $entries['alias'] = array( 'name' => _('Email Aliases'), 
 						   'type' => 'textarea',
@@ -434,13 +448,24 @@
 		 elseif (!empty($_POST[$key])) $ldap_object[$attr] = $_POST[$key];  
 		 else $ldap_object[$attr] = array();
        }
-	   if( 0 <= $_POST['resourceaction'] && $_POST['resourceaction'] < 5  ) {
-		 $ra = array('ACT_ALWAYS_ACCEPT', 'ACT_ALWAYS_REJECT', 'ACT_REJECT_IF_CONFLICTS', 'ACT_MANUAL_IF_CONFLICTS', 'ACT_MANUAL' );
-		 if( $ra[0+$_POST['resourceaction']] ) {
-		   $ldap_object['kolabResourceAction'] = $ra[0+$_POST['resourceaction']];
-		 }
+	   {
+		 // Handle group/resource policies
+		 $i = 0;
+		 $ldap_object['kolabResourceAction'] = array();
+		 while( isset( $_POST['user_resourceaction_'.$i] ) ) {
+		   $user = $_POST['user_resourceaction_'.$i];
+		   $pol  = (int)$_POST['policy_resourceaction_'.$i];
+		   debug("Looking at $user:$pol");
+		   $i++;
+		   if( !empty($user) && 0 <= $pol && $pol < 5  ) {
+			 $ra = array('ACT_ALWAYS_ACCEPT', 'ACT_ALWAYS_REJECT', 'ACT_REJECT_IF_CONFLICTS', 'ACT_MANUAL_IF_CONFLICTS', 'ACT_MANUAL' );
+			 if( $ra[$pol] ) {
+			   $ldap_object['kolabResourceAction'][] = ($user=='anyone'?"":"$user:").$ra[$pol];
+			   print_r($ldap_object['kolabResourceAction']);
+			 }
+		   }
+		 }		 
 	   }
-
 	   $dn_add = "";
 
 	   // kolabdelegate
@@ -467,10 +492,10 @@
 		   }
 		 }
 		 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,';
        }
+	   if( $_POST['accttype'] == 0 ) $dn_accttype='';
+	   else if( $_POST['accttype'] == 1 ) $dn_accttype='cn=groups,';
+	   else if( $_POST['accttype'] == 2 ) $dn_accttype='cn=resources,';
        $domain_dn = $dn_accttype.domain_dn();
 	   
        if ($action == "save") {





More information about the commits mailing list