/** * Akce pro odebrání celého obsahu rule clipboard z konkrétního rulesetu * @param int $id * @param int $miner * @param int $ruleset * @param string $returnRules ='' - IDčka oddělená čárkami, případně jedno ID * @throws ForbiddenRequestException * @throws BadRequestException */ public function actionRemoveRulesFromRuleSet($id = null, $miner, $ruleset, $returnRules = '') { //načtení dané úlohy a zkontrolování přístupu k mineru $task = $this->tasksFacade->findTask($id); $this->checkMinerAccess($task->miner); $ruleIdsArr = explode(',', str_replace(';', ',', $returnRules)); //najití RuleSetu a kontroly $ruleSet = $this->ruleSetsFacade->findRuleSet($ruleset); $this->ruleSetsFacade->checkRuleSetAccess($ruleSet, $this->user->id); //přidání pravidel $this->ruleSetsFacade->removeAllRuleClipboardRulesFromRuleSet($task, $ruleSet); $result = array(); if (count($ruleIdsArr) > 0) { foreach ($ruleIdsArr as $ruleId) { try { $rule = $this->rulesFacade->findRule($ruleId); //TODO optimalizovat kontroly... $ruleTask = $rule->task; if ($ruleTask->taskId != $task->taskId) { throw new InvalidArgumentException(); } if ($ruleTask->miner->minerId != $miner) { throw new InvalidArgumentException(); } $result[$rule->ruleId] = $rule->getBasicDataArr(); } catch (\Exception $e) { continue; } } } $this->sendJsonResponse(array('rules' => $result)); }
/** * Akce pro odebrání všech pravidel z rulesetu * @param int $id */ public function actionRemoveAllRules($id) { //najití RuleSetu a kontroly $ruleSet = $this->ruleSetsFacade->findRuleSet($id); $this->ruleSetsFacade->checkRuleSetAccess($ruleSet, $this->user->id); //smazání $this->ruleSetsFacade->removeAllRulesFromRuleSet($ruleSet); $this->sendJsonResponse(['state' => 'ok']); }
/** * Funkce pro nalezení rule setu dle zadaného ID a kontrolu oprávnění aktuálního uživatele pracovat s daným rule setem * @param int $ruleSetId * @return RuleSet * @throws \Nette\Application\BadRequestException */ private function findRuleSetWithCheckAccess($ruleSetId) { try { /** @var RuleSet $ruleSet */ $ruleSet = $this->ruleSetsFacade->findRuleSet($ruleSetId); } catch (EntityNotFoundException $e) { $this->error('Requested rule set was not found.'); return null; } //kontrola možnosti pracovat s daným rule setem $this->ruleSetsFacade->checkRuleSetAccess($ruleSet, $this->getCurrentUser()->userId); return $ruleSet; }
/** * Funkce pro kontrolu vstupů pro vytvoření nového mineru */ public function validateCreate() { $currentUser = $this->getCurrentUser(); /** @noinspection PhpMethodParametersCountMismatchInspection */ $this->input->field('name')->addRule(IValidator::REQUIRED, 'Name is required!'); /** @noinspection PhpMethodParametersCountMismatchInspection */ $this->input->field('type')->addRule(IValidator::REQUIRED, 'Miner type is required!'); /** @noinspection PhpMethodParametersCountMismatchInspection */ $this->input->field('datasourceId')->addRule(IValidator::REQUIRED, 'Datasource ID is required!')->addRule(IValidator::CALLBACK, 'Requested datasource was not found, or is not accessible!', function ($value) use($currentUser) { try { $this->datasource = $this->datasourcesFacade->findDatasource($value); if ($this->datasourcesFacade->checkDatasourceAccess($this->datasource, $currentUser)) { //kontrola dostupnosti kompatibilního mineru s vybraným datasource $availableMinerTypes = $this->minersFacade->getAvailableMinerTypes($this->datasource->type); return !empty($availableMinerTypes[$this->getInput()->getData()['type']]); } else { return false; } } catch (\Exception $e) { return false; } }); /** @noinspection PhpMethodParametersCountMismatchInspection */ $this->input->field('ruleSetId')->addRule(IValidator::CALLBACK, 'Requested rule set was not found, or is not accessible!', function ($value) use($currentUser) { if (empty($value)) { return true; } try { $this->ruleSet = $this->ruleSetsFacade->findRuleSet($value); $this->ruleSetsFacade->checkRuleSetAccess($this->ruleSet, $currentUser); return true; } catch (\Exception $e) { return false; } }); }