@romach так по slim нету И меня кстати забанили в laravel у меня нет доступа ни к сайту ни к чату на гиттере, я jhoda послал на три весёлых буквы около года тому назад ток на буржуйские зайти могу
Ну меня и английская дока по slim устраивает, вот в чём проблема, мне перевод не нужен. И по ларке я только на английском всё читаю, больше чем достаточно. Плюс в исходник заглядываю, если что не понятно как сделано? Ctrl+click - моя любимя фитча у PhpStorm. --- Добавлено --- А если новую фитчу делать - так можно прямо им в гитхабе пулл-реквест сделать
@mkramer Что такое пул реквест я не совсем догоняю что это... Просто уже слышу не первый раз, объясни плиз)
Это когда ты форкаешь себе репозиторий, вносишь изменения, а потом предлагаешь авторам забрать твои изменения к себе в продакшн. Они смотрят, если им нравится, что ты сделал, забирают. Мои в парочке расширений Yii2 красуются, правда простенькие.
@mkramer Вот же засада... Не работает валидация токенов. Он выдаёт false но видимо я что то не так сделал.... роутер: PHP: <?php /** * Created by PhpStorm. * User: Matronet * Date: 03.04.2017 * Time: 18:17 */ use \Psr\Http\Message\ServerRequestInterface as Request; use \Psr\Http\Message\ResponseInterface as Response; use \Admin\Controller as Controller; $app->get('/', Controller\Auth\AuthController::class . ':register'); $app->get('/admin[/]', Controller\Auth\AuthController::class . ':login'); $app->post('/admin/new_user', Controller\Auth\PostAuthController::class . ':postRegister'); $app->group('/autoservice', function () use($app) { /* * Группа маршрутов, Автосервисов * */ // Маршрут главной страницы автосервиса : $app->get('/', Controller\Autoservice\MainController::class . ':main'); $app->get('/{name}', Controller\Autoservice\SiteController::class . ':site'); }); // Маршруты для автосервиса $app->group('/admin', function () use ($app) { })->add(function (Request $request, Response $response, $admin) { if(!isset($_SESSION['user_id'])) { return $response->withStatus(302)->withHeader('Location', '/'); } $response = $admin($request, $response); return $response; }); Маршрут PHP: $app->get('/{name}', Controller\Autoservice\SiteController::class . ':site'); Именно с него начинается вход. Там есть форма на которую и выводится hidden поля csrf Контроллер: PHP: <?php /** * Created by PhpStorm. * User: Леонид * Date: 06.04.2017 * Time: 15:56 */ namespace Admin\Controller\Autoservice; use Admin\Model\Autoservice\InSite; use \Psr\Http\Message\ServerRequestInterface as Request; use \Psr\Http\Message\ResponseInterface as Response; use Psr\Container\ContainerInterface; class SiteController { public function __construct(ContainerInterface $container) { $this->csrf = new \Slim\Csrf\Guard(); $this->container = $container; } public function site(Request $request, Response $response, $args) { $view = $this->container->get('view'); $nameKey = $this->csrf->getTokenNameKey(); $valueKey = $this->csrf->getTokenValueKey(); $token = $this->csrf->generateToken(); $name = $request->getAttribute('name'); $site = new InSite(); $getSite = $site->get_site($name); if($getSite == 404) { return $response->withStatus(302)->withHeader('Location', '/autoservice/'); } $idSite = $getSite->get_id; $photo = $getSite->in_sites_photo(); $site_info = $getSite->get_info(); $view->render($response, 'autoservice/site.html',[ 'csrf' => [ 'keys' => [ 'name' => $nameKey, 'value' => $valueKey ], 'name' => $token[$nameKey], 'value' => $token[$valueKey] ], 'images' => $photo['images'], 'id_site' => $idSite, 'site' => $site_info ] ); return $response; } } А после с неё я делаю запрос на данный маршрут: PHP: $app->post('/admin/new_user', Controller\Auth\PostAuthController::class . ':postRegister'); И сам контроллер PHP: <?php /** * Created by PhpStorm. * User: Леонид * Date: 04.04.2017 * Time: 17:38 */ namespace Admin\Controller\Auth; use \Psr\Http\Message\ServerRequestInterface as Request; use \Psr\Http\Message\ResponseInterface as Response; use Psr\Container\ContainerInterface; class PostAuthController { public function __construct(ContainerInterface $container) { $this->csrf = new \Slim\Csrf\Guard(); $this->container = $container; } public function postLogin ($request, $response, $args) { return $response; } public function postRegister(Request $request, Response $response, $args) { $postBase = $request->getParsedBody(); $this->csrf->validateStorage(); // Generate new tokens $csrfNameKey = $this->csrf->getTokenNameKey(); $csrfValueKey = $this->csrf->getTokenValueKey(); $validate = $this->csrf->validateToken($postBase[$csrfNameKey ], $postBase[$csrfValueKey]); $data = $postBase; if($validate) { $newResponse = $response->withJson(['compleate']); return $newResponse; }else { $data = []; return $response->withJson($data, 404); } } } --- Добавлено --- в общем он отрабатывает false в результате какой то ужас прямо что делать ??? Я вообще смотрю в доку вижу примеры пробую но не втыкаю что не так то...
@mkramer короче да как ты и говорил middle ware там сам всё проверяет. Я разобрался всё чудесно работает) В общем я тут выше глюк написал просто сам чёт се на уме) Сделал короче через container и middle ware всё заработало)