HasPermissions.php 861 B

123456789101112131415161718192021222324252627282930
  1. <?php
  2. namespace App\Traits;
  3. use App\Enums\UserTypeEnum;
  4. use App\Models\Permission;
  5. use App\Services\UserTypePermissionService;
  6. use Illuminate\Support\Facades\App;
  7. trait HasPermissions
  8. {
  9. public function hasPermission(string $scope, string $accessType): bool
  10. {
  11. $requiredBit = Permission::getBit($accessType);
  12. if ($requiredBit === 0) return false;
  13. $userType = $this->activeUserType();
  14. if (!$userType) return false;
  15. if (in_array($userType->system_key, ['ADMIN', 'ADMIN_FRANCHISEE'], true)) {
  16. return true;
  17. }
  18. $service = App::make(UserTypePermissionService::class);
  19. $permissions = $service->allPermissionsByUserTypeId($userType->id);
  20. $perm = $permissions->first(fn($p) => $p->permission->scope === $scope);
  21. return $perm && ($perm->bits & $requiredBit);
  22. }
  23. }