HasPermissions.php 653 B

1234567891011121314151617181920212223
  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. $service = App::make(UserTypePermissionService::class);
  14. $permissions = $service->allPermissionsByUserType($this->type);
  15. $perm = $permissions->first(fn($p) => $p->permission->scope === $scope);
  16. return $perm && ($perm->bits & $requiredBit);
  17. }
  18. }