Add Domain Verification on Onboarding Wizard

This commit is contained in:
Raish
2021-06-18 09:51:19 +00:00
committed by Mohit Panjwani
parent 2fb46a4ab3
commit 8eb47b553e
26 changed files with 1549 additions and 1401 deletions

View File

@ -3,8 +3,12 @@
namespace Crater\Http\Controllers\V1\Mobile;
use Crater\Http\Controllers\Controller;
use Crater\Http\Requests\DomainEnvironmentRequest;
use Crater\Models\User;
use Crater\Space\EnvironmentManager;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\ValidationException;
@ -40,4 +44,9 @@ class AuthController extends Controller
'success' => true,
]);
}
public function check()
{
return Auth::check();
}
}

View File

@ -0,0 +1,33 @@
<?php
namespace Crater\Http\Controllers\V1\Onboarding;
use Crater\Http\Controllers\Controller;
use Crater\Http\Requests\DomainEnvironmentRequest;
use Crater\Space\EnvironmentManager;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Artisan;
class AppDomainController extends Controller
{
/**
*
* @param DomainEnvironmentRequest $request
*/
public function __invoke(DomainEnvironmentRequest $request)
{
Artisan::call('optimize:clear');
$environmentManager = new EnvironmentManager();
$results = $environmentManager->saveDomainVariables($request);
if (in_array('error', $results)) {
return response()->json($results);
}
return response()->json([
'success' => false,
]);
}
}

View File

@ -32,16 +32,20 @@ class DatabaseConfigurationController extends Controller
Artisan::call('config:clear');
Artisan::call('cache:clear');
$status = pcntl_fork();
pcntl_wait($status);
$results = $this->environmentManager->saveDatabaseVariables($request);
if (array_key_exists("success", $results)) {
Artisan::call('key:generate --force');
Artisan::call('optimize:clear');
Artisan::call('config:clear');
Artisan::call('cache:clear');
Artisan::call('storage:link');
Artisan::call('migrate --seed --force');
}
return response()->json($results);
}

View File

@ -19,7 +19,6 @@ class FinishController extends Controller
{
\Storage::disk('local')->put('database_created', 'database_created');
$user = User::where('role', 'super admin')->first();
Auth::login($user);
return response()->json(['success' => true]);
}
}

View File

@ -0,0 +1,25 @@
<?php
namespace Crater\Http\Controllers\V1\Onboarding;
use Auth;
use Crater\Http\Controllers\Controller;
use Crater\Models\User;
use Illuminate\Http\Request;
class LoginController extends Controller
{
/**
* Handle the incoming request.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function __invoke(Request $request)
{
$user = User::where('role', 'super admin')->first();
Auth::login($user);
return response()->json(['success' => true]);
}
}

View File

@ -30,9 +30,6 @@ class DatabaseEnvironmentRequest extends FormRequest
'required',
'url',
],
'app_domain' => [
'required',
],
'database_connection' => [
'required',
'string',
@ -50,9 +47,6 @@ class DatabaseEnvironmentRequest extends FormRequest
'required',
'url',
],
'app_domain' => [
'required',
],
'database_connection' => [
'required',
'string',

View File

@ -0,0 +1,32 @@
<?php
namespace Crater\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class DomainEnvironmentRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'app_domain' => [
'required',
],
];
}
}

View File

@ -262,6 +262,11 @@ class User extends Authenticatable implements HasMedia
$query->orWhere('users.id', $customer_id);
}
public function scopeWhereSuperAdmin($query)
{
$query->orWhere('role', 'super admin');
}
public function scopeApplyInvoiceFilters($query, array $filters)
{
$filters = collect($filters);

View File

@ -4,6 +4,7 @@ namespace Crater\Space;
use Crater\Http\Requests\DatabaseEnvironmentRequest;
use Crater\Http\Requests\DiskEnvironmentRequest;
use Crater\Http\Requests\DomainEnvironmentRequest;
use Crater\Http\Requests\MailEnvironmentRequest;
use Exception;
use Illuminate\Http\Request;
@ -359,11 +360,11 @@ class EnvironmentManager
}
/**
* Save the disk content to the .env file.
*
* @param Request $request
* @return array
*/
* Save the disk content to the .env file.
*
* @param Request $request
* @return array
*/
public function saveDiskVariables(DiskEnvironmentRequest $request)
{
$diskData = $this->getDiskData($request);
@ -486,4 +487,35 @@ class EnvironmentManager
'old_default_driver' => $oldDefaultDriver,
];
}
/**
* Save sanctum statful domain to the .env file.
*
* @param DomainEnvironmentRequest $request
* @return array
*/
public function saveDomainVariables(DomainEnvironmentRequest $request)
{
try {
file_put_contents($this->envPath, str_replace(
'SANCTUM_STATEFUL_DOMAINS='.env('SANCTUM_STATEFUL_DOMAINS'),
'SANCTUM_STATEFUL_DOMAINS='.$request->app_domain,
file_get_contents($this->envPath)
));
file_put_contents($this->envPath, str_replace(
'SESSION_DOMAIN='.config('session.domain'),
'SESSION_DOMAIN='.explode(':', $request->app_domain)[0],
file_get_contents($this->envPath)
));
} catch (Exception $e) {
return [
'error' => 'domain_verification_failed'
];
}
return [
'success' => 'domain_variable_save_successfully'
];
}
}