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