diff --git a/app/Console/Commands/ImportMigrations.php b/app/Console/Commands/ImportMigrations.php index 7ec35be26304..2c0904406454 100644 --- a/app/Console/Commands/ImportMigrations.php +++ b/app/Console/Commands/ImportMigrations.php @@ -65,7 +65,7 @@ class ImportMigrations extends Command } } - private function getUser(): User + public function getUser(): User { $user = factory(\App\Models\User::class)->create([ 'email' => $this->faker->email, @@ -96,12 +96,12 @@ class ImportMigrations extends Command return $user; } - private function getAccount(): Account + public function getAccount(): Account { return factory(\App\Models\Account::class)->create(); } - private function getCompany(Account $account): Company + public function getCompany(Account $account): Company { $company = factory(Company::class)->create([ 'account_id' => $account->id, diff --git a/app/Http/Controllers/MigrationController.php b/app/Http/Controllers/MigrationController.php index f6f04fca99a2..6e0cfa12a123 100644 --- a/app/Http/Controllers/MigrationController.php +++ b/app/Http/Controllers/MigrationController.php @@ -11,6 +11,8 @@ namespace App\Http\Controllers; +use App\Console\Commands\ImportMigrations; +use App\DataMapper\CompanySettings; use App\Exceptions\MigrationValidatorFailed; use App\Exceptions\NonExistingMigrationFile; use App\Exceptions\ProcessingMigrationArchiveFailed; @@ -23,6 +25,7 @@ use App\Jobs\Util\StartMigration; use App\Mail\MigrationFailed; use App\Models\Account; use App\Models\Company; +use App\Models\CompanyToken; use App\Models\CompanyUser; use App\Transformers\AccountTransformer; use App\Transformers\CompanyUserTransformer; @@ -193,20 +196,39 @@ class MigrationController extends BaseController */ public function startMigration(Request $request, Company $company) { - if ($request->has('force') && !empty($request->force)) + $user = auth()->user(); + + if ($request->has('force') && !empty($request->force)) { $this->purgeCompany($company); + $account = (new ImportMigrations())->getAccount(); + $company = (new ImportMigrations())->getCompany($account); + + CompanyToken::create([ + 'user_id' => $user->id, + 'company_id' => $company->id, + 'account_id' => $account->id, + 'name' => $request->token_name ?? Str::random(12), + 'token' => $request->token ?? \Illuminate\Support\Str::random(64), + ]); + + $user->companies()->attach($company->id, [ + 'account_id' => $account->id, + 'is_owner' => 1, + 'is_admin' => 1, + 'is_locked' => 0, + 'notifications' => CompanySettings::notificationDefaults(), + 'permissions' => '', + 'settings' => null, + ]); + } + $migration_file = $request->file('migration') ->storeAs('migrations', $request->file('migration')->getClientOriginalName()); if (app()->environment() == 'testing') return; - $user = auth()->user(); -\Log::error($user); -\Log::error($company); -\Log::error("starting migration"); - - StartMigration::dispatch($migration_file, $user, $company); + StartMigration::dispatch(base_path("storage/app/public/$migration_file"), $user, $company); return response()->json([ '_id' => Str::uuid(), diff --git a/app/Jobs/Util/StartMigration.php b/app/Jobs/Util/StartMigration.php index d2f35726124c..1dabacdd270f 100644 --- a/app/Jobs/Util/StartMigration.php +++ b/app/Jobs/Util/StartMigration.php @@ -44,7 +44,7 @@ class StartMigration implements ShouldQueue */ public function __construct($filepath, User $user, Company $company) { - $this->filepath = base_path("storage/$filepath"); + $this->filepath = $filepath; $this->user = $user; $this->company = $company; }