1
0
Fork 0
party-rank-server/app/Http/Middleware/Permission.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);
}
}