public function can($permissions, $arguments = []) { // Get param $userId = Auth::user()->id; // Get roles $listRole = (new RoleUser())->getUserRole($userId); if (empty($listRole) || empty($permissions)) { return false; } if (!is_array($permissions)) { $permissions = [$permissions]; } // Get list permissions id $listPermissions = NodePermission::whereIn('name', $permissions)->lists('id'); // Get permission status $rolePerm = PermissionRole::whereIn('role_id', $listRole)->whereIn('permission_id', $listPermissions)->get(); if (!$rolePerm->count()) { return false; } foreach ($rolePerm as $perm) { if ($perm->status == 1) { return true; } } return false; }
/** * Check guest roles have a permission * * @param $route * @return boolean */ public static function isAllowGuest(array $route = []) { // Get param $route_method = $route['route_method']; $route_name = $route['route_name']; // Get roles $guestRole = Role::where('name', 'guest')->lists('id'); if (!$guestRole->count()) { return false; } // Get permission $permissions = parent::where(['route_method' => $route_method, 'route_name' => $route_name])->lists('permission_id')->toArray(); if (empty($permissions)) { return false; } // Get permission status $rolePerm = PermissionRole::whereIn('role_id', $guestRole)->whereIn('permission_id', $permissions)->get(); if (!$rolePerm->count()) { return false; } foreach ($rolePerm as $perm) { if ($perm->status == 1) { return true; } } return false; }