mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-28 11:00:39 +00:00
controller refactoring part 13
This commit is contained in:
@@ -57,7 +57,7 @@
|
|||||||
"/chunks/plans.js": "/chunks/plans.js?id=2b26173a02ed9f86e875",
|
"/chunks/plans.js": "/chunks/plans.js?id=2b26173a02ed9f86e875",
|
||||||
"/chunks/platform.js": "/chunks/platform.js?id=b7b13093369e09fcb1cb",
|
"/chunks/platform.js": "/chunks/platform.js?id=b7b13093369e09fcb1cb",
|
||||||
"/chunks/platform~chunks/shared.js": "/chunks/platform~chunks/shared.js?id=be3d7cf51585313cf53b",
|
"/chunks/platform~chunks/shared.js": "/chunks/platform~chunks/shared.js?id=be3d7cf51585313cf53b",
|
||||||
"/chunks/profile.js": "/chunks/profile.js?id=41b536880e846017d2d0",
|
"/chunks/profile.js": "/chunks/profile.js?id=03526296e71df827ff47",
|
||||||
"/chunks/profile~chunks/settings-password.js": "/chunks/profile~chunks/settings-password.js?id=fd25990d1ccec0294602",
|
"/chunks/profile~chunks/settings-password.js": "/chunks/profile~chunks/settings-password.js?id=fd25990d1ccec0294602",
|
||||||
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=b35e751cdc1946a4fb60",
|
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=b35e751cdc1946a4fb60",
|
||||||
"/chunks/settings.js": "/chunks/settings.js?id=7070921d97a2510445ac",
|
"/chunks/settings.js": "/chunks/settings.js?id=7070921d97a2510445ac",
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
"/chunks/settings-payment-methods.js": "/chunks/settings-payment-methods.js?id=323729734ffc814a48d2",
|
"/chunks/settings-payment-methods.js": "/chunks/settings-payment-methods.js?id=323729734ffc814a48d2",
|
||||||
"/chunks/settings-storage.js": "/chunks/settings-storage.js?id=682f4f690ac252a78a3a",
|
"/chunks/settings-storage.js": "/chunks/settings-storage.js?id=682f4f690ac252a78a3a",
|
||||||
"/chunks/settings-subscription.js": "/chunks/settings-subscription.js?id=4f1793d53633a2c4cc18",
|
"/chunks/settings-subscription.js": "/chunks/settings-subscription.js?id=4f1793d53633a2c4cc18",
|
||||||
"/chunks/settings~chunks/settings-password.js": "/chunks/settings~chunks/settings-password.js?id=f5aaffe3aa073cb2ee19",
|
"/chunks/settings~chunks/settings-password.js": "/chunks/settings~chunks/settings-password.js?id=1c49c2c5bcef4395dedb",
|
||||||
"/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=41d3478184ec24644a1c",
|
"/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=41d3478184ec24644a1c",
|
||||||
"/chunks/shared.js": "/chunks/shared.js?id=7524b7a783d4aed23794",
|
"/chunks/shared.js": "/chunks/shared.js?id=7524b7a783d4aed23794",
|
||||||
"/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=bfdf9bb904d354bdcbd1",
|
"/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=bfdf9bb904d354bdcbd1",
|
||||||
@@ -284,5 +284,7 @@
|
|||||||
"/chunks/settings-create-payment-methods.3c553438a1090569af54.hot-update.js": "/chunks/settings-create-payment-methods.3c553438a1090569af54.hot-update.js",
|
"/chunks/settings-create-payment-methods.3c553438a1090569af54.hot-update.js": "/chunks/settings-create-payment-methods.3c553438a1090569af54.hot-update.js",
|
||||||
"/chunks/settings-payment-methods.3c553438a1090569af54.hot-update.js": "/chunks/settings-payment-methods.3c553438a1090569af54.hot-update.js",
|
"/chunks/settings-payment-methods.3c553438a1090569af54.hot-update.js": "/chunks/settings-payment-methods.3c553438a1090569af54.hot-update.js",
|
||||||
"/chunks/upgrade-billing.3c553438a1090569af54.hot-update.js": "/chunks/upgrade-billing.3c553438a1090569af54.hot-update.js",
|
"/chunks/upgrade-billing.3c553438a1090569af54.hot-update.js": "/chunks/upgrade-billing.3c553438a1090569af54.hot-update.js",
|
||||||
"/chunks/settings-invoices.4ab4d27b8447516929d2.hot-update.js": "/chunks/settings-invoices.4ab4d27b8447516929d2.hot-update.js"
|
"/chunks/settings-invoices.4ab4d27b8447516929d2.hot-update.js": "/chunks/settings-invoices.4ab4d27b8447516929d2.hot-update.js",
|
||||||
|
"/chunks/profile.5902d31a95da744acd2b.hot-update.js": "/chunks/profile.5902d31a95da744acd2b.hot-update.js",
|
||||||
|
"/chunks/settings~chunks/settings-password.5902d31a95da744acd2b.hot-update.js": "/chunks/settings~chunks/settings-password.5902d31a95da744acd2b.hot-update.js"
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-10
@@ -7,6 +7,11 @@ use Domain\Admin\Controllers\DashboardController;
|
|||||||
use Domain\Pages\Controllers\AdminPagesController;
|
use Domain\Pages\Controllers\AdminPagesController;
|
||||||
use Domain\Localization\Controllers\LanguageController;
|
use Domain\Localization\Controllers\LanguageController;
|
||||||
use Domain\Settings\Controllers\AdminSettingsController;
|
use Domain\Settings\Controllers\AdminSettingsController;
|
||||||
|
use Domain\Settings\Controllers\FlushCacheController;
|
||||||
|
use Domain\Settings\Controllers\GetSettingsValueController;
|
||||||
|
use Domain\Settings\Controllers\SetEmailController;
|
||||||
|
use Domain\Settings\Controllers\SetStripeController;
|
||||||
|
use Domain\Settings\Controllers\UpdateSettingValueController;
|
||||||
|
|
||||||
// Dashboard
|
// Dashboard
|
||||||
Route::group(['prefix' => 'dashboard'], function () {
|
Route::group(['prefix' => 'dashboard'], function () {
|
||||||
@@ -39,22 +44,19 @@ Route::group(['prefix' => 'plans'], function () {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Pages
|
// Pages
|
||||||
Route::group(['prefix' => 'pages'], function () {
|
Route::apiResource('/pages', AdminPagesController::class);
|
||||||
Route::patch('/{page}', [AdminPagesController::class, 'update']);
|
|
||||||
Route::get('/{page}', [AdminPagesController::class, 'show']);
|
|
||||||
Route::get('/', [AdminPagesController::class, 'index']);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Invoices
|
// Invoices
|
||||||
Route::get('/invoices', [InvoiceController::class, 'index']);
|
Route::get('/invoices', [InvoiceController::class, 'index']);
|
||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
Route::group(['prefix' => 'settings'], function () {
|
Route::group(['prefix' => 'settings'], function () {
|
||||||
Route::get('/flush-cache', [AdminSettingsController::class, 'flush_cache']);
|
Route::patch('/', UpdateSettingValueController::class);
|
||||||
Route::post('/stripe', [AdminSettingsController::class, 'set_stripe']);
|
Route::get('/', GetSettingsValueController::class);
|
||||||
Route::post('/email', [AdminSettingsController::class, 'set_email']);
|
|
||||||
Route::patch('/', [AdminSettingsController::class, 'update']);
|
Route::get('/flush-cache', FlushCacheController::class);
|
||||||
Route::get('/', [AdminSettingsController::class, 'show']);
|
Route::post('/stripe', SetStripeController::class);
|
||||||
|
Route::post('/email', SetEmailController::class);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Language
|
// Language
|
||||||
|
|||||||
+2
-2
@@ -11,7 +11,7 @@ use App\Users\Controllers\ForgotPasswordController;
|
|||||||
use Domain\Files\Controllers\UploadFilesController;
|
use Domain\Files\Controllers\UploadFilesController;
|
||||||
use Domain\Folders\Controllers\FavouriteController;
|
use Domain\Folders\Controllers\FavouriteController;
|
||||||
use Domain\Plans\Controllers\ActivePlansController;
|
use Domain\Plans\Controllers\ActivePlansController;
|
||||||
use Domain\Settings\Controllers\SettingsController;
|
use Domain\Settings\Controllers\GetSettingsValueController;
|
||||||
use Domain\Zipping\Controllers\ZipFolderController;
|
use Domain\Zipping\Controllers\ZipFolderController;
|
||||||
use Domain\Folders\Controllers\CreateFolderController;
|
use Domain\Folders\Controllers\CreateFolderController;
|
||||||
use Domain\Sharing\Controllers\ShareViaEmailController;
|
use Domain\Sharing\Controllers\ShareViaEmailController;
|
||||||
@@ -31,7 +31,7 @@ Route::apiResource('/page', PagesController::class);
|
|||||||
// Homepage
|
// Homepage
|
||||||
Route::post('/contact', SendContactMessageController::class);
|
Route::post('/contact', SendContactMessageController::class);
|
||||||
Route::get('/pricing', ActivePlansController::class);
|
Route::get('/pricing', ActivePlansController::class);
|
||||||
Route::get('/settings', SettingsController::class);
|
Route::get('/settings', GetSettingsValueController::class);
|
||||||
|
|
||||||
// Register user
|
// Register user
|
||||||
Route::post('/register', CreateNewUserAction::class);
|
Route::post('/register', CreateNewUserAction::class);
|
||||||
|
|||||||
@@ -5,24 +5,15 @@ use Illuminate\Http\Request;
|
|||||||
use Domain\Pages\Models\Page;
|
use Domain\Pages\Models\Page;
|
||||||
use Illuminate\Http\Response;
|
use Illuminate\Http\Response;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Support\Demo\Actions\DemoService;
|
|
||||||
use Domain\Pages\Resources\PageResource;
|
use Domain\Pages\Resources\PageResource;
|
||||||
use Domain\Pages\Resources\PageCollection;
|
use Domain\Pages\Resources\PageCollection;
|
||||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
|
||||||
|
|
||||||
class AdminPagesController extends Controller
|
class AdminPagesController extends Controller
|
||||||
{
|
{
|
||||||
public function __construct(
|
|
||||||
private DemoService $demo,
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all pages
|
* Get all pages
|
||||||
*
|
|
||||||
* @return PageCollection
|
|
||||||
*/
|
*/
|
||||||
public function index()
|
public function index(): PageCollection
|
||||||
{
|
{
|
||||||
return new PageCollection(
|
return new PageCollection(
|
||||||
Page::sortable()
|
Page::sortable()
|
||||||
@@ -32,23 +23,16 @@ class AdminPagesController extends Controller
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get single page resource
|
* Get single page resource
|
||||||
*
|
|
||||||
* @param $page
|
|
||||||
* @return PageResource
|
|
||||||
*/
|
*/
|
||||||
public function show(Page $page)
|
public function show(Page $page): PageResource
|
||||||
{
|
{
|
||||||
return new PageResource($page);
|
return new PageResource($page);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update page content
|
* Update page content
|
||||||
*
|
|
||||||
* @param Request $request
|
|
||||||
* @param Page $page
|
|
||||||
* @return ResponseFactory|Response
|
|
||||||
*/
|
*/
|
||||||
public function update(Request $request, Page $page)
|
public function update(Request $request, Page $page): Response
|
||||||
{
|
{
|
||||||
// Abort in demo mode
|
// Abort in demo mode
|
||||||
abort_if(is_demo(), 204, 'Done.');
|
abort_if(is_demo(), 204, 'Done.');
|
||||||
@@ -57,6 +41,8 @@ class AdminPagesController extends Controller
|
|||||||
make_single_input($request)
|
make_single_input($request)
|
||||||
);
|
);
|
||||||
|
|
||||||
return response(new PageResource($page), 204);
|
return response(
|
||||||
|
new PageResource($page), 204
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,180 +1,26 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace Domain\Settings\Controllers;
|
namespace Domain\Settings\Controllers;
|
||||||
|
|
||||||
use Stripe;
|
use Illuminate\Support\Collection;
|
||||||
use Artisan;
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Domain\Settings\Models\Setting;
|
use Domain\Settings\Models\Setting;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Support\Demo\Actions\DemoService;
|
|
||||||
use Cartalyst\Stripe\Exception\UnauthorizedException;
|
|
||||||
use Symfony\Component\HttpKernel\Exception\HttpException;
|
|
||||||
|
|
||||||
class AdminSettingsController extends Controller
|
class AdminSettingsController extends Controller
|
||||||
{
|
{
|
||||||
public function __construct(
|
|
||||||
private DemoService $demo
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get table content
|
* Get table content
|
||||||
*
|
|
||||||
* @param Request $request
|
|
||||||
* @return mixed
|
|
||||||
*/
|
*/
|
||||||
public function show(Request $request)
|
public function __invoke(Request $request): Collection
|
||||||
{
|
{
|
||||||
if (strpos($request->column, '|') !== false) {
|
if (str_contains($request->get('column'), '|')) {
|
||||||
$columns = explode('|', $request->column);
|
$columns = explode('|', $request->get('column'));
|
||||||
|
|
||||||
return Setting::whereIn('name', $columns)
|
return Setting::whereIn('name', $columns)
|
||||||
->pluck('value', 'name');
|
->pluck('value', 'name');
|
||||||
}
|
}
|
||||||
|
|
||||||
return Setting::where('name', $request->column)
|
return Setting::where('name', $request->get('column'))
|
||||||
->pluck('value', 'name');
|
->pluck('value', 'name');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Update the specified resource in storage.
|
|
||||||
*
|
|
||||||
* @param \Illuminate\Http\Request $request
|
|
||||||
* @return \Illuminate\Http\Response
|
|
||||||
*/
|
|
||||||
public function update(Request $request)
|
|
||||||
{
|
|
||||||
// Abort in demo mode
|
|
||||||
abort_if(is_demo(), 204, 'Done.');
|
|
||||||
|
|
||||||
// Store image if exist
|
|
||||||
if ($request->hasFile($request->name)) {
|
|
||||||
// Find and update image path
|
|
||||||
Setting::updateOrCreate([
|
|
||||||
'name' => $request->name,
|
|
||||||
], [
|
|
||||||
'value' => store_system_image($request, $request->name),
|
|
||||||
]);
|
|
||||||
|
|
||||||
return response('Done', 204);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Find and update variable
|
|
||||||
Setting::updateOrCreate(
|
|
||||||
['name' => $request->name],
|
|
||||||
['value' => $request->value]
|
|
||||||
);
|
|
||||||
|
|
||||||
return response('Done', 204);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set new email credentials to .env file
|
|
||||||
*
|
|
||||||
* @param Request $request
|
|
||||||
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
|
|
||||||
*/
|
|
||||||
public function set_email(Request $request)
|
|
||||||
{
|
|
||||||
// TODO: pridat validator do requestu
|
|
||||||
// Abort in demo mode
|
|
||||||
abort_if(is_demo(), 204, 'Done.');
|
|
||||||
|
|
||||||
if (! app()->runningUnitTests()) {
|
|
||||||
setEnvironmentValue([
|
|
||||||
'MAIL_DRIVER' => $request->driver,
|
|
||||||
'MAIL_HOST' => $request->host,
|
|
||||||
'MAIL_PORT' => $request->port,
|
|
||||||
'MAIL_USERNAME' => $request->username,
|
|
||||||
'MAIL_PASSWORD' => $request->password,
|
|
||||||
'MAIL_ENCRYPTION' => $request->encryption,
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Clear config cache
|
|
||||||
Artisan::call('config:clear');
|
|
||||||
Artisan::call('config:cache');
|
|
||||||
}
|
|
||||||
|
|
||||||
return response('Done', 204);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Configure stripe additionally
|
|
||||||
*
|
|
||||||
* @param Request $request
|
|
||||||
*/
|
|
||||||
public function set_stripe(Request $request)
|
|
||||||
{
|
|
||||||
// TODO: pridat validator do requestu
|
|
||||||
// Check payment setup status
|
|
||||||
if (get_setting('payments_configured')) {
|
|
||||||
abort(401, 'Gone');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Try to get stripe account details
|
|
||||||
try {
|
|
||||||
if (! app()->runningUnitTests()) {
|
|
||||||
Stripe::make($request->secret, '2020-03-02')
|
|
||||||
->account()
|
|
||||||
->details();
|
|
||||||
}
|
|
||||||
} catch (UnauthorizedException $e) {
|
|
||||||
throw new HttpException(401, $e->getMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get options
|
|
||||||
collect([
|
|
||||||
[
|
|
||||||
'name' => 'stripe_currency',
|
|
||||||
'value' => $request->currency,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => 'payments_configured',
|
|
||||||
'value' => 1,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'name' => 'payments_active',
|
|
||||||
'value' => 1,
|
|
||||||
],
|
|
||||||
])->each(function ($col) {
|
|
||||||
Setting::forceCreate([
|
|
||||||
'name' => $col['name'],
|
|
||||||
'value' => $col['value'],
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
|
|
||||||
if (! app()->runningUnitTests()) {
|
|
||||||
// Set stripe credentials to .env
|
|
||||||
setEnvironmentValue([
|
|
||||||
'CASHIER_CURRENCY' => $request->currency,
|
|
||||||
'STRIPE_KEY' => $request->key,
|
|
||||||
'STRIPE_SECRET' => $request->secret,
|
|
||||||
'STRIPE_WEBHOOK_SECRET' => $request->webhookSecret,
|
|
||||||
]);
|
|
||||||
|
|
||||||
// Clear cache
|
|
||||||
Artisan::call('cache:clear');
|
|
||||||
Artisan::call('config:clear');
|
|
||||||
Artisan::call('config:cache');
|
|
||||||
}
|
|
||||||
|
|
||||||
return response('Done', 204);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Clear application cache
|
|
||||||
*/
|
|
||||||
public function flush_cache()
|
|
||||||
{
|
|
||||||
// Abort in demo mode
|
|
||||||
abort_if(is_demo(), 204, 'Done.');
|
|
||||||
|
|
||||||
if (! app()->runningUnitTests()) {
|
|
||||||
Artisan::call('cache:clear');
|
|
||||||
Artisan::call('config:clear');
|
|
||||||
Artisan::call('config:cache');
|
|
||||||
}
|
|
||||||
|
|
||||||
return response('Done', 204);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace Domain\Settings\Controllers;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Artisan;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
|
||||||
|
class FlushCacheController extends Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Clear application cache
|
||||||
|
*/
|
||||||
|
public function __invoke(): Response
|
||||||
|
{
|
||||||
|
// Abort in demo mode
|
||||||
|
abort_if(is_demo(), 204, 'Done.');
|
||||||
|
|
||||||
|
if (! app()->runningUnitTests()) {
|
||||||
|
Artisan::call('cache:clear');
|
||||||
|
Artisan::call('config:clear');
|
||||||
|
Artisan::call('config:cache');
|
||||||
|
}
|
||||||
|
|
||||||
|
return response('Done', 204);
|
||||||
|
}
|
||||||
|
}
|
||||||
+1
-1
@@ -5,7 +5,7 @@ use Illuminate\Http\Request;
|
|||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
use Domain\Settings\Models\Setting;
|
use Domain\Settings\Models\Setting;
|
||||||
|
|
||||||
class SettingsController
|
class GetSettingsValueController
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* List of allowed settings to get from public request
|
* List of allowed settings to get from public request
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace Domain\Settings\Controllers;
|
||||||
|
|
||||||
|
|
||||||
|
use Artisan;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
|
||||||
|
class SetEmailController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Set new email credentials to .env file
|
||||||
|
*/
|
||||||
|
public function __invoke(Request $request): Response
|
||||||
|
{
|
||||||
|
// TODO: pridat validator do requestu
|
||||||
|
// Abort in demo mode
|
||||||
|
abort_if(is_demo(), 204, 'Done.');
|
||||||
|
|
||||||
|
if (! app()->runningUnitTests()) {
|
||||||
|
setEnvironmentValue([
|
||||||
|
'MAIL_DRIVER' => $request->input('driver'),
|
||||||
|
'MAIL_HOST' => $request->input('host'),
|
||||||
|
'MAIL_PORT' => $request->input('port'),
|
||||||
|
'MAIL_USERNAME' => $request->input('username'),
|
||||||
|
'MAIL_PASSWORD' => $request->input('password'),
|
||||||
|
'MAIL_ENCRYPTION' => $request->input('encryption'),
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Clear config cache
|
||||||
|
Artisan::call('config:clear');
|
||||||
|
Artisan::call('config:cache');
|
||||||
|
}
|
||||||
|
|
||||||
|
return response('Done', 204);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace Domain\Settings\Controllers;
|
||||||
|
|
||||||
|
|
||||||
|
use Artisan;
|
||||||
|
use Cartalyst\Stripe\Exception\UnauthorizedException;
|
||||||
|
use Cartalyst\Stripe\Stripe;
|
||||||
|
use Domain\Settings\Models\Setting;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
use Symfony\Component\HttpKernel\Exception\HttpException;
|
||||||
|
|
||||||
|
class SetStripeController
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Configure stripe additionally
|
||||||
|
*/
|
||||||
|
public function __invoke(Request $request): Response
|
||||||
|
{
|
||||||
|
// TODO: pridat validator do requestu
|
||||||
|
// Check payment setup status
|
||||||
|
if (get_setting('payments_configured')) {
|
||||||
|
abort(401, 'Gone');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Try to get stripe account details
|
||||||
|
try {
|
||||||
|
if (! app()->runningUnitTests()) {
|
||||||
|
Stripe::make($request->input('secret'), '2020-03-02')
|
||||||
|
->account()
|
||||||
|
->details();
|
||||||
|
}
|
||||||
|
} catch (UnauthorizedException $e) {
|
||||||
|
throw new HttpException(401, $e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get options
|
||||||
|
collect([
|
||||||
|
[
|
||||||
|
'name' => 'stripe_currency',
|
||||||
|
'value' => $request->input('currency'),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'payments_configured',
|
||||||
|
'value' => 1,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'name' => 'payments_active',
|
||||||
|
'value' => 1,
|
||||||
|
],
|
||||||
|
])->each(function ($col) {
|
||||||
|
Setting::forceCreate([
|
||||||
|
'name' => $col['name'],
|
||||||
|
'value' => $col['value'],
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
if (! app()->runningUnitTests()) {
|
||||||
|
// Set stripe credentials to .env
|
||||||
|
setEnvironmentValue([
|
||||||
|
'CASHIER_CURRENCY' => $request->input('currency'),
|
||||||
|
'STRIPE_KEY' => $request->input('key'),
|
||||||
|
'STRIPE_SECRET' => $request->input('secret'),
|
||||||
|
'STRIPE_WEBHOOK_SECRET' => $request->input('webhookSecret'),
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Clear cache
|
||||||
|
Artisan::call('cache:clear');
|
||||||
|
Artisan::call('config:clear');
|
||||||
|
Artisan::call('config:cache');
|
||||||
|
}
|
||||||
|
|
||||||
|
return response('Done', 204);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace Domain\Settings\Controllers;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Domain\Settings\Models\Setting;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
|
||||||
|
class UpdateSettingValueController extends Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Update setting item.
|
||||||
|
*/
|
||||||
|
public function __invoke(Request $request): Response
|
||||||
|
{
|
||||||
|
// Abort in demo mode
|
||||||
|
abort_if(is_demo(), 204, 'Done.');
|
||||||
|
|
||||||
|
// Store image if exist
|
||||||
|
if ($request->hasFile($request->input('name'))) {
|
||||||
|
// Find and update image path
|
||||||
|
Setting::updateOrCreate([
|
||||||
|
'name' => $request->input('name'),
|
||||||
|
], [
|
||||||
|
'value' => store_system_image($request, $request->input('name')),
|
||||||
|
]);
|
||||||
|
|
||||||
|
return response('Done', 204);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find and update variable
|
||||||
|
Setting::updateOrCreate(
|
||||||
|
['name' => $request->input('name')],
|
||||||
|
['value' => $request->input('value')]
|
||||||
|
);
|
||||||
|
|
||||||
|
return response('Done', 204);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -424,67 +424,4 @@ class AdminTest extends TestCase
|
|||||||
Storage::disk('local')
|
Storage::disk('local')
|
||||||
->assertMissing($user->settings->getRawOriginal('avatar'));
|
->assertMissing($user->settings->getRawOriginal('avatar'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
*/
|
|
||||||
public function it_get_all_pages()
|
|
||||||
{
|
|
||||||
$this->setup->seed_default_pages();
|
|
||||||
|
|
||||||
$admin = User::factory(User::class)
|
|
||||||
->create(['role' => 'admin']);
|
|
||||||
|
|
||||||
Sanctum::actingAs($admin);
|
|
||||||
|
|
||||||
collect(['terms-of-service', 'privacy-policy', 'cookie-policy'])
|
|
||||||
->each(function ($slug) {
|
|
||||||
$this->getJson('/api/admin/pages')
|
|
||||||
->assertStatus(200)
|
|
||||||
->assertJsonFragment([
|
|
||||||
'slug' => $slug,
|
|
||||||
]);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
*/
|
|
||||||
public function it_get_page()
|
|
||||||
{
|
|
||||||
$this->setup->seed_default_pages();
|
|
||||||
|
|
||||||
$admin = User::factory(User::class)
|
|
||||||
->create(['role' => 'admin']);
|
|
||||||
|
|
||||||
$this
|
|
||||||
->actingAs($admin)
|
|
||||||
->getJson('/api/admin/pages/terms-of-service')
|
|
||||||
->assertStatus(200)
|
|
||||||
->assertJsonFragment([
|
|
||||||
'slug' => 'terms-of-service',
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
*/
|
|
||||||
public function it_update_page()
|
|
||||||
{
|
|
||||||
$this->setup->seed_default_pages();
|
|
||||||
|
|
||||||
$admin = User::factory(User::class)
|
|
||||||
->create(['role' => 'admin']);
|
|
||||||
|
|
||||||
$this
|
|
||||||
->actingAs($admin)
|
|
||||||
->patchJson('/api/admin/pages/terms-of-service', [
|
|
||||||
'name' => 'title',
|
|
||||||
'value' => 'New Title',
|
|
||||||
])->assertStatus(204);
|
|
||||||
|
|
||||||
$this->assertDatabaseHas('pages', [
|
|
||||||
'title' => 'New Title',
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,76 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace Tests\Domain\Pages;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Users\Models\User;
|
||||||
|
use Domain\SetupWizard\Services\SetupService;
|
||||||
|
use Laravel\Sanctum\Sanctum;
|
||||||
|
use Tests\TestCase;
|
||||||
|
|
||||||
|
class AdminPagesTest extends TestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_get_all_pages()
|
||||||
|
{
|
||||||
|
resolve(SetupService::class)->seed_default_pages();
|
||||||
|
|
||||||
|
$admin = User::factory(User::class)
|
||||||
|
->create(['role' => 'admin']);
|
||||||
|
|
||||||
|
Sanctum::actingAs($admin);
|
||||||
|
|
||||||
|
collect(['terms-of-service', 'privacy-policy', 'cookie-policy'])
|
||||||
|
->each(function ($slug) {
|
||||||
|
$this->getJson('/api/admin/pages')
|
||||||
|
->assertStatus(200)
|
||||||
|
->assertJsonFragment([
|
||||||
|
'slug' => $slug,
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_get_page()
|
||||||
|
{
|
||||||
|
resolve(SetupService::class)->seed_default_pages();
|
||||||
|
|
||||||
|
$admin = User::factory(User::class)
|
||||||
|
->create(['role' => 'admin']);
|
||||||
|
|
||||||
|
$this
|
||||||
|
->actingAs($admin)
|
||||||
|
->getJson('/api/admin/pages/terms-of-service')
|
||||||
|
->assertStatus(200)
|
||||||
|
->assertJsonFragment([
|
||||||
|
'slug' => 'terms-of-service',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function it_update_page()
|
||||||
|
{
|
||||||
|
resolve(SetupService::class)->seed_default_pages();
|
||||||
|
|
||||||
|
$admin = User::factory(User::class)
|
||||||
|
->create(['role' => 'admin']);
|
||||||
|
|
||||||
|
$this
|
||||||
|
->actingAs($admin)
|
||||||
|
->patchJson('/api/admin/pages/terms-of-service', [
|
||||||
|
'name' => 'title',
|
||||||
|
'value' => 'New Title',
|
||||||
|
])->assertStatus(204);
|
||||||
|
|
||||||
|
$this->assertDatabaseHas('pages', [
|
||||||
|
'title' => 'New Title',
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user