コード例 #1
0
 /**
  * Handle a request
  *
  * @param ManifestJob $command
  *
  *
  * @return bool
  * @throws \Exception
  */
 public function handle(ManifestJob $command)
 {
     \Log::debug('[dfe:manifest] begin');
     if ($command->showManifest()) {
         $_manifest = ClusterManifest::createFromFile(base_path() . DIRECTORY_SEPARATOR . ConsoleDefaults::CLUSTER_MANIFEST_FILE);
         $_result = !$_manifest->existed() ? ErrorPacket::create() : SuccessPacket::make($_manifest->toArray());
         //  And then show it...
         if ($_manifest->existed()) {
             \Log::debug('  * Manifest found: ' . print_r($_manifest->all(), true));
         } else {
             \Log::info('  * No manifest file found. Nothing to show.');
         }
     } else {
         try {
             $_key = $command->noKeys() ? false : AppKey::createKey($command->getOwnerId(), $command->getOwnerType());
             if ($_key) {
                 $command->getOutput()->getVerbosity() == OutputInterface::VERBOSITY_VERBOSE && $command->getOutput()->writeln(' - generated client-id and secret: ' . $_key->client_id);
             }
             if ($command->createManifest()) {
                 //  Create a new manifest...
                 $_manifest = ClusterManifest::make(base_path(), ['cluster-id' => config('dfe.cluster-id'), 'default-domain' => config('provisioning.default-domain'), 'signature-method' => config('dfe.signature-method'), 'storage-root' => config('provisioning.storage-root'), 'console-api-url' => config('dfe.security.console-api-url'), 'console-api-key' => config('dfe.security.console-api-key'), 'client-id' => !$_key ? null : $_key->client_id, 'client-secret' => !$_key ? null : $_key->client_secret]);
                 $command->setResult($_result = SuccessPacket::make($_manifest->toArray(), Response::HTTP_CREATED));
             }
         } catch (\Exception $_ex) {
             $command->setResult($_result = ErrorPacket::create(Response::HTTP_BAD_REQUEST));
         }
     }
     \Log::debug('[dfe:manifest] end');
     return $command;
 }
コード例 #2
0
ファイル: Setup.php プロジェクト: rajeshpillai/dfe-console
    /**
     * Handle the command
     *
     * @return mixed
     */
    public function fire()
    {
        parent::fire();
        $this->config = config('commands.setup');
        //  1. Make sure it's a clean install
        if (0 != ServiceUser::count()) {
            if ($this->option('force')) {
                $this->writeln('system has users. <comment>--force</comment> override in place.');
                $this->_backupServiceUsers();
            } else {
                $this->writeln('system has users. use --force to override.', 'error');
                return 1;
            }
        }
        //  1.5 Generate an API secret and stick it in config for AppKey
        \Config::set('dfe.security.console-api-key', $_apiSecret = $this->option('api-secret') ?: $this->_generateApiSecret());
        //  2. Create initial admin user
        try {
            //  Delete all users
            /** @noinspection PhpUndefinedMethodInspection */
            DB::table('service_user_t')->delete();
            //  Add our new user
            $_user = ServiceUser::create(['first_name_text' => 'System', 'last_name_text' => 'Administrator', 'nickname_text' => 'Admin', 'email_addr_text' => $this->argument('admin-email'), 'password_text' => \Hash::make($this->option('admin-password')), 'active_ind' => 1]);
            if (empty($_user)) {
                throw new \Exception('Invalid response from user::create');
            }
            $this->writeln('user <comment>' . $this->argument('admin-email') . '</comment> created.', 'info');
            //  Register
            if (false === License::registerAdmin($_user)) {
                $this->writeln('Error while registering installation');
            }
        } catch (\Exception $_ex) {
            $this->writeln('Error while creating admin user: '******'error');
            return 1;
        }
        //  2. Check permissions and required directories
        $_paths = config('commands.setup.required-directories', []);
        foreach ($_paths as $_path) {
            if (!Disk::ensurePath($_path)) {
                $this->writeln('Unable to create directory: ' . $_path, 'error');
            }
        }
        //  3. Create console and dashboard API key sets
        $_consoleKey = AppKey::createKey(0, OwnerTypes::CONSOLE, ['server_secret' => $_apiSecret]);
        $_dashboardKey = AppKey::createKey(0, OwnerTypes::DASHBOARD, ['server_secret' => $_apiSecret]);
        //  4. Generate .dfe.cluster.json file
        ClusterManifest::make(base_path('database/dfe'), ['cluster-id' => config('dfe.cluster-id'), 'default-domain' => config('provisioning.default-domain'), 'signature-method' => config('dfe.signature-method'), 'storage-root' => config('provisioning.storage-root'), 'console-api-url' => config('dfe.security.console-api-url'), 'console-api-key' => $_apiSecret, 'client-id' => $_dashboardKey->client_id, 'client-secret' => $_dashboardKey->client_secret]);
        //  5.  Make a console environment
        $config = <<<INI
DFE_CONSOLE_API_KEY={$_apiSecret}
DFE_CONSOLE_API_CLIENT_ID={$_consoleKey->client_id}
DFE_CONSOLE_API_CLIENT_SECRET={$_consoleKey->client_secret}
INI;
        $this->_writeFile('console.env', $config);
        //  6.  Make a dashboard config file...
        $config = <<<INI
DFE_CONSOLE_API_KEY={$_apiSecret}
DFE_CONSOLE_API_CLIENT_ID={$_dashboardKey->client_id}
DFE_CONSOLE_API_CLIENT_SECRET={$_dashboardKey->client_secret}
INI;
        return $this->_writeFile('dashboard.env', $config);
    }