/** * @inheritdoc * * @param Group $subject */ protected function voteOnAttribute($attribute, $subject, TokenInterface $token) { /** @var User $user */ $user = $token->getUser(); if (!$user instanceof User) { return false; } if ($subject->getOwnerId() == $user->getId()) { return true; } $membership = $this->membershipManager->findUserMembershipOfGroup($subject->getId(), $user->getId()); if (!$membership) { return false; } if ($attribute === 'EDIT' && $membership->getRole() === Membership::ROLE_ADMIN) { return true; } return false; }
/** * @param Group $group * * @return array */ public function normalizeGroup(Group $group) { return ['reference' => $group->getReference(), 'name' => $group->getName(), 'description' => $group->getDescription(), 'type' => $group->getType(), 'owner' => $group->getOwnerId(), 'parent' => $group->getParentId()]; }