mirror of
https://github.com/crater-invoice/crater.git
synced 2025-10-27 11:41:09 -04:00
Add Domain Verification on Onboarding Wizard
This commit is contained in:
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
33
app/Http/Controllers/V1/Onboarding/AppDomainController.php
Normal file
33
app/Http/Controllers/V1/Onboarding/AppDomainController.php
Normal 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,
|
||||
]);
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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]);
|
||||
}
|
||||
}
|
||||
|
||||
25
app/Http/Controllers/V1/Onboarding/LoginController.php
Normal file
25
app/Http/Controllers/V1/Onboarding/LoginController.php
Normal 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]);
|
||||
}
|
||||
}
|
||||
@ -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',
|
||||
|
||||
32
app/Http/Requests/DomainEnvironmentRequest.php
Normal file
32
app/Http/Requests/DomainEnvironmentRequest.php
Normal 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',
|
||||
],
|
||||
];
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
|
||||
@ -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'
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user