/** * @param Group $group * @param string $filename */ public function exportGroupMembers(Group $group, $filename) { $handle = fopen($filename, 'w+'); fputcsv($handle, ['Role', 'Id', 'Login name', 'First name', 'Last name', 'Email'], ';'); $memberships = $this->membershipManager->findGroupMemberships($group->getId(), null, 0, 9999); foreach ($memberships as $membership) { $user = $membership->getUser(); fputcsv($handle, [$membership->getRole(), $user->getId(), $user->getLoginName(), $user->getFirstName(), $user->getLastName(), $user->getEmail()], ';'); } fclose($handle); }
/** * @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 * @param int $offset * @param int $limit * @param string $role * * @return SynchronizableSequence */ public function findGroupUsers(Group $group, $offset = 0, $limit = 100, $role = null) { // New group, so no Users yet if ($group->getId() === null) { return new SynchronizableSequence([]); } $data = $this->guzzle->get('groups/' . $group->getId() . '/users', ['query' => ['offset' => $offset, 'limit' => $limit, 'sort' => 'reference', 'role' => $role]]); $data = $this->decode($data->getBody()); return $this->normalizer->denormalizeGroupUsers($data); }
/** * @param Group $group * * @return string */ private function getGroupCN(Group $group) { $cn = str_replace(['"', '/', '\\', '[', ']', ':', ';', '|', '=', ',', '+', '*', '?', '<', '>'], '', $group->getName()); $maxLength = 64 - 1 - strlen($group->getId()) - strlen($this->mapping['group']['name_prefix']); $cn = substr($cn, 0, $maxLength); $cn = $this->mapping['group']['name_prefix'] . strtolower($cn) . '_' . $group->getId(); return $cn; }