namespace Cubist\Backpack\Console\Commands;
+use Cubist\Backpack\Magic\Models\CubistMagicAbstractModel;
+use Cubist\Util\Crypt;
+use Cubist\Util\Text;
+use Illuminate\Support\Facades\DB;
+use Illuminate\Support\Facades\Hash;
+
class InstallCommand extends CubistCommand
{
protected $signature = 'cubist:install';
public function handle()
{
- $devPackages = ['barryvdh/laravel-ide-helper', 'filp/whoops', 'laravel/tinker:^2.1'];
+ $devPackages = ['barryvdh/laravel-ide-helper', 'filp/whoops', 'laravel/tinker'];
$commands = [
'Update Cubist' => ['php artisan cubist:update'],
+ 'Laravel media library' => [
+ 'php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="migrations"',
+ 'php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="config"',
+ 'php artisan migrate --force',
+ 'php artisan cubist:magic:migrate',
+ ],
'Install backpack' => ['php artisan backpack:install'],
'Publish backpack assets' => ['php artisan vendor:publish --provider="Backpack\CRUD\BackpackServiceProvider" --tag="minimum"'],
'Install backpack addons' => [
'php artisan backpack:add-sidebar-content "<li class=\'nav-item nav-dropdown\'><a class=\'nav-link nav-dropdown-toggle\' href=\'#\'><i class=\'nav-icon la la-group\'></i>Authentication</a><ul class=\'nav-dropdown-items\'><li class=\'nav-item\'><a class=\'nav-link\' href=\'{{ backpack_url(\'user\') }}\'><i class=\'nav-icon la la-user\'></i><span>Users</span></a></li><li class=\'nav-item\'><a class=\'nav-link\' href=\'{{ backpack_url(\'role\') }}\'><i class=\'nav-icon la la-group\'></i> <span>Roles</span></a></li><li class=\'nav-item\'><a class=\'nav-link\' href=\'{{ backpack_url(\'permission\') }}\'><i class=\'nav-icon la la-key\'></i><span>Permissions</span></a></li></ul></li>"',
// Revisions
'php artisan vendor:publish --provider="Venturecraft\Revisionable\RevisionableServiceProvider"',
- 'php artisan migrate',
+ 'php artisan migrate --force',
],
'Install dev dependencies' => ['composer require --dev ' . implode(' ', $devPackages)],
"Dropzone" => 'php artisan gaspertrix:backpack:dropzone:install',
- 'Laravel media library' => [
- 'php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="migrations"',
- 'php artisan vendor:publish --provider="Spatie\MediaLibrary\MediaLibraryServiceProvider" --tag="config"'
- ],
+
'Cubist code generation' => ['php artisan cubist:magic:generate'],
'Database migrations' => [
- 'php artisan migrate',
+ 'php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"',
+ 'php artisan migrate --force',
'php artisan cubist:magic:migrate'
],
'Setup superadmin permission' => [
'php artisan permission:create-role superadmin',
],
+ 'Create first users' => [
+ function () {
+ $users = ['vincent@cubedesigners.com' => 'Vincent Vanwaelscappel', 'soufiane@cubedesigners.com'=> 'Soufiane Adili'];
+ foreach ($users as $email => $name) {
+ try {
+ /** @var CubistMagicAbstractModel $user */
+ $user = new \App\Models\User();
+ $user->password = Hash::make(Text::randText('60'));
+ $user->email = $email;
+ $user->name = $name;
+ $user->save();
+ DB::table('model_has_roles')->insert(['role_id' => 1, 'model_id' => $user->id, 'model_type' => 'App\\Models\\AuthUser']);
+ } catch (\Exception $e) {
+ echo $e->getMessage();
+ }
+ }
+ }
+ ],
'Clear caches' => ['php artisan optimize:clear'],
];
$command = [$command];
}
foreach ($command as $cmd) {
- $this->executeProcess($cmd);
+ if ($cmd instanceof \Closure) {
+ $cmd->call($this);
+ } else {
+ try {
+ $this->executeProcess($cmd);
+ } catch (\Exception $e) {
+ echo $cmd . ' : ' . $e->getMessage() . "\n";
+ }
+ }
}
$this->progressBar->advance();