getRoleNames())) { return true; } // Teamers may only view or edit their own dispositions if (in_array('ROLE_TEAMER', $token->getRoleNames())) { /** @var User $user */ $user = $token->getUser(); $teamer = $user->getTeamer(); /** @var Disposition $disposition */ $disposition = $subject; switch ($attribute) { case static::VIEW: case static::EDIT: case static::CONTRACT: case static::INVOICE: return $teamer === $disposition->getTeamer(); } } return false; } }