| 123456789101112131415161718192021222324252627282930 |
- <?php
- namespace App\Traits;
- use App\Enums\UserTypeEnum;
- use App\Models\Permission;
- use App\Services\UserTypePermissionService;
- use Illuminate\Support\Facades\App;
- trait HasPermissions
- {
- public function hasPermission(string $scope, string $accessType): bool
- {
- $requiredBit = Permission::getBit($accessType);
- if ($requiredBit === 0) return false;
- $userType = $this->activeUserType();
- if (!$userType) return false;
- if (in_array($userType->system_key, ['ADMIN', 'ADMIN_FRANCHISEE'], true)) {
- return true;
- }
- $service = App::make(UserTypePermissionService::class);
- $permissions = $service->allPermissionsByUserTypeId($userType->id);
- $perm = $permissions->first(fn($p) => $p->permission->scope === $scope);
- return $perm && ($perm->bits & $requiredBit);
- }
- }
|