Пример #1
0
 /**
  * @param $scope String "user", "all"
  * @param bool $includeShared
  * @return array
  */
 protected function initRepositoriesListInst($scope = "user", $includeShared = true)
 {
     // APPEND CONF FILE REPOSITORIES
     $loggedUser = AuthService::getLoggedUser();
     $objList = array();
     if ($loggedUser != null) {
         $l = $loggedUser->getLock();
         if (!empty($l)) {
             return $objList;
         }
     }
     foreach ($this->configs["DEFAULT_REPOSITORIES"] as $index => $repository) {
         $repo = self::createRepositoryFromArray($index, $repository);
         if ($scope == "user" && $loggedUser != null && !self::repositoryIsAccessible($index, $repo, $loggedUser)) {
             continue;
         }
         $repo->setWriteable(false);
         $objList["" . $repo->getId()] = $repo;
     }
     // LOAD FROM DRIVER
     $confDriver = self::getConfStorageImpl();
     if ($scope == "user") {
         $acls = array();
         if (AuthService::getLoggedUser() != null) {
             $acls = AuthService::getLoggedUser()->mergedRole->listAcls(true);
         }
         if (!count($acls)) {
             $drvList = array();
         } else {
             $criteria = array("uuid" => array_keys($acls));
             $drvList = $confDriver->listRepositoriesWithCriteria($criteria);
         }
     } else {
         if ($includeShared) {
             $drvList = $confDriver->listRepositories();
         } else {
             $drvList = $confDriver->listRepositoriesWithCriteria(array("owner_user_id" => AJXP_FILTER_EMPTY));
         }
     }
     if (is_array($drvList)) {
         /**
          * @var $drvList Repository[]
          */
         foreach ($drvList as $repoId => $repoObject) {
             $driver = AJXP_PluginsService::getInstance()->getPluginByTypeName("access", $repoObject->getAccessType());
             if (!is_object($driver) || !$driver->isEnabled()) {
                 unset($drvList[$repoId]);
             } else {
                 $repoObject->setId($repoId);
                 $drvList[$repoId] = $repoObject;
             }
             if ($repoObject->hasParent() && !ConfService::findRepositoryByIdOrAlias($repoObject->getParentId())) {
                 AJXP_Logger::error(__CLASS__, __FUNCTION__, "Disabling repository " . $repoObject->getSlug() . " as parent cannot be correctly loaded.");
                 unset($drvList[$repoId]);
             }
         }
         foreach ($drvList as $key => $value) {
             $objList[$key] = $value;
         }
     }
     $args = array(&$objList);
     AJXP_Controller::applyIncludeHook("sec.access_ws", $args);
     return $objList;
 }
Пример #2
0
$confPlugin = ConfService::getInstance()->confPluginSoftLoad($pServ);
$pServ->loadPluginsRegistry(AJXP_INSTALL_PATH . "/plugins", $confPlugin);
ConfService::start();
$confStorageDriver = ConfService::getConfStorageImpl();
require_once $confStorageDriver->getUserClassFileName();
session_name("AjaXplorer");
session_start();
AuthService::$useSession = false;
AuthService::logUser(AJXP_API_USER, "", true);
$authDriver = ConfService::getAuthDriverImpl();
$uri = $_SERVER["REQUEST_URI"];
$scriptUri = ltrim(dirname($_SERVER["SCRIPT_NAME"]), '/') . "/api/";
$uri = substr($uri, strlen($scriptUri));
$uri = explode("/", $uri);
// GET REPO ID
$repoID = array_shift($uri);
// GET ACTION NAME
$action = array_shift($uri);
$path = "/" . implode("/", $uri);
$repo =& ConfService::findRepositoryByIdOrAlias($repoID);
if ($repo == null) {
    die("Cannot find repository with ID " . $repoID);
}
ConfService::switchRootDir($repo->getId());
// DRIVERS BELOW NEED IDENTIFICATION CHECK
if (!AuthService::usersEnabled() || ConfService::getCoreConf("ALLOW_GUEST_BROWSING", "auth") || AuthService::getLoggedUser() != null) {
    $confDriver = ConfService::getConfStorageImpl();
    $Driver = ConfService::loadDriverForRepository($repo);
}
AJXP_PluginsService::getInstance()->initActivePlugins();
AJXP_Controller::findRestActionAndApply($action, $path);