Skip to content
This repository has been archived by the owner on Nov 25, 2020. It is now read-only.

Commit

Permalink
CLI: pass user impersonate to Task.
Browse files Browse the repository at this point in the history
  • Loading branch information
cdujeu committed Jul 19, 2016
1 parent 5578b5b commit 8f8b911
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 4 deletions.
8 changes: 6 additions & 2 deletions core/src/core/src/pydio/Core/Controller/CliRunner.php
Expand Up @@ -49,7 +49,7 @@ public static function applyTaskInBackground(Task $task)
$parameters = $task->getParameters();
$task->setStatus(Task::STATUS_RUNNING);
TaskService::getInstance()->updateTask($task);
self::applyActionInBackground($task->getContext(), $task->getAction(), $parameters, "", $task->getId());
self::applyActionInBackground($task->getContext(), $task->getAction(), $parameters, "", $task->getId(), $task->getImpersonateUsers());

}

Expand All @@ -61,9 +61,10 @@ public static function applyTaskInBackground(Task $task)
* @param array $parameters
* @param string $statusFile
* @param string $taskId
* @param string $impersonateUsers
* @return null|UnixProcess
*/
public static function applyActionInBackground(ContextInterface $ctx, $actionName, $parameters, $statusFile = "", $taskId = null)
public static function applyActionInBackground(ContextInterface $ctx, $actionName, $parameters, $statusFile = "", $taskId = null, $impersonateUsers = null)
{
$repositoryId = $ctx->getRepositoryId();
$user = $ctx->hasUser() ? $ctx->getUser()->getId() : "shared";
Expand All @@ -82,6 +83,9 @@ public static function applyActionInBackground(ContextInterface $ctx, $actionNam
}
$robustInstallPath = str_replace("/", DIRECTORY_SEPARATOR, AJXP_INSTALL_PATH);
$cmd = ConfService::getGlobalConf("CLI_PHP") . " " . $robustInstallPath . DIRECTORY_SEPARATOR . "cmd.php -u=$user -t=$token -a=$actionName -r=$repositoryId";
if($impersonateUsers !== null){
$cmd .= "-i=".$impersonateUsers;
}
/* Inserted next 3 lines to quote the command if in windows - rmeske*/
if (PHP_OS == "WIN32" || PHP_OS == "WINNT" || PHP_OS == "Windows") {
$cmd = ConfService::getGlobalConf("CLI_PHP") . " " . chr(34) . $robustInstallPath . DIRECTORY_SEPARATOR . "cmd.php" . chr(34) . " -u=$user -t=$token -a=$actionName -r=$repositoryId";
Expand Down
13 changes: 11 additions & 2 deletions core/src/core/src/pydio/Core/Http/Cli/AuthCliMiddleware.php
Expand Up @@ -39,6 +39,8 @@
use Pydio\Core\Utils\TextEncoder;
use Pydio\Core\Utils\Utils;
use Pydio\Log\Core\Logger;
use Pydio\Tasks\Task;
use Pydio\Tasks\TaskService;
use Symfony\Component\Console\Output\OutputInterface;
use Zend\Diactoros\Response;
use Zend\Diactoros\Stream;
Expand Down Expand Up @@ -179,6 +181,7 @@ public static function handleRequest(ServerRequestInterface $requestInterface, R
$applyCallback = function ($userId, $baseGroup, $index, $total) use ($optRepoId, $requestInterface, $output, $next){

$actionName = $requestInterface->getAttribute("action");
$taskId = $requestInterface->getAttribute("pydio-task-id");
$output->writeln("<info>*****************************</info>");
$output->writeln("<info>Current User is '".$userId."'</info>");
$output->writeln("<info>*****************************</info>");
Expand Down Expand Up @@ -236,15 +239,21 @@ public static function handleRequest(ServerRequestInterface $requestInterface, R

}catch (\Exception $repoEx){

$output->writeln("<error>".$repoEx->getMessage()."</error>");
$output->writeln("<error>$taskId: ".$repoEx->getMessage()."</error>");
if(!empty($taskId)){
TaskService::getInstance()->updateTaskStatus($taskId, Task::STATUS_FAILED, $repoEx->getMessage());
}

}

}

}catch (\Exception $userEx){

$output->writeln("<error>".$userEx->getMessage()."</error>");
$output->writeln("<error>USER: ".$userEx->getMessage()."</error>");
if(!empty($taskId)){
TaskService::getInstance()->updateTaskStatus($taskId, Task::STATUS_FAILED, $userEx->getMessage());
}

}

Expand Down
25 changes: 25 additions & 0 deletions core/src/plugins/core.tasks/src/Task.php
Expand Up @@ -96,6 +96,11 @@ class Task
*/
public $parameters;

/**
* @var string
*/
private $impersonateUsers;

/**
* @var array
*/
Expand Down Expand Up @@ -320,9 +325,29 @@ public function setParameters($parameters)
$this->parameters = $parameters;
}

/**
* @param $nodePath
*/
public function attachToNode($nodePath){
$this->nodes[] = $nodePath;
}

/**
* @return string
*/
public function getImpersonateUsers()
{
return $this->impersonateUsers;
}

/**
* @param string $impersonateUsers
*/
public function setImpersonateUsers($impersonateUsers)
{
$this->impersonateUsers = $impersonateUsers;
}



}

0 comments on commit 8f8b911

Please sign in to comment.