public static function run($node) { // is template node? if (is_object($node) && property_exists($node, '@template')) { $template = Template::name($node->{'@template'}); foreach ($node as $inputName => $inputValue) { if ('@template' !== $inputName) { $template->input($inputName, self::run($inputValue)); } } return $template; } // is service node? if (is_object($node) && property_exists($node, '@service')) { $service = Service::name($node->{'@service'}); if (property_exists($node, '@params')) { foreach ($node->{'@params'} as $inputValue) { $service->input(self::run($inputValue)); } } return $service->execute(); } // is route parameter node? if (is_string($node) && 1 === preg_match('/^\\[(\\w+)\\]$/', $node, $matches)) { return Kernel::arg(lcfirst($matches[1])); } // something else? return $node; }
/** * @param $name * @param $password * @return User|null * @throws Exception */ public function auth($name, $password) { $id = $this->getIdByName($name); if (!$id) { throw new Exception("User with name {$name} not found"); } $User = Kernel::getRepository(EntityType::USER)->loadById($id); if (password_verify($password, $User->get(User::FIELD_PASSWORD))) { return $User; } return null; }
/** * @return FeedProvider */ protected function getFeedProvider() { return Kernel::getInstance()->getFeedProvider(); }
/** * @return AbstractRepository */ protected function getPostRepository() { return Kernel::getInstance()->getOrmProvider()->getRepositoryByType(EntityType::POST); }
header('Content-Type: application/json'); break; case 'register': $Redis = Kernel::getInstance()->getConnectionFactory()->getRedis('default'); $UserAuthorizer = new \User\UserAuthorizer($Redis); try { $User = $UserAuthorizer->registerUser($_GET['email'], $_GET['name'], $_GET['password']); $_SESSION['user_id'] = $User->getId(); $content = ['register' => true]; } catch (Exception $Ex) { $content = ['register' => false, 'message' => $Ex->getMessage()]; } header('Content-Type: application/json'); break; case 'login': $Redis = Kernel::getInstance()->getConnectionFactory()->getRedis('default'); $UserAuthorizer = new \User\UserAuthorizer($Redis); $User = $UserAuthorizer->auth($_GET['name'], $_GET['password']); if ($User) { $_SESSION['user_id'] = $User->getId(); $content = ['auth' => true]; } else { $content = ['auth' => false]; } header('Content-Type: application/json'); break; default: $TemplateRender = new TemplateRender(); $data = ['isAuth' => $isAuth]; if ($isAuth) { $data['user'] = $User->export();
<?php use Config\ConfigLoader; use Connection\ConnectionFactory; use Kernel\Environment; use Kernel\Kernel; use Orm\Provider\OrmProviderArray; use Orm\Provider\OrmProviderRedis; require_once __DIR__ . '/path.php'; require_once PATH_VENDOR . '/autoload.php'; $Environment = new Environment(Environment::TEST); $ConfigLoader = new ConfigLoader($Environment); $ConnectionFactory = new ConnectionFactory($ConfigLoader); $OrmProvider = new OrmProviderArray(); $Kernel = new Kernel(); $Kernel->setEnvironment($Environment); $Kernel->setConfigLoader($ConfigLoader); $Kernel->setConnectionFactory($ConnectionFactory); $Kernel->setOrmProvider($OrmProvider); Kernel::setInstance($Kernel); return $Kernel;
private function createRedis() { return \Kernel\Kernel::getInstance()->getConnectionFactory()->getRedis('default'); }
/** * @return AbstractRepository */ public function getRepository() { return Kernel::getInstance()->getOrmProvider()->getRepositoryByType($this->getType()); }
protected function getRepositoryByType($type) { return Kernel::getInstance()->getOrmProvider()->getRepositoryByType($type); }