Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Middleware nos arquivos do projeto atual

Oi, tudo bem? Estou fazendo o curso porém cheguei num ponto onde precisei baixar o projeto pronto para testar uma funcionalidade. O problema é que baixando o pacote do link disponibilizado, notei que a classe "AutorizaçãoMiddleware" não consta no pacote "Middleward" do sistema. Podem verificar?

2 respostas
solução!

Oi Rodrigo, tudo bom?

Para o andamento do curso, a classe AutorizacaoMiddleware não é necessária, pois ao fim do capitulo é utilizado o proprio laravel pra realizar a autorização com o middleware auth =)

Porém, se você quiser a classe, segue aqui:

<?php namespace estoque\Http\Middleware;

use Closure;

class AutorizacaoMiddleware {

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if(!$request->is('auth/login') && \Auth::guest()) {
            return redirect('/auth/login');
        }
        return $next($request);
    }

}

Kernel:

<?php namespace estoque\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel {

    /**
     * The application's global HTTP middleware stack.
     *
     * @var array
     */
    protected $middleware = [
        'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
        'Illuminate\Cookie\Middleware\EncryptCookies',
        'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
        'Illuminate\Session\Middleware\StartSession',
        'Illuminate\View\Middleware\ShareErrorsFromSession',
        'estoque\Http\Middleware\VerifyCsrfToken',
    ];

    /**
     * The application's route middleware.
     *
     * @var array
     */
    protected $routeMiddleware = [
        'auth' => 'estoque\Http\Middleware\Authenticate',
        'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
        'guest' => 'estoque\Http\Middleware\RedirectIfAuthenticated',
        'nosso-middleware' => 'estoque\Http\Middleware\AutorizacaoMiddleware',
    ];

}

routes:

<?php


Route::get('/', function()
{
    return '<h1>Primeira lógica com Laravel</h1>';
});


Route::get('/produtos', 'ProdutoController@lista');
Route::get('/produtos/mostra/{id?}', 'ProdutoController@mostra')->where('id', '[0-9]+');
Route::get('/produtos/novo', 'ProdutoController@novo');
Route::post('/produtos/adiciona', 'ProdutoController@adiciona');
Route::get('/produtos/json', 'ProdutoController@listaJson');
Route::get('/produtos/remove/{id}', [
    'middleware' => 'nosso-middleware',
    'uses' => 'ProdutoController@remove'
]);


Route::get('home', 'HomeController@index');

Route::controllers([
    'auth' => 'Auth\AuthController',
    'password' => 'Auth\PasswordController',
]);

ProdutoController:

<?php

namespace estoque\Http\Controllers;

use estoque\Http\Requests\ProdutosRequest;
use estoque\Produto;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Request;

class ProdutoController extends Controller
{

    public function __construct()
    {
        $this->middleware('nosso-middleware', ['only' => ['adiciona', 'remove']]);
    }

    public function lista(){
        $produtos = Produto::all();
        return view('produto.listagem')->with('produtos', $produtos);
    }

    public function mostra($id){
        $produto = Produto::find($id);
        if(empty($produto)) {
            return "Esse produto não existe";
        }
        return view('produto.detalhes')->with('p', $produto);
    }

    public function novo(){
        return view('produto.formulario');
    }

    public function adiciona(ProdutosRequest $request){

        Produto::create($request->all());

        return redirect()
            ->action('ProdutoController@lista')
            ->withInput(Request::only('nome'));
    }

    public function remove($id){
        $produto = Produto::find($id);
        $produto->delete();
        return redirect()
            ->action('ProdutoController@lista');
    }

    public function listaJson(){
        $produtos = DB::select('select * from produtos');
        return response()->json($produtos);
    }

}

Abraço

Entendi! Muito obrigado pelo retorno e pela postagem da classe! Abração!