generated from panliang/owl-admin-starter
36 lines
961 B
PHP
36 lines
961 B
PHP
<?php
|
|
|
|
namespace App\Http\Middleware;
|
|
|
|
use Closure;
|
|
use Illuminate\Http\Request;
|
|
use Slowlyo\OwlAdmin\Admin;
|
|
use Symfony\Component\HttpFoundation\Response;
|
|
|
|
class Permission
|
|
{
|
|
/**
|
|
* @param Request $request
|
|
* @param Closure $next
|
|
* @param mixed ...$args
|
|
* @return Response
|
|
*/
|
|
public function handle(Request $request, Closure $next, ...$args): Response
|
|
{
|
|
$user = Admin::user();
|
|
if (!$user) {
|
|
return Admin::response()->fail(__('admin.unauthorized'));
|
|
}
|
|
if (!$user->isAdministrator()) {
|
|
return Admin::response()->fail(__('admin.unauthorized'));
|
|
}
|
|
if (count($args) == 0) {
|
|
$args = [$request->route()->getName()];
|
|
}
|
|
if ($user->allPermissions()->whereIn('slug', $args)->count() == 0) {
|
|
return Admin::response()->fail(__('admin.unauthorized'), ['permission' => $args]);
|
|
}
|
|
return $next($request);
|
|
}
|
|
}
|