Пример #1
0
 public function testFailureSendPassword()
 {
     $ms = new MailService($this->em, $this->mailer, 'en', 'no-reply@no-reply');
     $user = new User();
     $user->setEmail('*****@*****.**');
     $this->assertTrue(is_array($ms->sendPassword($user, 'password')));
 }
Пример #2
0
 /**
  * {@inheritdoc}
  */
 protected function execute(InputInterface $input, OutputInterface $output)
 {
     /* @var EntityManager $em */
     $em = $this->getContainer()->get('doctrine.orm.entity_manager');
     $username = $input->getOption('username');
     $email = $input->getOption('email');
     $password = $input->getOption('password');
     if (false === $input->getOption('no-interactions')) {
         /* @var DialogHelper $dialog */
         $dialog = $this->getHelper('dialog');
         $output->writeln('<info>This command will let you to create a test user that you can user to authenticated to administration interface</info>');
         $output->write(PHP_EOL);
         $username = $dialog->ask($output, '<question>Username:</question> ');
         $email = $dialog->ask($output, '<question>Email:</question> ');
         do {
             $password = $dialog->askHiddenResponse($output, '<question>Password:</question> ');
             $passwordConfirm = $dialog->askHiddenResponse($output, '<question>Password again:</question> ');
             if ($password != $passwordConfirm) {
                 $output->writeln('<error>Entered passwords do not match, please try again</error>');
             }
         } while ($password != $passwordConfirm);
     }
     /* @var UserPasswordEncoderInterface $encoder */
     $encoder = $this->getContainer()->get('security.password_encoder');
     $user = new User();
     $user->setEmail($email);
     $user->setUsername($username);
     $user->setPassword($encoder->encodePassword($user, $password));
     $em->persist($user);
     $em->flush();
     $output->writeln('');
     $output->writeln(sprintf('<info>Great success! User "%s" has been successfully created!</info>', $user->getUsername()));
 }
 /**
  * @param User $user
  *
  * @return string
  */
 private function getLocale(User $user)
 {
     $settings = $this->em->getRepository(UserSettings::clazz())->findOneBy(array('user' => $user->getId()));
     if ($settings && $settings->getLanguage() && $settings->getLanguage()->getEnabled()) {
         return $settings->getLanguage()->getLocale();
     }
     return $this->defaultLocale;
 }
Пример #4
0
 public function testMapData_WillBeNotTouched()
 {
     $meta = array('WillExistsAfterMapping' => true);
     $params = array('lastName' => 'Last Name');
     $user = new User();
     $user->setMeta($meta);
     $this->mapper->mapData($params, $user);
     $this->assertEquals('Last Name', $user->getLastName());
     $this->assertEquals($meta, $user->getMeta());
 }
Пример #5
0
 public function testGetRoles()
 {
     $user = new User();
     $this->assertEquals(['ROLE_USER'], $user->getRoles());
     // ---
     $rootUserHandler = \Phake::mock('Modera\\SecurityBundle\\RootUserHandling\\RootUserHandlerInterface');
     \Phake::when($rootUserHandler)->isRootUser($user)->thenReturn(false);
     \Phake::when($rootUserHandler)->getRoles()->thenReturn(['ROLE_FOO', 'ROLE_BAR']);
     $user->init($rootUserHandler);
     $this->assertEquals(['ROLE_USER'], $user->getRoles());
     // ---
     \Phake::when($rootUserHandler)->isRootUser($user)->thenReturn(true);
     $this->assertEquals(['ROLE_FOO', 'ROLE_BAR'], $user->getRoles());
 }
 /**
  * @param string $queryType
  * @param string $query
  *
  * @return array[]
  */
 public function suggest($queryType, $query)
 {
     if ('user' == $queryType) {
         $dql = $this->em->createQuery(sprintf('SELECT u FROM %s u WHERE u.firstName LIKE ?0 OR u.lastName LIKE ?0 OR u.username LIKE ?0 OR u.email LIKE ?0', User::clazz()));
         $dql->setParameter(0, '%' . $query . '%');
         $rawResult = [];
         foreach ($dql->getResult() as $user) {
             /* @var User $user */
             $value = $this->stringifyUser($user);
             $rawResult[] = array('id' => $user->getId(), 'value' => $value);
         }
         return $rawResult;
     } elseif ('exact-user' == $queryType) {
         // find by ID
         $user = $this->em->find(User::clazz(), $query);
         if (!$user) {
             throw new \DomainException(T::trans('Unable to find a user "%username%"', array('%username%' => $query)));
         }
         return [array('id' => $user->getId(), 'value' => $this->stringifyUser($user))];
     } elseif ('eventType' == $queryType) {
         $activities = $this->activityManager->query(array('filter' => [array('property' => 'type', 'value' => 'like:%' . $query . '%')]));
         $rawResult = [];
         foreach ($activities['items'] as $activity) {
             /* @var ActivityInterface $activity */
             $rawResult[] = $activity->getType();
         }
         $rawResult = array_values(array_unique($rawResult));
         $result = [];
         foreach ($rawResult as $item) {
             $result[] = array('id' => $item, 'value' => $item);
         }
         return $result;
     }
 }
 public function testPostLoadWithEntity()
 {
     $user = \Phake::mock(User::clazz());
     $event = $this->createEvent($user);
     $listener = new RootUserHandlerInjectionListener($this->container);
     $listener->postLoad($event);
     \Phake::verify($user)->init($this->rootUserHandler);
 }
Пример #8
0
 public function testGetByRole()
 {
     $user1 = new User();
     $user2 = new User();
     $user3 = new User();
     $user1->setUsername('user1');
     $user1->setPassword('pwd1');
     $user1->setEmail('*****@*****.**');
     $user2->setUsername('user2');
     $user2->setPassword('pwd2');
     $user2->setEmail('*****@*****.**');
     $user3->setUsername('user3');
     $user3->setPassword('pwd3');
     $user3->setEmail('*****@*****.**');
     $permission1 = new Permission();
     $permission2 = new Permission();
     $permission1->setRoleName('ROLE_USER');
     $permission1->addUser($user1);
     $permission2->setRoleName('ROLE_ADMIN');
     $permission2->addUser($user2);
     $group1 = new Group();
     $group2 = new Group();
     $group1->setName('User');
     $group1->addPermission($permission1);
     $group1->addUser($user3);
     $group2->setName('Admin');
     $group2->addPermission($permission2);
     $group2->addUser($user3);
     self::$em->persist($user1);
     self::$em->persist($user2);
     self::$em->persist($user3);
     self::$em->persist($permission1);
     self::$em->persist($permission2);
     self::$em->persist($group1);
     self::$em->persist($group2);
     self::$em->flush();
     $rootUserHandler = \Phake::mock('Modera\\SecurityBundle\\RootUserHandling\\RootUserHandlerInterface');
     $service = new UserService(self::$em, $rootUserHandler);
     $this->assertEquals(array($user1, $user3), $service->getUsersByRole('ROLE_USER'));
     $this->assertEquals(array($user2, $user3), $service->getUsersByRole('ROLE_ADMIN'));
     $this->assertEquals(array($user1->getId(), $user3->getId()), $service->getIdsByRole('ROLE_USER'));
     $this->assertEquals(array($user2->getId(), $user3->getId()), $service->getIdsByRole('ROLE_ADMIN'));
 }
Пример #9
0
 public function testRootUser()
 {
     $em = \Phake::mock('Doctrine\\ORM\\EntityManager');
     $rootUserHandler = \Phake::mock('Modera\\SecurityBundle\\RootUserHandling\\RootUserHandlerInterface');
     $service = new UserService($em, $rootUserHandler);
     $user = \Phake::mock(User::clazz());
     \Phake::when($rootUserHandler)->getUser()->thenReturn($user);
     \Phake::when($rootUserHandler)->isRootUser($user)->thenReturn(true);
     $this->assertEquals($user, $service->getRootUser());
     $this->assertTrue($service->isRootUser($user));
 }
 public function testSecurityRolesMerger()
 {
     $roles = array(new Role('ROLE_USER'), new Role('ROLE_ADMIN'));
     $user = \Phake::mock(User::clazz());
     \Phake::when($user)->getId()->thenReturn(777);
     \Phake::when($user)->getFullName()->thenReturn('John Doe');
     \Phake::when($user)->getEmail()->thenReturn('*****@*****.**');
     \Phake::when($user)->getUsername()->thenReturn('john.doe');
     $token = \Phake::mock('Symfony\\Component\\Security\\Core\\Authentication\\Token\\TokenInterface');
     \Phake::when($token)->getUser()->thenReturn($user);
     \Phake::when($token)->getRoles()->thenReturn($roles);
     $serviceDefinitions = array('fooService', 'barService');
     $clientDiDefinitionsProvider = $this->createMock(ContributorInterface::CLAZZ);
     $clientDiDefinitionsProvider->expects($this->atLeastOnce())->method('getItems')->will($this->returnValue($serviceDefinitions));
     $tokenStorage = \Phake::mock('Symfony\\Component\\Security\\Core\\Authentication\\Token\\Storage\\TokenStorageInterface');
     \Phake::when($tokenStorage)->getToken()->thenReturn($token);
     $provider = new ConfigMergersProvider($tokenStorage, $clientDiDefinitionsProvider);
     $mergers = $provider->getItems();
     $this->assertEquals(2, count($mergers));
     /* @var ConfigMergerInterface $securityRolesMerger */
     $securityRolesMerger = $mergers[0];
     /* @var ConfigMergerInterface $clientDiDefinitionsProviderMerger */
     $clientDiDefinitionsProviderMerger = $mergers[1];
     $this->assertInstanceOf('Modera\\MjrIntegrationBundle\\Config\\ConfigMergerInterface', $securityRolesMerger);
     $this->assertInstanceOf('Modera\\MjrIntegrationBundle\\Config\\ConfigMergerInterface', $clientDiDefinitionsProviderMerger);
     $existingConfig = array('something' => 'blah');
     $mergedConfig = $securityRolesMerger->merge($existingConfig);
     $this->assertTrue(is_array($mergedConfig));
     $this->assertArrayHasKey('something', $mergedConfig);
     $this->assertEquals('blah', $mergedConfig['something']);
     $this->assertArrayHasKey('roles', $mergedConfig);
     $this->assertTrue(is_array($mergedConfig['roles']));
     $this->assertEquals(2, count($mergedConfig['roles']));
     $this->assertTrue(in_array('ROLE_USER', $mergedConfig['roles']));
     $this->assertTrue(in_array('ROLE_ADMIN', $mergedConfig['roles']));
     $this->assertArrayHasKey('userProfile', $mergedConfig);
     $this->assertTrue(is_array($mergedConfig['userProfile']));
     $this->assertArrayHasKey('id', $mergedConfig['userProfile']);
     $this->assertArrayHasKey('name', $mergedConfig['userProfile']);
     $this->assertArrayHasKey('email', $mergedConfig['userProfile']);
     $this->assertArrayHasKey('username', $mergedConfig['userProfile']);
     $this->assertEquals(777, $mergedConfig['userProfile']['id']);
     $this->assertEquals('John Doe', $mergedConfig['userProfile']['name']);
     $this->assertEquals('*****@*****.**', $mergedConfig['userProfile']['email']);
     $this->assertEquals('john.doe', $mergedConfig['userProfile']['username']);
     $mergedConfig = $clientDiDefinitionsProviderMerger->merge($existingConfig);
     $this->assertArrayHasKey('serviceDefinitions', $mergedConfig);
     $this->assertTrue(is_array($mergedConfig['serviceDefinitions']));
     $this->assertEquals(2, count($mergedConfig['serviceDefinitions']));
     $this->assertTrue(in_array('fooService', $mergedConfig['serviceDefinitions']));
     $this->assertTrue(in_array('barService', $mergedConfig['serviceDefinitions']));
 }
 private function createUser()
 {
     $u = new User();
     $u->setFirstName('Joe');
     $u->setLastName('Doe');
     $u->setUsername('djatel');
     $u->setEmail('*****@*****.**');
     $u->setPassword(1234);
     self::$em->persist($u);
     self::$em->flush();
     return $u;
 }
Пример #12
0
 /**
  * @param ActivityInterface $activity
  *
  * @return array
  */
 public function resolve(ActivityInterface $activity)
 {
     $isId = preg_match('/^[0-9]+$/', $activity->getAuthor());
     if ($isId) {
         /* @var User $user */
         $user = $this->om->find(User::clazz(), $activity->getAuthor());
         if ($user) {
             return array('id' => $user->getId(), 'isUser' => true, 'fullName' => $user->getFullName(), 'username' => $user->getUsername());
         } else {
             return array('isUser' => false, 'identity' => $activity->getAuthor());
         }
     } else {
         return array('isUser' => false, 'identity' => $activity->getAuthor() ? $activity->getAuthor() : T::trans('Unknown'));
     }
 }
 public function testIsRootUser()
 {
     $container = \Phake::mock('Symfony\\Component\\DependencyInjection\\ContainerInterface');
     $bundleConfig = array('root_user' => array('query' => array('dat', 'is', 'query')));
     $em = \Phake::mock('Doctrine\\ORM\\EntityManager');
     \Phake::when($container)->getParameter(ModeraSecurityExtension::CONFIG_KEY)->thenReturn($bundleConfig);
     \Phake::when($container)->get('doctrine.orm.entity_manager')->thenReturn($em);
     $handler = new SemanticConfigRootUserHandler($container);
     $anonymousUser = \Phake::mock(User::clazz());
     $dbUser = \Phake::mock(User::clazz());
     \Phake::when($dbUser)->isEqualTo($anonymousUser)->thenReturn('dat is true');
     $userRepository = \Phake::mock('Doctrine\\Common\\Persistence\\ObjectRepository');
     \Phake::when($userRepository)->findOneBy($bundleConfig['root_user']['query'])->thenReturn($dbUser);
     \Phake::when($em)->getRepository(User::clazz())->thenReturn($userRepository);
     $this->assertEquals('dat is true', $handler->isRootUser($anonymousUser));
 }
Пример #14
0
 public function testUserToArray()
 {
     $user = \Phake::mock(User::clazz());
     \Phake::when($user)->getId()->thenReturn(777);
     \Phake::when($user)->getFullName()->thenReturn('John Doe');
     \Phake::when($user)->getEmail()->thenReturn('*****@*****.**');
     \Phake::when($user)->getUsername()->thenReturn('john.doe');
     $result = Authenticator::userToArray($user);
     $this->assertTrue(is_array($result));
     $this->assertArrayHasKey('id', $result);
     $this->assertArrayHasKey('name', $result);
     $this->assertArrayHasKey('email', $result);
     $this->assertArrayHasKey('username', $result);
     $this->assertEquals(777, $result['id']);
     $this->assertEquals('John Doe', $result['name']);
     $this->assertEquals('*****@*****.**', $result['email']);
     $this->assertEquals('john.doe', $result['username']);
 }
 public function testGetItems()
 {
     $user = \Phake::mock(User::clazz());
     \Phake::when($user)->getId()->thenReturn('foo-id');
     $token = \Phake::mock('Symfony\\Component\\Security\\Core\\Authentication\\Token\\UsernamePasswordToken');
     \Phake::when($token)->getUser()->thenReturn($user);
     $tokenStorage = \Phake::mock('Symfony\\Component\\Security\\Core\\Authentication\\Token\\Storage\\TokenStorageInterface');
     \Phake::when($tokenStorage)->getToken()->thenReturn($token);
     $configEntry = \Phake::mock('Modera\\ConfigBundle\\Config\\ConfigurationEntryInterface');
     \Phake::when($configEntry)->getValue()->thenReturn('foo-value');
     $configEntriesManager = \Phake::mock('Modera\\ConfigBundle\\Config\\ConfigurationEntriesManagerInterface');
     \Phake::when($configEntriesManager)->findOneByNameOrDie(ModeraBackendGoogleAnalyticsBundle::TRACKING_CODE_CONFIG_KEY)->thenReturn($configEntry);
     $provider = new ConfigMergersProvider($tokenStorage, $configEntriesManager, 'prod');
     $items = $provider->getItems();
     $this->assertTrue(is_array($items));
     $this->assertEquals(1, count($items));
     /* @var ConfigMergerInterface $merger */
     $merger = $items[0];
     $this->assertInstanceOf('Modera\\MjrIntegrationBundle\\Config\\ConfigMergerInterface', $merger);
     $config = $merger->merge(array());
     $this->assertArrayHasKey('modera_backend_google_analytics', $config);
     $config = $config['modera_backend_google_analytics'];
     $this->assertArrayHasKey('tracking_code', $config);
     $this->assertEquals('foo-value', $config['tracking_code']);
     $this->assertEquals('foo-id', $config['user_id']);
     $this->assertArrayHasKey('user_id', $config);
     $this->assertArrayHasKey('is_debug', $config);
     $this->assertFalse($config['is_debug']);
     // because it's "prod" env now
     $this->assertArrayHasKey('prefix', $config);
     $this->assertEquals('/backend', $config['prefix']);
     // --- env = dev
     $provider = new ConfigMergersProvider($tokenStorage, $configEntriesManager, 'dev');
     $items = $provider->getItems();
     $this->assertTrue(is_array($items));
     $this->assertEquals(1, count($items));
     $config = $items[0]->merge(array());
     $this->assertTrue($config['modera_backend_google_analytics']['is_debug']);
 }
Пример #16
0
 /**
  * First settings entries returned are more specific.
  *
  * @param User $user
  *
  * @return array
  */
 private function getSettings(User $user)
 {
     $settings = [];
     /** @var UserSettings $userSettings */
     $userSettings = $this->em->getRepository(UserSettings::class)->findOneBy(array('user' => $user));
     if ($userSettings) {
         $settings[] = $userSettings->getDashboardSettings();
     }
     foreach ($user->getGroups() as $group) {
         /** @var GroupSettings $groupSettings */
         $groupSettings = $this->em->getRepository(GroupSettings::class)->findOneBy(array('group' => $group));
         if ($groupSettings) {
             $settings[] = $groupSettings->getDashboardSettings();
         }
     }
     return $settings;
 }
Пример #17
0
 /**
  * Find users by some property.
  *
  * @param $property
  * @param $value
  *
  * @return User[]
  */
 public function findUsersBy($property, $value)
 {
     return $this->em->getRepository(User::clazz())->findBy(array($property => $value));
 }
Пример #18
0
 /**
  * @param User $user
  *
  * @return array
  */
 public static function userToArray(User $user)
 {
     return array('id' => $user->getId(), 'name' => $user->getFullName(), 'email' => $user->getEmail(), 'username' => $user->getUsername());
 }
Пример #19
0
 /**
  * @return array
  */
 public function getConfig()
 {
     $self = $this;
     return array('entity' => User::clazz(), 'create_default_data_mapper' => function (ContainerInterface $container) {
         return $this->container->get('modera_backend_security.data_mapper.user_data_mapper');
     }, 'security' => array('actions' => array('create' => ModeraBackendSecurityBundle::ROLE_MANAGE_USER_PROFILES, 'update' => function (AuthorizationCheckerInterface $ac, array $params) use($self) {
         /* @var TokenStorageInterface $ts */
         $ts = $self->get('security.token_storage');
         /* @var User $user */
         $user = $ts->getToken()->getUser();
         if ($ac->isGranted(ModeraBackendSecurityBundle::ROLE_MANAGE_USER_PROFILES)) {
             return true;
         } else {
             // irrespectively of what privileges user has we will always allow him to edit his
             // own profile data
             return $user instanceof User && isset($params['record']['id']) && $user->getId() == $params['record']['id'];
         }
     }, 'remove' => ModeraBackendSecurityBundle::ROLE_MANAGE_USER_PROFILES, 'list' => ModeraBackendSecurityBundle::ROLE_ACCESS_BACKEND_TOOLS_SECURITY_SECTION)), 'hydration' => array('groups' => array('main-form' => ['id', 'username', 'email', 'firstName', 'lastName', 'middleName', 'meta'], 'list' => function (User $user) {
         $groups = array();
         foreach ($user->getGroups() as $group) {
             $groups[] = $group->getName();
         }
         return array('id' => $user->getId(), 'username' => $user->getUsername(), 'email' => $user->getEmail(), 'firstName' => $user->getFirstName(), 'lastName' => $user->getLastName(), 'middleName' => $user->getMiddleName(), 'state' => $user->getState(), 'groups' => $groups, 'meta' => $user->getMeta());
     }, 'compact-list' => ['id', 'username', 'fullname'], 'delete-user' => ['username']), 'profiles' => array('list', 'delete-user', 'main-form', 'compact-list', 'modera-backend-security-group-groupusers' => HydrationProfile::create(false)->useGroups(array('compact-list')))), 'map_data_on_create' => function (array $params, User $entity, DataMapperInterface $defaultMapper, ContainerInterface $container) use($self) {
         $defaultMapper->mapData($params, $entity);
         if (isset($params['plainPassword']) && $params['plainPassword']) {
             $plainPassword = $params['plainPassword'];
         } else {
             $plainPassword = $self->generatePassword();
         }
         $self->setPassword($entity, $plainPassword);
         if (isset($params['sendPassword']) && $params['sendPassword'] != '') {
             /* @var MailService $mailService */
             $mailService = $container->get('modera_backend_security.service.mail_service');
             $mailService->sendPassword($entity, $plainPassword);
         }
     }, 'map_data_on_update' => function (array $params, User $entity, DataMapperInterface $defaultMapper, ContainerInterface $container) use($self) {
         $defaultMapper->mapData($params, $entity);
         /* @var LoggerInterface $activityMgr */
         $activityMgr = $container->get('modera_activity_logger.manager.activity_manager');
         /* @var TokenStorageInterface $ts */
         $ts = $container->get('security.token_storage');
         if (isset($params['plainPassword']) && $params['plainPassword']) {
             $self->setPassword($entity, $params['plainPassword']);
             if (isset($params['sendPassword']) && $params['sendPassword'] != '') {
                 /* @var MailService $mailService */
                 $mailService = $container->get('modera_backend_security.service.mail_service');
                 $mailService->sendPassword($entity, $params['plainPassword']);
             }
             $activityMsg = T::trans('Password has been changed for user "%user%".', array('%user%' => $entity->getUsername()));
             $activityContext = array('type' => 'user.password_changed', 'author' => $ts->getToken()->getUser()->getId());
             $activityMgr->info($activityMsg, $activityContext);
         } else {
             $activityMsg = T::trans('Profile data is changed for user "%user%".', array('%user%' => $entity->getUsername()));
             $activityContext = array('type' => 'user.profile_updated', 'author' => $ts->getToken()->getUser()->getId());
             $activityMgr->info($activityMsg, $activityContext);
         }
     }, 'remove_entities_handler' => function ($entities, $params, $defaultHandler, ContainerInterface $container) {
         /* @var UserService $userService */
         $userService = $container->get('modera_security.service.user_service');
         $operationResult = new OperationResult();
         foreach ($entities as $entity) {
             /* @var User $entity*/
             $userService->remove($entity);
             $operationResult->reportEntity(User::clazz(), $entity->getId(), OperationResult::TYPE_ENTITY_REMOVED);
         }
         return $operationResult;
     });
 }
Пример #20
0
 /**
  * @return array
  */
 private static function getTablesClasses()
 {
     return array(Permission::clazz(), PermissionCategory::clazz(), User::clazz(), Group::clazz(), Activity::clazz());
 }
 /**
  * {@inheritdoc}
  */
 public function getUser()
 {
     return $this->em->getRepository(User::clazz())->findOneBy($this->config['query']);
 }