/** * @return string */ public function get($useInternalUrl = false) { $config = Registry::getConfig(); $credential = null; if ($config->screens->accessticket->authentication) { $credential = array('username' => RandomGenerator::generateString(10), 'password' => RandomGenerator::generateString(10)); } $requestConfig = $this->getShootRequest(); \Seitenbau\Registry::getLogger()->logData(__METHOD__, __LINE__, "ShootRequest:", $requestConfig, \Seitenbau\Log::DEBUG); $ticketUrl = ''; if (isset($requestConfig) && !empty($requestConfig)) { $ticketBusiness = $this->newTicketInstance(); $ticketUrl = $ticketBusiness->createTicketUrl($this->websiteId, false, true, $requestConfig, $config->screens->accessticket->ticketLifetime, $config->screens->accessticket->remainingCalls, $config->screens->accessticket->sessionLifetime, $credential, $credential, $useInternalUrl); } return $ticketUrl; }
/** * @param string $websiteId * @param boolean $isRedirect * @param boolean $isGet * @param string $requestConfig * @param integer $ticketLifetime * @param integer $remainingCalls * @param integer $sessionLifetime * @param string $credentials * @return string ID des Tickets */ public function create($websiteId, $isRedirect, $isGet, $requestConfig, $ticketLifetime, $remainingCalls, $sessionLifetime, $credentials) { // Neues (nicht vorhandenes) Ticket erstellen $newTicketId = null; $secCounter = 0; $ticketExists = true; do { $newTicketId = RandomGenerator::generateString(Dao::TICKET_LENGTH, Dao::TICKET_CHARS); if (strlen($newTicketId) != Dao::TICKET_LENGTH) { echo '<b>Falsche Ticketlänge: ' . $newTicketId . "<br />"; exit; } $ticketExists = $this->existsTicket($newTicketId); } while ($ticketExists && $secCounter++ < 1000); if ($ticketExists) { throw new CmsException(1302, __METHOD__, __LINE__); } try { $ticket = new \Orm\Entity\Ticket(); $ticket->setId($newTicketId); $ticket->setTimestamp(time()); $ticket->setWebsiteid($websiteId); $ticket->setIsredirect($isRedirect); $ticket->setIsget($isGet); $ticket->setRequestconfig(\Zend_Json::encode($requestConfig)); $ticket->setTicketLifetime($ticketLifetime); $ticket->setRemainingCalls($remainingCalls); $ticket->setSessionLifetime($sessionLifetime); $ticket->setCredentials($credentials); $this->getEntityManager()->persist($ticket); $this->getEntityManager()->flush(); } catch (Exception $e) { throw new CmsException(1301, __METHOD__, __LINE__, null, $e); } return $ticket; }
/** * @param string $websiteId * @param string $url * @return String */ private function createTicketUrl($websiteId, $controler, $action, $params) { // init $config = Registry::getConfig(); // Params als JSON-String $paramsAsJson = \Zend_Json::encode($params); $params = array($config->request->parameter => $paramsAsJson); // Ticket aus Render Url erstellen $credential = null; if ($config->indexing->accessticket->authentication) { $credential = array('username' => RandomGenerator::generateString(10), 'password' => RandomGenerator::generateString(10)); } $ticketUrl = $this->getService('Ticket')->createTicketUrl($websiteId, false, true, array('controller' => $controler, 'action' => $action, 'params' => $params), $config->indexing->accessticket->ticketLifetime, $config->indexing->accessticket->remainingCalls, $config->indexing->accessticket->sessionLifetime, $credential, $credential); return $ticketUrl; }