/**
  * @covers Alchemy\Phrasea\Authentication\ProvidersCollection::get
  */
 public function testGetOnNonExistentFails()
 {
     $provider = $this->getProviderMock('neutron-provider');
     $providers = new ProvidersCollection();
     try {
         $providers->get('neutron-provider');
         $this->fail('Should have raised an exception');
     } catch (InvalidArgumentException $e) {
     }
 }
예제 #2
0
 public function registerUser(array $data, array $selectedCollections = null, $providerId = null)
 {
     $provider = null;
     if ($providerId !== null) {
         $provider = $this->oauthProviderCollection->get($providerId);
     }
     $inscriptions = $this->registrationManager->getRegistrationSummary();
     $authorizedCollections = $this->getAuthorizedCollections($selectedCollections, $inscriptions);
     if (!isset($data['login'])) {
         $data['login'] = $data['email'];
     }
     $user = $this->userManipulator->createUser($data['login'], $data['password'], $data['email'], false);
     if (isset($data['geonameid'])) {
         $this->userManipulator->setGeonameId($user, $data['geonameid']);
     }
     foreach (self::$userPropertySetterMap as $property => $method) {
         if (isset($data[$property])) {
             call_user_func(array($user, $method), $data[$property]);
         }
     }
     $this->entityManager->persist($user);
     $this->entityManager->flush($user);
     if (null !== $provider) {
         $this->attachProviderToUser($provider, $user);
         $this->entityManager->flush();
     }
     $this->applyAclsToUser($authorizedCollections, $user);
     $this->createCollectionAccessDemands($user, $authorizedCollections);
     $user->setMailLocked(true);
     return $user;
 }
 public function register(Application $app)
 {
     $app['authentication'] = $app->share(function (Application $app) {
         return new Authenticator($app, $app['browser'], $app['session'], $app['EM']);
     });
     $app['authentication.token-validator'] = $app->share(function (Application $app) {
         return new TokenValidator($app['tokens']);
     });
     $app['authentication.persistent-manager'] = $app->share(function (Application $app) {
         return new CookieManager($app['auth.password-encoder'], $app['EM'], $app['browser']);
     });
     $app['authentication.suggestion-finder'] = $app->share(function (Application $app) {
         return new SuggestionFinder($app['manipulator.user']->getRepository());
     });
     $app['authentication.providers.factory'] = $app->share(function (Application $app) {
         return new ProviderFactory($app['url_generator'], $app['session']);
     });
     $app['authentication.providers.account-creator'] = $app->share(function (Application $app) {
         $authConf = $app['conf']->get('authentication');
         $templates = array_filter(array_map(function ($templateId) use($app) {
             try {
                 if (is_int($templateId) || ctype_digit($templateId)) {
                     return $app['manipulator.user']->getRepository()->find($templateId);
                 }
                 if (false !== $templateId) {
                     return $app['manipulator.user']->getRepository()->find($templateId);
                 }
             } catch (\Exception $e) {
             }
         }, $authConf['auto-create']['templates']));
         $enabled = $app['conf']->get(['registry', 'registration', 'auto-register-enabled']) && $app['registration.manager']->isRegistrationEnabled();
         return new AccountCreator($app['tokens'], $app['phraseanet.appbox'], $enabled, $templates);
     });
     $app['authentication.providers'] = $app->share(function (Application $app) {
         $providers = new ProvidersCollection();
         $authConf = $app['conf']->get('authentication');
         foreach ($authConf['providers'] as $providerId => $data) {
             if (isset($data['enabled']) && false === $data['enabled']) {
                 continue;
             }
             $providers->register($app['authentication.providers.factory']->build($providerId, $data['options']));
         }
         return $providers;
     });
     $app['authentication.manager'] = $app->share(function (Application $app) {
         return new Manager($app['authentication'], $app['authentication.providers']);
     });
     $app['auth.password-encoder'] = $app->share(function (Application $app) {
         return new PasswordEncoder($app['conf']->get(['main', 'key']));
     });
     $app['auth.old-password-encoder'] = $app->share(function (Application $app) {
         return new OldPasswordEncoder();
     });
     $app['auth.native.failure-manager'] = $app->share(function (Application $app) {
         $authConf = $app['conf']->get(['authentication', 'captcha']);
         return new FailureManager($app['EM'], $app['recaptcha'], isset($authConf['trials-before-display']) ? $authConf['trials-before-display'] : 9);
     });
     $app['auth.password-checker'] = $app->share(function (Application $app) {
         return new NativeAuthentication($app['auth.password-encoder'], $app['auth.old-password-encoder'], $app['manipulator.user']);
     });
     $app['auth.native'] = $app->share(function (Application $app) {
         $authConf = $app['conf']->get('authentication');
         if ($authConf['captcha']['enabled']) {
             return new FailureHandledNativeAuthentication($app['auth.password-checker'], $app['auth.native.failure-manager']);
         } else {
             return $app['auth.password-checker'];
         }
     });
 }