sarga/packages/Webkul/User/src/Http/Middleware/Bouncer.php

53 lines
1.2 KiB
PHP
Raw Normal View History

2018-06-20 05:06:27 +00:00
<?php
namespace Webkul\User\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
2018-12-04 04:26:15 +00:00
use Illuminate\Support\Facades\Route;
2018-06-20 05:06:27 +00:00
2018-10-17 07:21:47 +00:00
class Bouncer
2018-06-20 05:06:27 +00:00
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = 'admin')
{
if (! Auth::guard($guard)->check()) {
2018-06-25 11:00:42 +00:00
return redirect()->route('admin.session.create');
2018-06-20 05:06:27 +00:00
}
2018-10-17 07:21:47 +00:00
$this->checkIfAuthorized($request);
2018-06-20 05:06:27 +00:00
return $next($request);
}
2018-10-17 07:21:47 +00:00
2020-03-05 13:37:08 +00:00
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @return mixed
*/
2018-10-17 07:21:47 +00:00
public function checkIfAuthorized($request)
{
2020-02-20 07:14:00 +00:00
if (! $role = auth()->guard('admin')->user()->role) {
2018-10-17 07:21:47 +00:00
abort(401, 'This action is unauthorized.');
2020-02-20 07:14:00 +00:00
}
2018-10-17 07:21:47 +00:00
2018-12-20 10:54:30 +00:00
if ($role->permission_type == 'all') {
2018-10-17 07:21:47 +00:00
return;
} else {
$acl = app('acl');
2019-01-15 11:54:41 +00:00
if ($acl && isset($acl->roles[Route::currentRouteName()])) {
2018-10-17 07:21:47 +00:00
bouncer()->allow($acl->roles[Route::currentRouteName()]);
}
}
}
}