/**
  * Execute the console command.
  *
  * @return void
  */
 public function fire()
 {
     $data = [];
     /** @var DomainAwareTenantParticipant $tenant */
     foreach ($this->repository->findBy([], ['name' => 'ASC']) as $tenant) {
         $data[] = ['id' => $tenant->getId(), 'name' => $tenant->getName(), 'domain' => $tenant->getDomain(), 'owner' => $tenant->getTenantOwner()->getName(), 'model' => $tenant->getSecurityModel()];
     }
     $this->table($this->headers, $data);
 }
 /**
  * @param string $domain
  *
  * @return RouteCollection
  */
 protected function resolveTenantRoutes($domain)
 {
     if (null === ($dt = $this->repository->findOneByDomain($domain))) {
         return $this->error(sprintf('No tenant found for "%s", are you sure you entered the correct domain?', $domain));
     }
     /** @var Tenant $tenant */
     $tenant = app('auth.tenant');
     $tenant->updateTenancy(new NullUser(), $dt->getTenantOwner(), $dt);
     $this->resolver->boot($this->router);
     return $this->routes = $this->router->getRoutes();
 }
 /**
  * Handle an incoming request.
  *
  * @param  \Illuminate\Http\Request $request
  * @param  \Closure                 $next
  *
  * @return mixed
  */
 public function handle($request, \Closure $next)
 {
     $config = app('config');
     $view = app('view');
     $domain = str_replace($config->get('tenancy.multi_site.ignorable_domain_components', []), '', $request->getHost());
     $tenant = $this->repository->findOneByDomain($domain);
     if (!$tenant instanceof TenantParticipant) {
         throw new \RuntimeException(sprintf('Unable to resolve host "%s" to valid TenantParticipant.', $domain));
     }
     $finder = $view->getFinder();
     if ($finder instanceof TenantViewFinder) {
         $paths = $this->appendPathsInFinder($finder, $tenant);
     } else {
         $paths = $this->registerPathsInFinder($view, $finder, $tenant);
     }
     // update app config
     $config->set('app.url', $request->getHost());
     $config->set('view.paths', array_merge($config->get('view.paths', []), $paths));
     // bind resolved tenant data to container
     app('auth.tenant')->updateTenancy(new NullUser(), $tenant->getTenantOwner(), $tenant);
     return $next($request);
 }
 /**
  * @param string $domain
  *
  * @return null|TenantParticipantContract
  */
 public function findOneByDomain($domain)
 {
     return $this->repository->findOneByDomain($domain);
 }