Esempio n. 1
0
 /**
  * @param string $context
  * @param SecurityContextConfiguration $configuration
  * @return Security
  */
 public function create($context, SecurityContextConfiguration $configuration)
 {
     $persistences = $this->repositories->createPersistenceRepository($context);
     $roles = $this->repositories->createRoleRepository($context);
     $users = $this->repositories->createUserRepository($context, $persistences, $roles);
     $sentinel = new Sentinel($persistences, $users, $roles, $this->repositories->createActivationRepository($context), $this->container->make(Dispatcher::class));
     foreach ($configuration->listCheckpoints() as $key => $checkpoint) {
         $sentinel->addCheckpoint($key, $this->makeCheckpoint($checkpoint, $configuration));
     }
     $sentinel->setReminderRepository($this->repositories->createReminderRepository($context, $users));
     $sentinel->setRequestCredentials(function () {
         $request = $this->container->make('request');
         $login = $request->getUser();
         $password = $request->getPassword();
         if ($login === null && $password === null) {
             return;
         }
         return compact('login', 'password');
     });
     $sentinel->creatingBasicResponse(function () {
         $headers = ['WWW-Authenticate' => 'Basic'];
         return new Response('Invalid credentials.', 401, $headers);
     });
     $security = new Security($sentinel, $this->repositories->createPermissionRepository($context));
     $this->bindUrlGenerator($security);
     $security->setLoginRoute($configuration->getLoginRoute());
     return $security;
 }
 /**
  * {@inheritdoc}
  */
 public function createPersistenceRepository($context)
 {
     if ($this->configuration($context)->getPersistenceRepository()) {
         $repository = $this->container->make($this->configuration($context)->getPersistenceRepository());
     } else {
         $repository = $this->defaults->createPersistenceRepository($context);
     }
     $repository->setPersistenceMode($this->configuration($context)->isSinglePersistence() ? 'single' : 'multi');
     return $repository;
 }
 /**
  * {@inheritdoc}
  */
 public function createPersistenceRepository($context)
 {
     return $this->bindAndReturn(PersistenceRepository::class, $this->repositories->createPersistenceRepository($context));
 }