/** * Install the system. * * @param array $parameters * @return bool */ public function install(array $parameters) { $this->dispatch(new GenerateEnvironmentFile($this->dispatch(new GetEnvironmentVariables($parameters)))); $this->dispatch(new SetupApplication($parameters)); $this->dispatch(new RunMigrations()); $this->dispatch(new InstallAllModules(true)); $this->dispatch(new InstallAllExtensions(true)); $this->dispatch(new AutoloadEntryModels()); $this->dispatch(new RegisterAddons()); $credentials = ['email' => $parameters['admin_email'], 'username' => $parameters['admin_username'], 'password' => $parameters['admin_password']]; $user = $this->users->create($credentials, true); $admin = $this->roles->create(['en' => ['name' => 'Administrator'], 'slug' => 'admin']); $this->roles->create(['en' => ['name' => 'User'], 'slug' => 'user']); $this->users->attachRole($user, $admin); $application = $this->applications->newInstance(); $application->enabled = true; $application->name = array_get($parameters, 'application_name'); $application->domain = array_get($parameters, 'application_domain'); $application->reference = array_get($parameters, 'application_reference'); $application->save(); return true; }
/** * Find an application by domain. * * @param $domain * @return null|ApplicationModel */ public function findByDomain($domain) { $domain = trim(str_replace(['http://', 'https://'], '', $domain), '/'); return $this->model->leftJoin('applications_domains', 'applications.id', '=', 'applications_domains.application_id')->where('applications.domain', $domain)->orWhere('applications_domains.domain', $domain)->first(); }