/** * Method that receives the call from JS Client to login a user * * @param \Library\HttpRequest $rq: the request * @return json object A JSON object with the result bool value and success/error message */ public function executeAuthenticate(\Library\HttpRequest $rq) { //Initialize the response to error. $result = $this->InitResponseWS(); //Let's retrieve the inputs from AJAX POST request $data_sent = $this->dataPost(); $authProvider = new AuthProvider($this->app->config->get("encryption_key"), $this->managers->getManagerOf('Login')); $authProvider->prepareUser($data_sent); if ($authProvider->getUser() instanceof \Library\Interfaces\IUser) { $this->app->auth->authenticate($authProvider->getUser()); $this->user->setAttribute(\Library\Enums\SessionKeys::UserTypeObject, $authProvider->getUserType()); if ($authProvider->getUser()) { $user = $this->app->user; $routes = array_filter($this->app->router->routes(), function ($route) use($user) { return count($route->role()) == 0 || in_array($user->getRole(), $route->role()); }); \Applications\PMTool\Helpers\UserHelper::SaveRoutes($user, $routes); switch ($authProvider->getUser()->getType()) { case 'technician_id': \Applications\PMTool\Helpers\TaskHelper::UnsetCurrentSessionTask($this->user); break; case 'pm_id': \Applications\PMTool\Helpers\PmHelper::StoreSessionPm($this, $authProvider->getUserType(), true); break; } $result = $this->InitResponseWS("success"); $result['role'] = $user->getRole(); } } //return the JSON data echo \Library\HttpResponse::encodeJson($result); }
public function executeDelete(\Library\HttpRequest $rq) { // Init result $result = $this->InitResponseWS(); $sessionProject = \Applications\PMTool\Helpers\ProjectHelper::GetCurrentSessionProject($this->app()->user()); $db_result = FALSE; $task_id = intval($this->dataPost["task_id"]); //Check if the task to be deleted if the Task manager's $task_selected = \Applications\PMTool\Helpers\TaskHelper::GetSessionTask($this->app()->user(), $task_id); //Load interface to query the database if ($task_selected !== NULL) { $manager = $this->managers->getManagerOf($this->module()); if ($manager->delete($task_selected[\Library\Enums\SessionKeys::TaskObj], "task_id")) { $sessionTasks = \Applications\PMTool\Helpers\TaskHelper::GetSessionTasks($this->app()->user()); unset($sessionTasks[\Library\Enums\SessionKeys::TaskKey . $task_id]); \Applications\PMTool\Helpers\TaskHelper::SetSessionTasks($this->app()->user(), $sessionTasks); $index = \Applications\PMTool\Helpers\CommonHelper::FindIndexInIdListById(\Library\Enums\SessionKeys::TaskKey . $task_id, $sessionProject[\Library\Enums\SessionKeys::ProjectTasks]); $db_result = $index === NULL ? FALSE : TRUE; unset($sessionProject[\Library\Enums\SessionKeys::ProjectTasks][$index]); \Applications\PMTool\Helpers\ProjectHelper::SetUserSessionProject($this->app()->user(), $sessionProject); $currentSessionTask = \Applications\PMTool\Helpers\TaskHelper::GetCurrentSessionTask($this->app()->user()); if ($currentSessionTask[\Library\Enums\SessionKeys::TaskObj]->task_id() == $task_id) { \Applications\PMTool\Helpers\TaskHelper::UnsetCurrentSessionTask($this->app()->user()); } } } $this->SendResponseWS($result, array("resx_file" => \Applications\PMTool\Resources\Enums\ResxFileNameKeys::Task, "resx_key" => $this->action(), "step" => $db_result !== FALSE ? "success" : "error")); }
/** * Method that get a project and returns the result of operation * * @param \Library\HttpRequest $rq * @return JSON */ public function executeSetCurrentProject(\Library\HttpRequest $rq) { $result = $this->InitResponseWS(); // Init result $manager = $this->managers()->getManagerOf('Project'); $projectEdit = new \Applications\PMTool\Models\Dao\Project(); $pm = $this->user->getAttribute(\Library\Enums\SessionKeys::CurrentPm); $pm = $pm[\Library\Enums\SessionKeys::PmObject]; $pm_id = $pm->pm_id(); $projectEdit->setPm_id($pm_id); $projectEdit->setProject_is_default(0); if (!$manager->edit($projectEdit, 'pm_id')) { throw new \Exception(__CLASS__ . "->" . __METHOD__ . " => Project Edit failed for PM ID=" . $pm_id); } $project_id = $this->dataPost["project_id"]; $projectEdit->setProject_id($project_id); $projectEdit->setProject_is_default(1); if (!$manager->edit($projectEdit, 'project_id')) { throw new \Exception(__CLASS__ . "->" . __METHOD__ . " => Project Edit failed for Project ID=" . $project_id); } else { \Applications\PMTool\Helpers\ProjectHelper::RefreshProjectObjectsForCurrentPm($this); } $project = \Applications\PMTool\Helpers\ProjectHelper::GetAndStoreCurrentProject($this->user(), $project_id); $result["dataId"] = $project->project_id(); \Applications\PMTool\Helpers\TaskHelper::UnsetCurrentSessionTask($this->user()); $this->SendResponseWS($result, array("resx_file" => \Applications\PMTool\Resources\Enums\ResxFileNameKeys::Project, "resx_key" => $this->action(), "step" => $project != NULL ? "success" : "error")); }