60 lines
2.1 KiB
PHP
60 lines
2.1 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
namespace App\Http\Middleware;
|
||
|
|
|
||
|
|
use Closure;
|
||
|
|
use Auth;
|
||
|
|
use Illuminate\Http\Request;
|
||
|
|
use App\Models\User;
|
||
|
|
use App\Models\Role;
|
||
|
|
use App\Models\Admin\AppResource;
|
||
|
|
use App\Models\Admin\AppResourceAction;
|
||
|
|
use App\Models\Admin\RoleAppResouceActionLink;
|
||
|
|
use App\Models\Permission;
|
||
|
|
|
||
|
|
|
||
|
|
class AccessPermitted
|
||
|
|
{
|
||
|
|
/**
|
||
|
|
* Handle an incoming request.
|
||
|
|
*
|
||
|
|
* @param \Illuminate\Http\Request $request
|
||
|
|
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
|
||
|
|
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
|
||
|
|
*/
|
||
|
|
public function handle(Request $request, Closure $next, $text)
|
||
|
|
{
|
||
|
|
return $next($request);
|
||
|
|
$checkRole = User::with('manyRoles.roles')->where('id', \Auth::user()->id)->get();
|
||
|
|
$totalRolesAssigned = array();
|
||
|
|
foreach ($checkRole as $data) {
|
||
|
|
foreach ($data->manyRoles as $role) {
|
||
|
|
array_push($totalRolesAssigned, $role->roles->slug);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if (in_array('super-admin', $totalRolesAssigned)) {
|
||
|
|
// return true;
|
||
|
|
return $next($request);
|
||
|
|
}
|
||
|
|
foreach ($totalRolesAssigned as $slug) {
|
||
|
|
$roleData = Role::where('slug', $slug)->first();
|
||
|
|
if ($roleData) {
|
||
|
|
$appResource = AppResource::where('slug', $text)->first();
|
||
|
|
$permission = Permission::where('slug', 'view')->first();
|
||
|
|
if ($appResource && $permission) {
|
||
|
|
$appResourceAction = AppResourceAction::where('app_resource_xid', $appResource->id)->where('app_action_xid', $permission->id)->first();
|
||
|
|
if ($appResourceAction) {
|
||
|
|
$isRoleLinkWithResource = RoleAppResouceActionLink::where('app_resource_action_xid', $appResourceAction->id)->where('role_xid', $roleData->id)->exists();
|
||
|
|
if ($isRoleLinkWithResource) {
|
||
|
|
// return true;
|
||
|
|
return $next($request);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
// return $next($request);
|
||
|
|
abort(403);
|
||
|
|
}
|
||
|
|
}
|