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