Added a functionality : choice of secondary groups
This commit is contained in:
parent
c15cabb020
commit
1bd0200c73
|
@ -38,6 +38,7 @@ if (isset($_SESSION['login']))
|
||||||
include EVOADMIN_BASE . 'debut.php';
|
include EVOADMIN_BASE . 'debut.php';
|
||||||
|
|
||||||
$rdn = $_SESSION['rdn'];
|
$rdn = $_SESSION['rdn'];
|
||||||
|
$group_dn = "ou=group,".LDAP_BASE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Account modification
|
* Account modification
|
||||||
|
@ -120,6 +121,44 @@ if (isset($_SESSION['login']))
|
||||||
$new["shadowLastChange"] = floor(strtotime("now")/(3600*24));
|
$new["shadowLastChange"] = floor(strtotime("now")/(3600*24));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if (($conf['admin']['what'] == 2) || ($conf['admin']['what'] == 3)) {
|
||||||
|
|
||||||
|
$ldapconn = Ldap::lda_connect(LDAP_ADMIN_DN,LDAP_ADMIN_PASS);
|
||||||
|
|
||||||
|
$dn = $group_dn;
|
||||||
|
$filter = "(memberUid=$uid)";
|
||||||
|
$attr = array("cn");
|
||||||
|
|
||||||
|
$sr=ldap_search($ldapconn, $dn, $filter, $attr);
|
||||||
|
$result = ldap_get_entries($ldapconn, $sr);
|
||||||
|
$arraycn = array();
|
||||||
|
|
||||||
|
for ($i=0; $i < $result["count"] ; $i++)
|
||||||
|
{
|
||||||
|
$arraycn[] = $result[$i]["cn"][0];
|
||||||
|
}
|
||||||
|
|
||||||
|
if((isset($_POST['smbgroupsecondaire']) && !empty($_POST['smbgroupsecondaire'])) || (isset($_POST['smbgroupsecondaire']) == NULL)){
|
||||||
|
if ($_POST['smbgroupsecondaire'] == NULL ){
|
||||||
|
$arrayGroupes = [];
|
||||||
|
if ($arrayGroupes != $arraycn)
|
||||||
|
{
|
||||||
|
$new2["cntosuppr"] = array_diff($arraycn, $arrayGroupes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$arrayGroupes = $_POST['smbgroupsecondaire'];
|
||||||
|
foreach($arrayGroupes as $nameGroupe){
|
||||||
|
$arrayCnNew[] = $nameGroupe;
|
||||||
|
}
|
||||||
|
if ($arrayCnNew != $arraycn)
|
||||||
|
{
|
||||||
|
$new2["cntoadd"] = array_diff($arrayCnNew, $arraycn);
|
||||||
|
$new2["cntosuppr"] = array_diff($arraycn, $arrayCnNew);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$postisactive = (isset($_POST['isactive']) ? 'TRUE' : 'FALSE');
|
$postisactive = (isset($_POST['isactive']) ? 'TRUE' : 'FALSE');
|
||||||
|
@ -225,20 +264,37 @@ if (isset($_SESSION['login']))
|
||||||
}
|
}
|
||||||
|
|
||||||
// if $new not null, set modification
|
// if $new not null, set modification
|
||||||
if ( (isset($new)) && ($new != NULL) ) {
|
if ((isset($new)) || (isset($new2))) {
|
||||||
$sr=ldap_modify($ldapconn,"uid=" .$uid. ",".$rdn,$new);
|
|
||||||
|
|
||||||
// Si LDAP est content, c'est bon :)
|
if ((isset($new)))
|
||||||
if ( $sr ) {
|
{
|
||||||
print "<p class='strong'>Modifications effectuées.</p>";
|
$sr=ldap_modify($ldapconn,"uid=" .$uid. ",".$rdn,$new);
|
||||||
print "<a href='compte.php?view=$uid'>Voir le compte modifié</a>";
|
|
||||||
} else {
|
|
||||||
print "<p class='error'>Erreur, envoyez le message d'erreur
|
|
||||||
suivant à votre administrateur :</p>";
|
|
||||||
var_dump($new);
|
|
||||||
Evolog::log("Modify error of $uid by $login");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(count($new2["cntoadd"]) > 0)
|
||||||
|
{
|
||||||
|
foreach($new2["cntoadd"] as $nameGroupe){
|
||||||
|
$entry_groupe["memberUid"] = $uid;
|
||||||
|
$addGroupe = ldap_mod_add($ldapconn, "cn=".$nameGroupe.",".$group_dn, $entry_groupe);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(count($new2["cntosuppr"]) > 0)
|
||||||
|
{
|
||||||
|
foreach($new2["cntosuppr"] as $nameGroupe){
|
||||||
|
$remove_groupe["memberUid"] = $uid;
|
||||||
|
$rmGroupe = ldap_mod_del($ldapconn, "cn=".$nameGroupe.",".$group_dn, $remove_groupe);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Si LDAP est content, c'est bon :)
|
||||||
|
if (!$sr && !$addGroupe && !$rmGroupe) {
|
||||||
|
print "<p class='error'>Erreur, envoyez le message d'erreur
|
||||||
|
suivant à votre administrateur :</p>";
|
||||||
|
Evolog::log("Modify error of $uid by $login");
|
||||||
|
} else {
|
||||||
|
print "<p class='strong'>Modifications effectuées.</p>";
|
||||||
|
print "<a href='compte.php?view=$uid'>Voir le compte modifié</a>";
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
print "<p class='strong'>Aucune modification nécessaire.</p>";
|
print "<p class='strong'>Aucune modification nécessaire.</p>";
|
||||||
}
|
}
|
||||||
|
@ -310,6 +366,13 @@ if (isset($_SESSION['login']))
|
||||||
|
|
||||||
// only for samba mode
|
// only for samba mode
|
||||||
if (($conf['admin']['what'] == 2) || ($conf['admin']['what'] == 3)) {
|
if (($conf['admin']['what'] == 2) || ($conf['admin']['what'] == 3)) {
|
||||||
|
$dn = $group_dn;
|
||||||
|
$filter = "(memberUid=$uid)";
|
||||||
|
$attr = array("cn");
|
||||||
|
|
||||||
|
$sr=ldap_search($ldapconn, $dn, $filter, $attr);
|
||||||
|
$result = ldap_get_entries($ldapconn, $sr);
|
||||||
|
$arraycn = array();
|
||||||
|
|
||||||
print "<tr><td colspan='2'>";
|
print "<tr><td colspan='2'>";
|
||||||
print "<p class='italic'>Modification pour Samba</p>";
|
print "<p class='italic'>Modification pour Samba</p>";
|
||||||
|
@ -328,8 +391,26 @@ if (isset($_SESSION['login']))
|
||||||
</td>
|
</td>
|
||||||
</tr>';
|
</tr>';
|
||||||
|
|
||||||
print "<tr><td align='right'>Groupe Samba :</td>
|
print "<tr><td align='right'>Groupe Samba primaire :</td>
|
||||||
<td align='left'>$sambagroup</td></tr>\n";
|
<td align='left'>$sambagroup</td></tr>\n";
|
||||||
|
print '<tr><td align="right">Groupe Samba secondaire :</td>
|
||||||
|
<td align="left"><select style="margin-top:5px;" name="smbgroupsecondaire[]" multiple size=6>';
|
||||||
|
|
||||||
|
$sambagroups = getsambagroups('smb');
|
||||||
|
foreach ($sambagroups as $key=>$value) {
|
||||||
|
print "<option value='" . $key . "'";
|
||||||
|
for ($i=0; $i < $result["count"] ; $i++)
|
||||||
|
{
|
||||||
|
$arraycn[] = $result[$i]["cn"][0];
|
||||||
|
if($key == $_SESSION['domain'] || in_array($key, $arraycn)) {
|
||||||
|
print ' selected="selected"';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print "> $key </option>\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
print "</select>";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// only for mail mode
|
// only for mail mode
|
||||||
|
@ -564,9 +645,19 @@ if (isset($_SESSION['login']))
|
||||||
// Cas d'un compte Samba
|
// Cas d'un compte Samba
|
||||||
if (($conf['admin']['what'] == 2) || ($conf['admin']['what'] == 3)) {
|
if (($conf['admin']['what'] == 2) || ($conf['admin']['what'] == 3)) {
|
||||||
|
|
||||||
|
$ldapconn = Ldap::lda_connect(LDAP_ADMIN_DN,LDAP_ADMIN_PASS);
|
||||||
|
|
||||||
$smbgroup = Html::clean($_POST['smbgroup']);
|
$smbgroup = Html::clean($_POST['smbgroup']);
|
||||||
$tmp = getsambagroups('unix');
|
$tmp = getsambagroups('unix');
|
||||||
$gid = $tmp[$smbgroup];
|
$gid = $tmp[$smbgroup];
|
||||||
|
|
||||||
|
if(isset($_POST['smbgroupsecondaire']) && !empty($_POST['smbgroupsecondaire'])){
|
||||||
|
$arrayGroupes = $_POST['smbgroupsecondaire'];
|
||||||
|
foreach($arrayGroupes as $nameGroupe){
|
||||||
|
$entry_groupe["memberUid"] = $uid;
|
||||||
|
ldap_mod_add($ldapconn, "cn=".$nameGroupe.",".$group_dn, $entry_groupe);
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
$gid = getgid($_SESSION['domain']);
|
$gid = getgid($_SESSION['domain']);
|
||||||
|
@ -737,7 +828,7 @@ if (isset($_SESSION['login']))
|
||||||
if ($conf['samba']['admin_default'] == true) {
|
if ($conf['samba']['admin_default'] == true) {
|
||||||
// ajout dans le groupe smbadmins par defaut #7015
|
// ajout dans le groupe smbadmins par defaut #7015
|
||||||
$entry_group_smbadmins["memberUid"] = $uid;
|
$entry_group_smbadmins["memberUid"] = $uid;
|
||||||
ldap_mod_add($ldapconn, "cn=smbadmins,ou=group,dc=cleo,dc=cnrs,dc=fr", $entry_group_smbadmins);
|
ldap_mod_add($ldapconn, "cn=smbadmins,".$group_dn, $entry_group_smbadmins);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -815,7 +906,7 @@ if (isset($_SESSION['login']))
|
||||||
<tr><td align="right">Nom dans Samba :</td>
|
<tr><td align="right">Nom dans Samba :</td>
|
||||||
<td align="left"><input type='text' name='displayname' tabindex='10' /></td></tr>
|
<td align="left"><input type='text' name='displayname' tabindex='10' /></td></tr>
|
||||||
|
|
||||||
<tr><td align="right">Groupe Samba :</td>
|
<tr><td align="right">Groupe Samba primaire :</td>
|
||||||
<td align="left"><select name="smbgroup">
|
<td align="left"><select name="smbgroup">
|
||||||
<option value="" disabled selected>Choisir un groupe</option>
|
<option value="" disabled selected>Choisir un groupe</option>
|
||||||
|
|
||||||
|
@ -836,6 +927,23 @@ if (isset($_SESSION['login']))
|
||||||
|
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<tr><td align="right">Groupe Samba secondaire :</td>
|
||||||
|
<td align="left"><select style="margin-top:5px;" name="smbgroupsecondaire[]" multiple size=6>
|
||||||
|
|
||||||
|
<?php
|
||||||
|
$sambagroups = getsambagroups('smb');
|
||||||
|
foreach ($sambagroups as $key=>$value) {
|
||||||
|
print "<option value='" . $key . "'";
|
||||||
|
if($key == $_SESSION['domain']) {
|
||||||
|
print ' selected="selected"';
|
||||||
|
}
|
||||||
|
print "> $key </option>\n";
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td align="right">Shell :</td>
|
<td align="right">Shell :</td>
|
||||||
<td align="left">
|
<td align="left">
|
||||||
|
|
Loading…
Reference in a new issue