/** * @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) { } }
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']; } }); }