return function em middleware | Fórum | School of Net

Deseja poder participar de nosso fórum e tirar todas as suas dúvidas?
Clique aqui e assine nosso plano de acesso ilimitado. Saiba mais.

por Temístocles

4 meses atrás Temístocles

return function em middleware

dentro do arquivo "middleware.php" tem o seguinte conteudo: ``` use Slim\App; return function (App $app) { $auth = function ($request, $response, $next) { if (isset($_SESSION['user']) and is_array($_SESSION['user'])) { $response = $next($request, $response); } else { $response = $response->withStatus(401)->write('PageProtected'); } return $response; }; //$app->add($auth); //este comando bloqueia todas as rotas }; ``` em "routes.php" o $auth não funciona, logo não posso especificar a rota a ser bloqueada. ``` use Slim\App; use Slim\Http\Request; use Slim\Http\Response; return function (App $app) { $container = $app->getContainer(); $app->get('/users', function (Request $request, Response $response, array $args) use ($container) { $table = $this->db->table('users'); $users = $table->get(); // Render index view return $container->get('renderer')->render($response, 'users/index.phtml', ['users' => $users]); })->add($auth); // não funciona $app->post('/users', function (Request $request, Response $response, array $args) use ($container) { $data = [ 'name' => filter_input(INPUT_POST, 'name'), // filter_input similar $_POST[] mais seguro 'email' => filter_input(INPUT_POST, 'email'), 'password' => filter_input(INPUT_POST, 'password'), ]; //var_dump($data); //exit; $table = $this->db->table('users'); $users = $table->insert($data); // 302 = redirecionamento temporario return $this->response->withStatus(302)->withHeader('Location', '/users'); })->add($auth); // não funciona $app->get('/users/{id}', function (Request $request, Response $response, array $args) use ($container) { $id = $args['id']; $table = $this->db->table('users'); $users = $table->where('id', $id)->delete(); // 302 = redirecionamento temporario return $this->response->withStatus(302)->withHeader('Location', '/users'); })->add($auth); //não funciona $app->get('/login', function (Request $request, Response $response, array $args) use ($container) { $response->getBody()->write("Página de login"); // Render index view return $container->get('renderer')->render($response, 'index.phtml', $args); }); }; ``` eu não consigo chamar a variável $auth porque esta dentro dessa função anonima em middleware.php, o skeleton gerou de forma diferente estes arquivos. Como eu poderia chamar o $auth no arquivo de "routes.php" sem precisar botar o arquivo middleware dentro de routes.php?

2 Respostas