コード例 #1
0
ファイル: authldap.class.php プロジェクト: gaforeror/glpi
 /**
  * @since version 0.84
  *
  * @see CommonDBTM::doSpecificMassiveActions()
  **/
 function doSpecificMassiveActions($input = array())
 {
     global $CFG_GLPI;
     $res = array('ok' => 0, 'ko' => 0, 'noright' => 0);
     switch ($input['action']) {
         case "import":
         case "sync":
             if (!Session::haveRight("import_externalauth_users", 'w')) {
                 $res['nbnoright']++;
             } else {
                 if (isset($_GET['multiple_actions']) && isset($_SESSION["glpi_massiveaction"])) {
                     if ($count = count($input["item"])) {
                         $i = $input["ldap_process_count"] - $count + 1;
                         Html::createProgressBar();
                         Html::changeProgressBarPosition($i, $input["ldap_process_count"], sprintf(__('%1$s/%2$s'), $i, $input["ldap_process_count"]));
                         $key = key($input["item"]);
                         unset($input["item"][$key]);
                         if (AuthLdap::ldapImportUserByServerId(array('method' => AuthLDAP::IDENTIFIER_LOGIN, 'value' => $key), $input["mode"], $input["authldaps_id"], true)) {
                             $input['res']['ok']++;
                         } else {
                             $input['res']['ko']++;
                         }
                         if (count($input["item"])) {
                             // more to do -> redirect
                             $_SESSION['glpi_massiveaction']['POST'] = $input;
                             Html::redirect($CFG_GLPI['root_doc'] . '/front/massiveaction.php?multiple_actions=1');
                         } else {
                             // Nothing to do redirect
                             Html::changeProgressBarPosition(100, 100, __('Successful importation'));
                             $res = $input['res'];
                             $_SESSION['ldap_import']['action'] = 'show';
                         }
                     }
                 } else {
                     if (count($input['item']) > 0) {
                         $input["ldap_process_count"] = 0;
                         $input["authldaps_id"] = $_SESSION['ldap_import']['authldaps_id'];
                         $input["mode"] = $_SESSION['ldap_import']['mode'];
                         $input['res'] = array('ok' => 0, 'ko' => 0, 'noright' => 0);
                         foreach ($input['item'] as $key => $val) {
                             if ($val) {
                                 $input["ldap_process_count"]++;
                             }
                         }
                         $_SESSION['glpi_massiveaction']['POST'] = $input;
                         Html::redirect($CFG_GLPI['root_doc'] . '/front/massiveaction.php?multiple_actions=1');
                     } else {
                         $res['ko']++;
                     }
                 }
             }
             $res['REDIRECT'] = $CFG_GLPI['root_doc'] . "/front/ldap.import.php";
             break;
         case "import_group":
             $group = new Group();
             if (!Session::haveRight("user_authtype", 'w') || !$group->canGlobal('w')) {
                 $res['nbnoright']++;
             } else {
                 if (isset($_GET['multiple_actions']) && isset($_SESSION["glpi_massiveaction"])) {
                     if ($count = count($input["item"])) {
                         $i = $input["ldap_process_count"] - $count + 1;
                         Html::createProgressBar();
                         Html::changeProgressBarPosition($i, $input["ldap_process_count"], sprintf(__('%1$s/%2$s'), $i, $input["ldap_process_count"]));
                         $key = key($input["item"]);
                         unset($input["item"][$key]);
                         if (isset($input["ldap_import_entities"][$key])) {
                             $entity = $input["ldap_import_entities"][$key];
                         } else {
                             $entity = $_SESSION["glpiactive_entity"];
                         }
                         if (AuthLdap::ldapImportGroup($key, array("authldaps_id" => $input["authldaps_id"], "entities_id" => $entity, "is_recursive" => $input["ldap_import_recursive"][$key], "type" => $input["ldap_import_type"][$key]))) {
                             $input['res']['ok']++;
                         } else {
                             $input['res']['ko']++;
                         }
                         if (count($input["item"])) {
                             // more to do -> redirect
                             $_SESSION['glpi_massiveaction']['POST'] = $input;
                             Html::redirect($CFG_GLPI['root_doc'] . '/front/massiveaction.php?multiple_actions=1');
                         } else {
                             // Nothing to do redirect
                             Html::changeProgressBarPosition(100, 100, __('Successful importation'));
                             $res = $input['res'];
                             $_SESSION['ldap_import']['action'] = 'show';
                         }
                     }
                 } else {
                     if (count($input['item']) > 0) {
                         $input["ldap_process_count"] = 0;
                         $input["authldaps_id"] = $_SESSION['ldap_server'];
                         $input['res'] = array('ok' => 0, 'ko' => 0, 'noright' => 0);
                         foreach ($input['item'] as $key => $val) {
                             if ($val) {
                                 $input["ldap_process_count"]++;
                                 $input["ldap_import_entities"][$key] = $input["ldap_import_entities"][$key];
                                 $input["ldap_import_type"][$key] = $input["ldap_import_type"][$key];
                                 $input["ldap_import_recursive"][$key] = $input["ldap_import_recursive"][$key];
                             }
                         }
                         $_SESSION['glpi_massiveaction']['POST'] = $input;
                         Html::redirect($CFG_GLPI['root_doc'] . '/front/massiveaction.php?multiple_actions=1');
                     } else {
                         $res['ko']++;
                     }
                 }
             }
             $res['REDIRECT'] = $CFG_GLPI['root_doc'] . "/front/ldap.group.import.php";
             break;
         default:
             return parent::doSpecificMassiveActions($input);
     }
     return $res;
 }
コード例 #2
0
 /**
  * @since version 0.85
  *
  * @see CommonDBTM::processMassiveActionsForOneItemtype()
  **/
 static function processMassiveActionsForOneItemtype(MassiveAction $ma, CommonDBTM $item, array $ids)
 {
     global $CFG_GLPI;
     $input = $ma->getInput();
     switch ($ma->getAction()) {
         case 'import_group':
             $group = new Group();
             if (!Session::haveRight("user", User::UPDATEAUTHENT) || !$group->canGlobal(UPDATE)) {
                 $ma->itemDone($item->getType(), $ids, MassiveAction::ACTION_NORIGHT);
                 $ma->addMessage($item->getErrorMessage(ERROR_RIGHT));
                 return;
             }
             foreach ($ids as $id) {
                 if (isset($input["dn"][$id])) {
                     $group_dn = $input["dn"][$id];
                     if (isset($input["ldap_import_entities"][$id])) {
                         $entity = $input["ldap_import_entities"][$id];
                     } else {
                         $entity = $_SESSION["glpiactive_entity"];
                     }
                     // Is recursive is in the main form and thus, don't pass through
                     // zero_on_empty mechanism inside massive action form ...
                     $is_recursive = empty($input['ldap_import_recursive'][$id]) ? 0 : 1;
                     $options = array('authldaps_id' => $_SESSION['ldap_server'], 'entities_id' => $entity, 'is_recursive' => $is_recursive, 'type' => $input['ldap_import_type'][$id]);
                     if (AuthLdap::ldapImportGroup($group_dn, $options)) {
                         $ma->itemDone($item->getType(), $id, MassiveAction::ACTION_OK);
                     } else {
                         $ma->itemDone($item->getType(), $id, MassiveAction::ACTION_KO);
                         $ma->addMessage($item->getErrorMessage(ERROR_ON_ACTION, $group_dn));
                     }
                 }
                 // Clean history as id does not correspond to group
                 $_SESSION['glpimassiveactionselected'] = array();
             }
             return;
         case 'import':
         case 'sync':
             if (!Session::haveRight("user", User::IMPORTEXTAUTHUSERS)) {
                 $ma->itemDone($item->getType(), $ids, MassiveAction::ACTION_NORIGHT);
                 $ma->addMessage($item->getErrorMessage(ERROR_RIGHT));
                 return;
             }
             foreach ($ids as $id) {
                 if (AuthLdap::ldapImportUserByServerId(array('method' => AuthLDAP::IDENTIFIER_LOGIN, 'value' => $id), $_SESSION['ldap_import']['mode'], $_SESSION['ldap_import']['authldaps_id'], true)) {
                     $ma->itemDone($item->getType(), $id, MassiveAction::ACTION_OK);
                 } else {
                     $ma->itemDone($item->getType(), $id, MassiveAction::ACTION_KO);
                     $ma->addMessage($item->getErrorMessage(ERROR_ON_ACTION, $id));
                 }
             }
             return;
     }
     parent::processMassiveActionsForOneItemtype($ma, $item, $ids);
 }
コード例 #3
0
checkRight('user_authtype', 'w');
commonHeader($LANG['setup'][3], $_SERVER['PHP_SELF'], "admin", "group", "ldap");
if (isset($_GET['next'])) {
    AuthLdap::ldapChooseDirectory($_SERVER['PHP_SELF']);
} else {
    if (isset($_SESSION["ldap_import"])) {
        if ($count = count($_SESSION["ldap_import"])) {
            $percent = min(100, round(100 * ($_SESSION["ldap_import_count"] - $count) / $_SESSION["ldap_import_count"], 0));
            displayProgressBar(400, $percent);
            $key = array_pop($_SESSION["ldap_import"]);
            if (isset($_SESSION["ldap_import_entities"][$key])) {
                $entity = $_SESSION["ldap_import_entities"][$key];
            } else {
                $entity = $_SESSION["glpiactive_entity"];
            }
            AuthLdap::ldapImportGroup($key, array("authldaps_id" => $_SESSION["ldap_server"], "entities_id" => $entity, "is_recursive" => $_SESSION["ldap_import_recursive"][$key], "type" => $_SESSION["ldap_import_type"][$key]));
            glpi_header($_SERVER['PHP_SELF']);
        } else {
            unset($_SESSION["ldap_import"]);
            displayProgressBar(400, 100);
            echo "<div class='center b'>" . $LANG['ocsng'][8] . "<br>";
            echo "<a href='" . $_SERVER['PHP_SELF'] . "'>" . $LANG['buttons'][13] . "</a></div>";
        }
    }
    if (isset($_POST["change_ldap_filter"])) {
        if (isset($_POST["ldap_filter"])) {
            $_SESSION["ldap_group_filter"] = $_POST["ldap_filter"];
        }
        if (isset($_POST["ldap_filter2"])) {
            $_SESSION["ldap_group_filter2"] = $_POST["ldap_filter2"];
        }