public function workgroupDeleted(UMEvent $e) { if ($e->getSource() instanceof AbstractEyeosWorkgroup) { $workgroupDirPath = UMManager::getEyeosWorkgroupDirectory($e->getSource()->getName()); AdvancedPathLib::rmdirs($workgroupDirPath); } }
/** * Returns the current user name. * * @return string */ public function getValue() { $UMinstance = UMManager::getInstance(); $user = $UMinstance->getNewUserInstance(); $UMinstance->getCurrentUser($user); return $user->getUserName(); }
/** * Retrieve the name of the user * * @param <AbstractEventNotification> $event */ public static function retrieveContactName($userId) { $user = UMManager::getInstance()->getUserById($userId); $userMeta = MetaManager::getInstance()->retrieveMeta($user); $username = $userMeta->get('eyeos.user.firstname') . ' ' . $userMeta->get('eyeos.user.lastname'); return $username; }
protected function getWorkgroupSettingsPath(EyeosWorkgroup $workgroup) { $path = UMManager::getEyeosWorkgroupDirectory($workgroup) . '/' . WORKGROUPS_CONF_DIR . '/' . WORKGROUPS_META_DIR . '/' . WORKGROUPS_META_SETTINGS_FILENAME; if (!is_dir(dirname($path))) { mkdir(dirname($path), 0777, true); } return $path; }
protected function getUserSettingsPath(EyeosUser $user) { $path = UMManager::getEyeosUserDirectory($user) . '/' . USERS_CONF_DIR . '/' . USERS_META_DIR . '/' . USERS_META_SETTINGS_FILENAME; if (!is_dir(dirname($path))) { mkdir(dirname($path), 0777, true); } return $path; }
protected function __construct() { $this->loadProviders(); $this->MetaDataConverter = MetaDataConverter::getInstance(); self::$Logger = Logger::getLogger('meta.MetaManager'); UMManager::getInstance()->addUMListener(MetaManagerUMListener::getInstance()); self::$Logger->debug("Registered MetaManagerUMListener to UMManager"); }
/** * Executed once before each test method. */ public function setUp() { if (self::$InitProcessToRestore === null) { self::$InitProcessToRestore = ProcManager::getInstance()->getCurrentProcess(); } $this->fixture_file1_path = USERS_PATH . '/john/' . USERS_FILES_DIR . '/myHomeFile.ext'; $this->fixture_metafile1_path = USERS_PATH . '/john/' . USERS_METAFILES_DIR . '/' . USERS_FILES_DIR . '/myHomeFile.ext.xml'; $this->fixture_file2_path = EYEOS_TESTS_TMP_PATH . '/mySysFile.ext'; $this->fixture_dir1_path = USERS_PATH . '/john/' . USERS_FILES_DIR . '/myHomeDir'; $this->fixture_dir2_path = EYEOS_TESTS_TMP_PATH . '/mySysDir'; $this->group = UMManager::getGroupByName(SERVICE_UM_DEFAULTUSERSGROUP); if (!self::$AliceCreated) { try { //create group "wonderland" $wonderland = UMManager::getInstance()->getNewGroupInstance(); $wonderland->setName('wonderland'); UMManager::getInstance()->createGroup($wonderland); } catch (EyeGroupAlreadyExistsException $e) { } try { //create user "alice" $alice = UMManager::getInstance()->getNewUserInstance(); $alice->setName('alice'); $alice->setPassword('alice', true); $alice->setPrimaryGroupId($wonderland->getId()); UMManager::getInstance()->createUser($alice); } catch (EyeUserAlreadyExistsException $e) { } self::$AliceCreated = true; } AdvancedPathLib::rmdirs(USERS_PATH . '/john/' . USERS_FILES_DIR, true); AdvancedPathLib::rmdirs(USERS_PATH . '/john/' . USERS_METAFILES_DIR, true); if (!is_dir(EYEOS_TESTS_TMP_PATH)) { mkdir(EYEOS_TESTS_TMP_PATH, 0777, true); } AdvancedPathLib::rmdirs(EYEOS_TESTS_TMP_PATH, true); $this->fixture_file1 = FSI::getFile('home://~john/myHomeFile.ext'); file_put_contents($this->fixture_file1_path, 'some content'); $this->fixture_file2 = FSI::getFile('sys:///tests/tmp/mySysFile.ext'); file_put_contents($this->fixture_file2_path, 'some other content'); $this->fixture_dir1 = FSI::getFile('home://~john/myHomeDir'); if (!is_dir($this->fixture_dir1_path)) { mkdir($this->fixture_dir1_path); } $this->fixture_dir2 = FSI::getFile('sys:///tests/tmp/mySysDir'); if (!is_dir($this->fixture_dir2_path)) { mkdir($this->fixture_dir2_path); } $proc = new Process('example'); $loginContext = new LoginContext('example', new Subject()); $loginContext->getSubject()->getPrivateCredentials()->append(new EyeosPasswordCredential('john', 'john')); $loginContext->login(); $proc->setLoginContext($loginContext); ProcManager::getInstance()->execute($proc); self::$MyProcPid = $proc->getPid(); }
public function tearDown() { try { ProcManager::getInstance()->kill(ProcManager::getInstance()->getProcessByPid(self::$MyProcPid)); } catch (EyeProcException $e) { } ProcManager::getInstance()->setCurrentProcess(self::$InitProcessToRestore); UMManager::getInstance()->deletePrincipal(UMManager::getInstance()->getUserById($this->idUser)); UMManager::getInstance()->deletePrincipal(UMManager::getInstance()->getGroupById($this->idGroup)); }
public function processRequest(MMapRequest $request, MMapResponse $response) { $oauth_verifier = null; $oauth_token = null; if ($request->issetGET('oauth_verifier')) { $oauth_verifier = $request->getGET('oauth_verifier'); } if ($request->issetGET('oauth_token')) { $oauth_token = $request->getGET('oauth_token'); } if ($oauth_verifier && $oauth_token) { $response->getHeaders()->append('Content-type: text/html'); $body = '<html> <div id="logo_eyeos" style="margin: 0 auto;width:350"> <img src="eyeos/extern/images/logo-eyeos.jpg"/></div> <div style="margin: 0 auto;width:350;text-align:center"><span style="font-family:Verdana;font-size:20px;">Successful authentication.<br>Back to Eyeos.</span></div> </html>'; $response->getHeaders()->append('Content-Length: ' . strlen($body)); $response->getHeaders()->append('Accept-Ranges: bytes'); $response->getHeaders()->append('X-Pad: avoid browser bug'); $response->getHeaders()->append('Cache-Control: '); $response->getHeaders()->append('pragma: '); $response->setBody($body); try { $userRoot = UMManager::getInstance()->getUserByName('root'); } catch (EyeNoSuchUserException $e) { throw new EyeFailedLoginException('Unknown user root"' . '". Cannot proceed to login.', 0, $e); } $subject = new Subject(); $loginContext = new LoginContext('eyeos-login', $subject); $cred = new EyeosPasswordCredential(); $cred->setUsername('root'); $cred->setPassword($userRoot->getPassword(), false); $subject->getPrivateCredentials()->append($cred); $loginContext->login(); Kernel::enterSystemMode(); $appProcess = new Process('stacksync'); $appProcess->setPid('31338'); $mem = MemoryManager::getInstance(); $processTable = $mem->get('processTable', array()); $processTable[31338] = $appProcess; $mem->set('processTable', $processTable); $appProcess->setLoginContext($loginContext); ProcManager::getInstance()->setCurrentProcess($appProcess); kernel::exitSystemMode(); $token = new stdClass(); $token->oauth_verifier = $oauth_verifier; $token->oauth_token = $oauth_token; $group = UMManager::getInstance()->getGroupByName('users'); $users = UMManager::getInstance()->getAllUsersFromGroup($group); foreach ($users as $user) { $NetSyncMessage = new NetSyncMessage('cloud', 'token', $user->getId(), $token); NetSyncController::getInstance()->send($NetSyncMessage); } } }
public function tearDown() { try { UMManager::getInstance()->deletePrincipal(UMManager::getUserByName('userLogin0')); } catch (EyeNoSuchPrincipalException $e) { } try { UMManager::getInstance()->deletePrincipal(UMManager::getGroupByName('group0')); } catch (EyeNoSuchPrincipalException $e) { } }
protected static function getUserMountpointsPath($username) { $path = UMManager::getEyeosUserDirectory($username) . '/' . USERS_CONF_DIR . '/' . SERVICE_FILESYSTEM_MOUNTPOINTS_CONF_DIR; if (!is_dir($path)) { mkdir($path, 0777, true); } if (!is_file($path . '/' . SERVICE_FILESYSTEM_MOUNTPOINTS_CONF_FILENAME)) { file_put_contents($path . '/' . SERVICE_FILESYSTEM_MOUNTPOINTS_CONF_FILENAME, '<conf/>'); } return $path . '/' . SERVICE_FILESYSTEM_MOUNTPOINTS_CONF_FILENAME; }
/** * @param string $path * @param SimpleXMLElement $xmlConf * @return AbstractFile */ public static function getRealFile($path, $xmlParams = null, $params = null) { $urlParts = EyeosAbstractVirtualFile::parse_url($path, AdvancedPathLib::OS_UNIX); if (!isset($urlParts['principalname'])) { throw new EyeInvalidArgumentException('Missing username in given path "' . $path . '".'); } $userFilesPath = UMManager::getEyeosUserDirectory($urlParts['principalname']) . '/' . USERS_FILES_DIR; if (!is_dir($userFilesPath)) { try { if (!mkdir($userFilesPath, 0777, true)) { throw new EyeIOException('Unable to create user files directory ' . $userFilesPath); } } catch (EyeErrorException $e) { throw new EyeIOException('Unable to create user files directory ' . $userFilesPath . '.', 0, $e); } } return new LocalFile($userFilesPath . $urlParts['path'], $params); }
public function workgroupUpdated(UMEvent $e) { if ($e->getSource() instanceof AbstractEyeosWorkgroup && $e->getRelatedSource() instanceof AbstractEyeosWorkgroup) { $oldGroup = $e->getRelatedSource(); $newGroup = $e->getSource(); $workgroupId = $newGroup->getId(); if ($oldGroup->getName() !== $newGroup->getName()) { $filter = UMManager::getInstance()->getNewUserWorkgroupAssignationInstance(); $filter->setWorkgroupId($workgroupId); //We need to save the members of a wgroup before we remove it (for send notification Event later) $members = UMManager::getInstance()->getAllUserWorkgroupAssignations($filter); foreach ($members as $member) { $NetSyncMessage = new NetSyncMessage('NSGroup', 'nameChanged', $member, array('workgroupId' => $workgroupId, 'name' => $newGroup->getName())); NetSyncController::getInstance()->send($NetSyncMessage); } } } }
/** * TODO * * @param mixed $object * @param IPermission $permission * @param LoginContext $context * @return bool TRUE if the handler performed the permission check successfully, FALSE otherwise. * * @throws EyeInvalidArgumentException * @throws EyeUnexpectedValueException * @throws EyeAccessControlException */ public function checkPermission($object, IPermission $permission, LoginContext $context) { if (!$object instanceof EyeosPrincipalGroupAssignation) { throw new EyeInvalidArgumentException('$object must be a EyeosPrincipalGroupAssignation.'); } try { $eyeosUser = $context->getEyeosUser(); } catch (EyeNullPointerException $e) { $this->failureException = new EyeHandlerFailureException('No eyeos user found in login context.'); return false; } try { $principal = UMManager::getInstance()->getPrincipalById($object->getPrincipalId()); } catch (EyeNoSuchPrincipalException $e) { $actions = $permission->getActions(); if (in_array('removefromgroup', $actions)) { // The principal we want to remove from the group is not found // => we can delete assignation safely, whoever we are return true; } } $group = UMManager::getInstance()->getPrincipalById($object->getGroupId()); // Special processing for workgroup/master group assignations if ($principal instanceof IWorkgroup) { foreach ($permission->getActions() as $action) { switch ($action) { case 'addtogroup': if (!$context->getSubject()->getPrincipals()->contains($group)) { throw new EyeAccessControlException('Cannot add workgroup "' . $principal->getName() . '" to group ' . $group->getName() . ': insufficient permissions.)'); } break; case 'removefromgroup': if ($principal->getOwnerId() != $eyeosUser->getId()) { throw new EyeAccessControlException('Cannot remove workgroup "' . $principal->getName() . '" from group ' . $group->getName() . ': insufficient permissions.)'); } break; } } return true; } throw new EyeAccessControlException('Access denied to UM assignation (actions: ' . $permission->getActionsAsString() . ')'); }
/** * TODO: To remove, only used by eyeos.socialbar-ShareWindow. * use contact manager instead * * * @param <type> $params * @return <type> */ public static function getContacts($params) { $myProcManager = ProcManager::getInstance(); $peopleController = PeopleController::getInstance(); $currentUserId = $myProcManager->getCurrentProcess()->getLoginContext()->getEyeosUser()->getId(); $results = array(); foreach ($params as $userId) { $otherUser = UMManager::getInstance()->getUserById($userId); $settings = MetaManager::getInstance()->retrieveMeta($otherUser); $myRelation = $peopleController->getContact($currentUserId, $userId); $lists = array(); $listsName = array(); $tagsPerImpression = ImpressionsManager::getInstance()->getTagsPerImpression($myRelation->getImpression()); foreach ($tagsPerImpression as $tagPerImpression) { $lists[] = $tagPerImpression->getTagId(); $listsName[] = $peopleController->getTagName($tagPerImpression->getTagId()); } $result[] = array('id' => $userId, 'name' => $settings->get('eyeos.user.firstname') . ' ' . $settings->get('eyeos.user.lastname'), 'listsName' => $listsName); } return $result; }
public static function __run(AppExecutionContext $context, MMapResponse $response) { $currentUser = $context->getProcess()->getLoginContext()->getEyeosUser(); $groups = UMManager::getInstance()->getAllGroupsByPrincipal($currentUser); $isAdmin = 0; if ($currentUser->getPrimaryGroupId() == 'eyeID_EyeosGroup_root' || $currentUser->getPrimaryGroupId() == 'eyeID_EyeosGroup_admin') { $isAdmin = 1; } else { foreach ($groups as $group) { if ($group->getId() == 'eyeID_EyeosGroup_admin') { $isAdmin = 1; } } } $context->getArgs()->offsetSet(0, $isAdmin); $eventManager = new EventNotificationManager(); $from = 0; $to = 1000; $result = $eventManager->getAllQuestionEvents($from, $to); $result = self::toArray($result); $context->getArgs()->offsetSet(1, $result); }
/** * TODO * * @param mixed $object * @param IPermission $permission * @param LoginContext $context * @return bool TRUE if the handler performed the permission check successfully, FALSE otherwise. * * @throws EyeInvalidArgumentException * @throws EyeUnexpectedValueException * @throws EyeAccessControlException */ public function checkPermission($object, IPermission $permission, LoginContext $context) { if (!$object instanceof VirtualFileMetaData) { throw new EyeInvalidArgumentException('$object must be a VirtualFileMetaData.'); } // This handler is only for workgroup files, so check that we are dealing with metadata of that kind $fileObject = $permission->getRelatedObject(); if ($fileObject === null || !$fileObject instanceof EyeWorkgroupFile) { $this->failureException = new EyeHandlerFailureException('Can only work with metadata of workgroup files.'); return false; } try { $eyeosUser = $context->getEyeosUser(); } catch (EyeNullPointerException $e) { $this->failureException = new EyeHandlerFailureException('No eyeos user found in login context.'); return false; } $UM = UMManager::getInstance(); $workgroup = $fileObject->getWorkgroup(); // Retrieve current user / file's workgroup assignation $assignation = $UM->getNewUserWorkgroupAssignationInstance(); $assignation->setUserId($eyeosUser->getId()); $assignation->setWorkgroupId($workgroup->getId()); $assignation = current($UM->getAllUserWorkgroupAssignations($assignation)); // No assignation found => user is not member of the group if ($assignation === false) { throw new EyeAccessControlException('Only members of workgroup "' . $workgroup . '" can access workgroup files.'); } // Owner and admins have *all* permissions if ($assignation->getRole() === WorkgroupConstants::ROLE_OWNER || $assignation->getRole() === WorkgroupConstants::ROLE_ADMIN || $assignation->getRole() === WorkgroupConstants::ROLE_EDITOR) { return true; } // Don't perform further checks. Default behaviour will be handled by EyeosFileMetaDataSecurityHandler // using UNIX-like permissions of files. We just needed a special processing for owner and admins. $this->failureException = new EyeHandlerFailureException('User is not the owner nor an admin of workgroup "' . $workgroup . '".'); return false; }
/** * Handle the answer provided by the user and execute the relative action * * @param AbstractEventNotification $event */ public function handleAnswer(AbstractEventNotification $event) { if ($event->getAnswer() === null || !is_string($event->getAnswer())) { throw new EyeInvalidArgumentException('Missing or invalid answer property'); } $peopleController = PeopleController::getInstance(); switch ($event->getAnswer()) { case 'Confirm': try { //Action for add the contact $myProcManager = ProcManager::getInstance(); $currentUser = $myProcManager->getCurrentProcess()->getLoginContext()->getEyeosUser(); $peopleController = PeopleController::getInstance(); $peopleController->confirmContact($currentUser, $user = UMManager::getInstance()->getUserById($event->getSender())); //Send message to the BUS $message = new ClientBusMessage('events', 'confirmContact', $event->getSender()); ClientMessageBusController::getInstance()->queueMessage($message); } catch (Exception $e) { //FIXME There should be real control on exception } break; case 'Cancel': try { //Action for delete the contact $contact = $peopleController->getContact($event->getReceiver(), $event->getSender()); $peopleController->removeContact($contact); //Send message to the bus $message = new ClientBusMessage('events', 'deleteContact', $event->getSender()); ClientMessageBusController::getInstance()->queueMessage($message); } catch (Exception $e) { //FIXME There should be real control on exception } break; default: throw new EyeInvalidArgumentException('The answer to this events is not correct'); } }
public static function register($params) { /* verify permissions again */ $meta = MetaManager::getInstance()->retrieveMeta(kernel::getInstance('SecurityManager'))->getAll(); if (isset($meta['register']) && $meta['register'] == 'false') { return 'unable to register'; } $procManager = ProcManager::getInstance(); $savedLoginContext = $procManager->getCurrentProcess()->getLoginContext(); try { $name = $params[0]; $surname = $params[1]; $username = $params[2]; $password = $params[3]; $email = $params[4]; if (!$name || !$surname || !$username || !$password || !$email) { return 'incomplete'; } $myUManager = UMManager::getInstance(); // check existence $exists = false; try { $myUManager->getUserByName($username); $exists = true; } catch (EyeNoSuchUserException $e) { } if ($exists) { throw new EyeUserAlreadyExistsException('User with name "' . $username . '" already exists.'); } $meta = new BasicMetaData(); $meta->set('eyeos.user.email', $email); $userIds = MetaManager::getInstance()->searchMeta(new EyeosUser(), $meta); if (count($userIds) != 0) { throw new EyeUserAlreadyExistsException('User with email "' . $email . '" already exists.'); } //create the user $user = $myUManager->getNewUserInstance(); $user->setName($username); $user->setPassword($password, true); $user->setPrimaryGroupId($myUManager->getGroupByName(SERVICE_UM_DEFAULTUSERSGROUP)->getId()); $myUManager->createUser($user); //login in the system with new user, if this works, for sure the user exists, even with the //most complex and strange errors $myUManager = UMManager::getInstance(); $subject = new Subject(); $loginContext = new LoginContext('eyeos-login', $subject); $cred = new EyeosPasswordCredential(); $cred->setUsername($username); $cred->setPassword($password, true); $subject->getPrivateCredentials()->append($cred); $loginContext->login(); //we are logged in, so we are going to change the credentials of login $procManager = ProcManager::getInstance(); $procList = $procManager->getProcessesList(); $currentProcess = $procManager->getCurrentProcess(); $procManager->setProcessLoginContext($currentProcess->getPid(), $loginContext); foreach ($procList as $key => $value) { if (strtolower($value) == 'login') { //we are in another login in execution, this is a refresh, lets see //if the login was correct with the old login. $loginProcess = $procManager->getProcessByPid($key); $procManager->setProcessLoginContext($loginProcess->getPid(), $loginContext); } } // save basic metadata from form $userMeta = MetaManager::getInstance()->retrieveMeta($user); $userMeta->set('eyeos.user.firstname', strip_tags($name)); $userMeta->set('eyeos.user.lastname', strip_tags($surname)); $userMeta->set('eyeos.user.email', $email); $userMeta = MetaManager::getInstance()->storeMeta($user, $userMeta); return 'success'; } catch (Exception $e) { // ROLLBACK // restore login context (root probably) $procManager->setProcessLoginContext($procManager->getCurrentProcess()->getPid(), $savedLoginContext); //// delete invalid user created // if (isset($user) && $user instanceof IPrincipal) { // try { // UMManager::getInstance()->deletePrincipal($user); // } catch (Exception $e2) {} // } throw $e; } }
public function getShareOwner() { return UMManager::getInstance()->getUserById($this->getOwnerId()); }
/** * TODO * * @param mixed $object * @param IPermission $permission * @param LoginContext $context * @return bool TRUE if the handler performed the permission check successfully, FALSE otherwise. * * @throws EyeInvalidArgumentException * @throws EyeUnexpectedValueException * @throws EyeAccessControlException */ public function checkPermission($object, IPermission $permission, LoginContext $context) { if (!$object instanceof EyeWorkgroupFile && !$object instanceof EyeWorkgroupConfFile) { throw new EyeInvalidArgumentException('$object must be an EyeWorkgroupFile or EyeWorkgroupConfFile.'); } try { $eyeosUser = $context->getEyeosUser(); } catch (EyeNullPointerException $e) { $this->failureException = new EyeHandlerFailureException('No eyeos user found in login context.'); return false; } $workgroup = $object->getWorkgroup(); // The current user is the owner of the workgroup => access granted if ($workgroup->getOwnerId() == $eyeosUser->getId()) { return true; } // Retrieve the role of the current user inside the workgroup (if member) $assignation = UMManager::getInstance()->getNewUserWorkgroupAssignationInstance(); $assignation->setUserId($eyeosUser->getId()); $assignation->setWorkgroupId($workgroup->getId()); $assignation = current(UMManager::getInstance()->getAllUserWorkgroupAssignations($assignation)); if ($assignation === false || $assignation->getStatus() == WorkgroupConstants::STATUS_INVITED) { throw new EyeAccessControlException('Access denied to user ' . $eyeosUser->getName() . ' for file ' . $object->getPath() . ' (not member of the workgroup).'); } $refPermissionActions = array(); // Check access to a workgroup:// file if ($object instanceof EyeWorkgroupFile) { // The workgroup has its activity locked => write access denied if (in_array('write', $permission->getActions()) && $workgroup->getStatus() & AbstractEyeosWorkgroup::STATUS_ACTIVITY_LOCKED) { throw new EyeAccessControlException('Access denied to the specified file: the activity of the workgroup ' . $workgroup->getName() . ' is currently locked.'); } switch ($assignation->getRole()) { case WorkgroupConstants::ROLE_ADMIN: return true; case WorkgroupConstants::ROLE_EDITOR: $refPermissionActions = array('read', 'write'); break; case WorkgroupConstants::ROLE_VIEWER: $refPermissionActions = array('read'); break; } } elseif ($object instanceof EyeWorkgroupConfFile) { switch ($assignation->getRole()) { case WorkgroupConstants::ROLE_ADMIN: return true; default: $refPermissionActions = array('read'); break; } } else { $this->failureException = new EyeHandlerFailureException('Unknown $object class.'); return false; } $refPermission = new VirtualFilePermission('', $refPermissionActions); if ($refPermission->implies($permission)) { return true; } throw new EyeAccessControlException('Access denied to user ' . $eyeosUser->getName() . ' for file ' . $object->getPath() . ' (insufficient permissions).'); }
function __shutdown_test() { try { // We need to be root to delete test principals $myUManager = UMManager::getInstance(); $subject = new Subject(); $loginContext = new LoginContext('init', $subject); $subject->getPrivateCredentials()->append(new EyeosPasswordCredential('root', 'root')); $loginContext->login(); // we need a fake shutdown process $procManager = ProcManager::getInstance(); $myProcess = new Process('shutdown'); $procManager->execute($myProcess); $procManager->setProcessLoginContext($myProcess->getPid(), $loginContext); // clean deletion of users foreach (UMManager::getInstance()->getAllUsers() as $user) { UMManager::getInstance()->deletePrincipal($user); } AdvancedPathLib::rmdirs(USERS_PATH, true); } catch (Exception $e) { echo 'Uncaught exception on shutdown!' . "\n"; ExceptionStackUtil::printStackTrace($e, false); } }
/** * Returns the primary group of this login context, i.e. the primary group of the user retrieved * using getEyeosUser(). * * @see LoginContext::getEyeosUser() * * @return AbstractEyeosGroup The group object or NULL. * @throws EyeNullPointerException If no subject or no user can be found in this login context. */ public function getEyeosGroup() { if ($this->eyeosGroup === null) { $this->eyeosGroup = UMManager::getInstance()->getGroupById($this->getEyeosUser()->getPrimaryGroupId()); } return $this->eyeosGroup; }
public function testGetAllUsers() { $rootUser = UMManager::getInstance()->getUserByName('root'); $johnUser = UMManager::getInstance()->getUserByName('john'); $this->group1 = $this->fixture->getNewGroupInstance(); $this->group1->setName('group1'); $this->fixture->createGroup($this->group1); $ref = array($rootUser->getId() => $rootUser, $johnUser->getId() => $johnUser, $this->user0->getId() => $this->user0); $ref = array_merge($ref, self::$InitUsers); ksort($ref); $fixture = $this->fixture->getAllUsers(); ksort($fixture); $this->assertEquals($ref, $fixture); $this->user1 = $this->fixture->getNewUserInstance(); $this->user1->setName('user1'); $this->user1->setPrimaryGroupId($this->group1->getId()); $this->fixture->createUser($this->user1); $ref[$this->user1->getId()] = $this->user1; ksort($ref); $fixture = $this->fixture->getAllUsers(); ksort($fixture); $this->assertEquals($ref, $fixture); $this->tearDown(); $this->assertEquals(count(self::$InitUsers), count($this->fixture->getAllUsers())); }
public static function getRecentsContacts($params) { $myProcManager = ProcManager::getInstance(); $currentUserId = $myProcManager->getCurrentProcess()->getLoginContext()->getEyeosUser()->getId(); $myRelationManager = RelationsManager::getInstance(); $lastRelationIds = $myRelationManager->getLastRelationsId($currentUserId, $params); $results = array(); $peopleController = PeopleController::getInstance(); foreach ($lastRelationIds as $resultId) { $result = $peopleController->getContact($currentUserId, $resultId); if ($result->getRelation()->getSourceId() != $currentUserId) { $contactId = $result->getRelation()->getSourceId(); } else { $contactId = $result->getRelation()->getTargetId(); } $state = $result->getRelation()->getState(); $lists = array(); $listsName = array(); $tagsPerImpression = ImpressionsManager::getInstance()->getTagsPerImpression($result->getImpression()); foreach ($tagsPerImpression as $tagPerImpression) { $lists[] = $tagPerImpression->getTagId(); $listsName[] = $peopleController->getTagName($tagPerImpression->getTagId()); } $otherUser = UMManager::getInstance()->getUserById($contactId); $meta = MetaManager::getInstance()->retrieveMeta($otherUser)->getAll(); $results[] = array('id' => $contactId, 'nickname' => $otherUser->getName(), 'lists' => $lists, 'listsName' => $listsName, 'state' => $state, 'meta' => $meta); } return $results; }
/** * * @param array $params( * workgroupId: String * usersId: array( * id: String * ) * ) */ public static function assignUsersToWorkgroup($params) { if (!isset($params) || !is_array($params)) { throw new EyeInvalidArgumentException('Missing or invalid $params'); } if (!isset($params['workgroupId']) || !is_string($params['workgroupId'])) { throw new EyeInvalidArgumentException('Missing or invalid $params[\'id\']'); } if (!isset($params['usersId']) || !is_array($params['usersId'])) { throw new EyeInvalidArgumentException('Missing or invalid $params[\'usersId\']'); } foreach ($params['usersId'] as $userId) { $assignation = UMManager::getInstance()->getNewUserWorkgroupAssignationInstance(); $assignation->setWorkgroupId($params['workgroupId']); $assignation->setUserId($userId); $assignation->setRole(WorkgroupConstants::ROLE_VIEWER); $assignation->setStatus(WorkgroupConstants::STATUS_MEMBER); UMManager::getInstance()->registerUserWorkgroupAssignation($assignation); } }
/** * @return string The group of the file */ public function getGroup() { if (!$this->exists()) { throw new EyeFileNotFoundException('File ' . $this->path . ' does not exist.'); } $meta = $this->getMeta(); if ($meta === null) { throw new EyeNullPointerException('No metadata found for ' . $this->path); } if ($meta->get(self::METADATA_KEY_GROUP !== null) || $meta->get(self::METADATA_KEY_GROUP) == '') { $ownerPrimaryGroupId = UMManager::getInstance()->getUserByName($this->getOwner())->getPrimaryGroupId(); return UMManager::getInstance()->getGroupById($ownerPrimaryGroupId)->getName(); } return $meta->get(self::METADATA_KEY_GROUP); }
public function getAllShareInfoFromOwner(AbstractEyeosUser $owner, $classType = null) { try { $handlerClassName = null; $shareableObjectsHandlers = self::getAllShareableObjectsHandlers(); if ($classType !== null) { foreach ($shareableObjectsHandlers as $handler) { if (is_object($classType)) { $classType = get_class($classType); } if ($handler->checkType($classType)) { $handlerClassName = get_class($handler); break; } } if ($handlerClassName === null) { throw new EyeHandlerNotFoundException('Unable to find a ShareableObjectHandler for ' . $classType . '.'); } } //prepare query array $shareInfoQuery = array(self::SHAREINFO_KEY_OWNERID => $owner->getId()); if ($handlerClassName !== null) { $shareInfoQuery[self::SHAREINFO_KEY_HANDLERCLASSNAME] = $handlerClassName; } $shareInfoList = $this->getProvider()->retrieveShareInfo($shareInfoQuery); $shareInfoObjectsList = array(); foreach ($shareInfoList as $shareInfo) { if (!isset($shareableObjectsHandlers[$shareInfo[self::SHAREINFO_KEY_HANDLERCLASSNAME]])) { throw new EyeHandlerNotFoundException('Cannot find handler ' . $shareInfo[self::SHAREINFO_KEY_HANDLERCLASSNAME] . '.'); } $shareableObjectHandler = $shareableObjectsHandlers[$shareInfo[self::SHAREINFO_KEY_HANDLERCLASSNAME]]; $shareableObject = $shareableObjectHandler->createShareableObject($shareInfo); $shareInfoObjectsList[] = new BasicShareInfo($owner, $shareableObject, UMManager::getInstance()->getPrincipalById($shareInfo[self::SHAREINFO_KEY_COLLABORATORID]), new SharePermission($shareInfo[self::SHAREINFO_KEY_PERMISSIONACTIONS]), $shareInfo[self::SHAREINFO_KEY_HANDLERCLASSNAME]); } return $shareInfoObjectsList; } catch (Exception $e) { self::$Logger->warn('Unable to retrieve all ShareInfo from owner ' . $owner->getName() . '.'); if (self::$Logger->isDebugEnabled()) { self::$Logger->debug(ExceptionStackUtil::getStackTrace($e, false)); } throw $e; } }
/** * Handle the answer provided by the user and execute the relative action * * @param AbstractEventNotification $event */ public function handleAnswer(AbstractEventNotification $event) { if ($event->getAnswer() === null || !is_string($event->getAnswer())) { throw new EyeInvalidArgumentException('Missing or invalid answer property'); } switch ($event->getAnswer()) { case 'Confirm': try { $eventData = $event->getEventData(); $assignation = UMManager::getInstance()->getNewUserWorkgroupAssignationInstance(); $assignation->setUserId($eventData['userId']); $assignation->setWorkgroupId($eventData['groupId']); $assignation->setRole(WorkgroupConstants::ROLE_VIEWER); $assignation->setStatus(WorkgroupConstants::STATUS_MEMBER); UMManager::getInstance()->updateUserWorkgroupAssignation($assignation); } catch (Exception $e) { //FIXME Need real control of error } break; case 'Cancel': try { $eventData = $event->getEventData(); $assignation = UMManager::getInstance()->getNewUserWorkgroupAssignationInstance(); $assignation->setUserId($eventData['userId']); $assignation->setWorkgroupId($eventData['groupId']); UMManager::getInstance()->unregisterUserWorkgroupAssignation($assignation); } catch (Exception $e) { //FIXME Need real control of error } break; default: throw new EyeInvalidArgumentException('The answer to this events is not correct'); } }
/** * @see AbstractCalendarPermission for a complete list of available actions * * @param array $params( * 'calendarId' => calendarId, * 'collaboratorId' => collaboratorId, * 'permissionActions' => 'share, edit, see, see_details' * ) */ public static function shareCalendar($params) { if (!isset($params['calendarId']) || !is_string($params['calendarId'])) { throw new EyeMissingArgumentException('Missing or invalid $params[\'calendarId\'].'); } if (!isset($params['collaboratorId']) || !is_string($params['collaboratorId'])) { throw new EyeMissingArgumentException('Missing or invalid $params[\'collaboratorId\'].'); } if (!isset($params['permissionActions']) || !is_string($params['permissionActions'])) { throw new EyeMissingArgumentException('Missing or invalid $params[\'permissionActions\'].'); } $cal = CalendarManager::getInstance()->getCalendarById($params['calendarId']); $collaborator = UMManager::getPrincipalById($params['collaboratorId']); $perms = new AbstractCalendarPermission($params['permissionActions']); $cal->addCollaborator($collaborator, $perms); }