mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-06 02:33:48 +00:00
controller refactoring part 5
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -43,7 +43,7 @@
|
||||
"/chunks/files~chunks/shared/file-browser.js": "/chunks/files~chunks/shared/file-browser.js?id=87253c5f59242e420579",
|
||||
"/chunks/files~chunks/shared/file-browser~chunks/shared/single-file.js": "/chunks/files~chunks/shared/file-browser~chunks/shared/single-file.js?id=a6be7116bbdadfb8b1cc",
|
||||
"/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=96019e230f0c5b59478a",
|
||||
"/chunks/homepage.js": "/chunks/homepage.js?id=5a299216398f59a4947b",
|
||||
"/chunks/homepage.js": "/chunks/homepage.js?id=6de293d9d23648923ca8",
|
||||
"/chunks/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=0fe6c45de3fe3c75bd04",
|
||||
"/chunks/invoices.js": "/chunks/invoices.js?id=35179ba2b74cdaf74492",
|
||||
"/chunks/not-found.js": "/chunks/not-found.js?id=3f0c127b00d113541acc",
|
||||
@@ -274,5 +274,6 @@
|
||||
"/chunks/upgrade-billing.8805b4393b5aceb393ab.hot-update.js": "/chunks/upgrade-billing.8805b4393b5aceb393ab.hot-update.js",
|
||||
"/chunks/platform.13a7c4eb981e304dd11c.hot-update.js": "/chunks/platform.13a7c4eb981e304dd11c.hot-update.js",
|
||||
"/chunks/platform.1dc9a86f8f195ad336c8.hot-update.js": "/chunks/platform.1dc9a86f8f195ad336c8.hot-update.js",
|
||||
"/chunks/platform.c72b7ed144ae27e09ac0.hot-update.js": "/chunks/platform.c72b7ed144ae27e09ac0.hot-update.js"
|
||||
"/chunks/platform.c72b7ed144ae27e09ac0.hot-update.js": "/chunks/platform.c72b7ed144ae27e09ac0.hot-update.js",
|
||||
"/chunks/homepage.e80d5d3c53decab802d5.hot-update.js": "/chunks/homepage.e80d5d3c53decab802d5.hot-update.js"
|
||||
}
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
this.$router.push({name: 'SignIn'})
|
||||
|
||||
// Get page content
|
||||
axios.get('/api/content', {
|
||||
axios.get('/api/settings', {
|
||||
params: {
|
||||
column: 'allow_homepage|footer_content|get_started_description|get_started_title|pricing_description|pricing_title|feature_description_3|feature_title_3|feature_description_2|feature_title_2|feature_description_1|feature_title_1|features_description|features_title|header_description|header_title|section_get_started|section_pricing_content|section_feature_boxes|section_features'
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<?php
|
||||
|
||||
use Domain\Admin\Controllers\UserController;
|
||||
use Domain\Pages\Controllers\PagesController;
|
||||
use Domain\Plans\Controllers\PlansController;
|
||||
use Domain\Admin\Controllers\InvoiceController;
|
||||
use Domain\Admin\Controllers\DashboardController;
|
||||
use Domain\Settings\Controllers\SettingController;
|
||||
use Domain\Pages\Controllers\AdminPagesController;
|
||||
use Domain\Localization\Controllers\LanguageController;
|
||||
use Domain\Settings\Controllers\AdminSettingsController;
|
||||
|
||||
// Dashboard
|
||||
Route::group(['prefix' => 'dashboard'], function () {
|
||||
@@ -40,9 +40,9 @@ Route::group(['prefix' => 'plans'], function () {
|
||||
|
||||
// Pages
|
||||
Route::group(['prefix' => 'pages'], function () {
|
||||
Route::patch('/{page}', [PagesController::class, 'update']);
|
||||
Route::get('/{page}', [PagesController::class, 'show']);
|
||||
Route::get('/', [PagesController::class, 'index']);
|
||||
Route::patch('/{page}', [AdminPagesController::class, 'update']);
|
||||
Route::get('/{page}', [AdminPagesController::class, 'show']);
|
||||
Route::get('/', [AdminPagesController::class, 'index']);
|
||||
});
|
||||
|
||||
// Invoices
|
||||
@@ -50,11 +50,11 @@ Route::get('/invoices', [InvoiceController::class, 'index']);
|
||||
|
||||
// Settings
|
||||
Route::group(['prefix' => 'settings'], function () {
|
||||
Route::get('/flush-cache', [SettingController::class, 'flush_cache']);
|
||||
Route::post('/stripe', [SettingController::class, 'set_stripe']);
|
||||
Route::post('/email', [SettingController::class, 'set_email']);
|
||||
Route::patch('/', [SettingController::class, 'update']);
|
||||
Route::get('/', [SettingController::class, 'show']);
|
||||
Route::get('/flush-cache', [AdminSettingsController::class, 'flush_cache']);
|
||||
Route::post('/stripe', [AdminSettingsController::class, 'set_stripe']);
|
||||
Route::post('/email', [AdminSettingsController::class, 'set_email']);
|
||||
Route::patch('/', [AdminSettingsController::class, 'update']);
|
||||
Route::get('/', [AdminSettingsController::class, 'show']);
|
||||
});
|
||||
|
||||
// Language
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
<?php
|
||||
|
||||
use App\Users\Actions\CreateNewUserAction;
|
||||
use Domain\Homepage\Controllers\SendContactMessageController;
|
||||
use Domain\Files\Controllers\UploadFilesController;
|
||||
use Domain\Pages\Controllers\PagesController;
|
||||
use Domain\Sharing\Controllers\ShareController;
|
||||
use Domain\Items\Controllers\EditItemsController;
|
||||
use Domain\Trash\Controllers\DumpTrashController;
|
||||
@@ -9,23 +10,31 @@ use App\Users\Controllers\ResetPasswordController;
|
||||
use Domain\Zipping\Controllers\ZipFilesController;
|
||||
use App\Users\Controllers\ForgotPasswordController;
|
||||
use Domain\Folders\Controllers\FavouriteController;
|
||||
use Domain\Plans\Controllers\ActivePlansController;
|
||||
use Domain\Settings\Controllers\SettingsController;
|
||||
use Domain\Zipping\Controllers\ZipFolderController;
|
||||
use Domain\Homepage\Controllers\AppFunctionsController;
|
||||
use Domain\Folders\Controllers\CreateFolderController;
|
||||
use Domain\Sharing\Controllers\ShareViaEmailController;
|
||||
use Domain\Trash\Controllers\RestoreTrashContentController;
|
||||
use Domain\Browsing\Controllers\BrowseLatestFilesController;
|
||||
use Domain\Browsing\Controllers\BrowseSharedItemsController;
|
||||
use Domain\Browsing\Controllers\BrowseTrashContentController;
|
||||
use Domain\Homepage\Controllers\SendContactMessageController;
|
||||
use Domain\Browsing\Controllers\BrowseFolderContentController;
|
||||
use Domain\Folders\Controllers\NavigationFolderTreeController;
|
||||
use Domain\Browsing\Controllers\SearchFilesAndFoldersController;
|
||||
use Domain\Browsing\Controllers\BrowseParticipantsUploadsController;
|
||||
|
||||
// Pages
|
||||
Route::get('/content', [AppFunctionsController::class, 'get_setting_columns']);
|
||||
Route::apiResource('/page', PagesController::class);
|
||||
|
||||
// Homepage
|
||||
Route::post('/contact', SendContactMessageController::class);
|
||||
Route::get('/page/{page}', [AppFunctionsController::class, 'get_page']);
|
||||
Route::get('/pricing', [AppFunctionsController::class, 'get_storage_plans']);
|
||||
Route::get('/pricing', ActivePlansController::class);
|
||||
Route::get('/settings', SettingsController::class);
|
||||
|
||||
// Register user
|
||||
Route::post('/register', CreateNewUserAction::class);
|
||||
|
||||
// Password reset
|
||||
Route::group(['prefix' => 'password'], function () {
|
||||
@@ -33,9 +42,6 @@ Route::group(['prefix' => 'password'], function () {
|
||||
Route::post('/reset', [ResetPasswordController::class, 'reset']);
|
||||
});
|
||||
|
||||
// Register user
|
||||
Route::post('/register', CreateNewUserAction::class);
|
||||
|
||||
// User master Routes
|
||||
Route::group(['middleware' => ['auth:sanctum']], function () {
|
||||
// Browse
|
||||
@@ -55,24 +61,25 @@ Route::group(['middleware' => ['auth:sanctum']], function () {
|
||||
Route::delete('/dump', DumpTrashController::class);
|
||||
});
|
||||
|
||||
// Share
|
||||
Route::group(['prefix' => 'share'], function () {
|
||||
Route::post('/{token}/email', ShareViaEmailController::class);
|
||||
Route::apiResource('/', ShareController::class);
|
||||
});
|
||||
|
||||
// Favourites
|
||||
Route::apiResource('/folders/favourites', FavouriteController::class);
|
||||
|
||||
// Share
|
||||
Route::post('/share/{token}/email', ShareViaEmailController::class);
|
||||
Route::apiResource('/share', ShareController::class);
|
||||
});
|
||||
|
||||
// User master,editor routes
|
||||
Route::group(['middleware' => ['auth:sanctum']], function () {
|
||||
Route::post('/create-folder', [EditItemsController::class, 'create_folder']);
|
||||
Route::post('/create-folder', CreateFolderController::class);
|
||||
Route::post('/upload', UploadFilesController::class);
|
||||
|
||||
Route::patch('/rename/{id}', [EditItemsController::class, 'rename_item']);
|
||||
Route::post('/remove', [EditItemsController::class, 'delete_item']);
|
||||
Route::post('/upload', [EditItemsController::class, 'upload']);
|
||||
Route::post('/move', [EditItemsController::class, 'move']);
|
||||
|
||||
Route::group(['prefix' => '/zip'], function () {
|
||||
Route::post('/files', ZipFilesController::class);
|
||||
Route::get('/folder/{id}', ZipFolderController::class);
|
||||
});
|
||||
Route::get('/zip/folder/{id}', ZipFolderController::class);
|
||||
Route::post('/zip/files', ZipFilesController::class);
|
||||
});
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
use Domain\Admin\Controllers\InvoiceController;
|
||||
use Domain\Homepage\Controllers\IndexController;
|
||||
use Domain\Localization\Controllers\CurrentLocalizationController;
|
||||
use Domain\Sharing\Controllers\BrowseShareController;
|
||||
use Domain\Homepage\Controllers\AppFunctionsController;
|
||||
use Domain\SetupWizard\Controllers\SetupWizardController;
|
||||
use Domain\Subscriptions\Controllers\StripeWebhookController;
|
||||
use Domain\Localization\Controllers\CurrentLocalizationController;
|
||||
|
||||
Route::post('/stripe/webhook', [StripeWebhookController::class, 'handleWebhook']);
|
||||
Route::post('/admin-setup', [SetupWizardController::class, 'create_admin_account']);
|
||||
|
||||
100
src/Domain/Files/Actions/UploadFilesAction.php
Normal file
100
src/Domain/Files/Actions/UploadFilesAction.php
Normal file
@@ -0,0 +1,100 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Domain\Files\Actions;
|
||||
|
||||
|
||||
use App\Users\Models\User;
|
||||
use Domain\Files\Models\File as UserFile;
|
||||
use Domain\Files\Requests\UploadRequest;
|
||||
use Domain\Sharing\Models\Share;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Support\Services\HelperService;
|
||||
|
||||
class UploadFilesAction
|
||||
{
|
||||
public function __construct(
|
||||
public HelperService $helper,
|
||||
) {}
|
||||
|
||||
/**
|
||||
* Upload new file
|
||||
*/
|
||||
public function __invoke(
|
||||
UploadRequest $request,
|
||||
?Share $shared = null,
|
||||
): UserFile {
|
||||
// Get parent_id from request
|
||||
$file = $request->file('file');
|
||||
|
||||
// File name
|
||||
$disk_file_name = basename('chunks/' . $file->getClientOriginalName(), '.part');
|
||||
$temp_filename = $file->getClientOriginalName();
|
||||
|
||||
// File Path
|
||||
$file_path = Storage::disk('local')->path('chunks/' . $temp_filename);
|
||||
|
||||
// Generate file
|
||||
File::append($file_path, $file->get());
|
||||
|
||||
// Size of file
|
||||
$file_size = File::size($file_path);
|
||||
|
||||
// Size of limit
|
||||
$limit = get_setting('upload_limit');
|
||||
|
||||
// File size handling
|
||||
if ($limit && $file_size > format_bytes($limit)) {
|
||||
abort(413);
|
||||
}
|
||||
|
||||
// If last then process file
|
||||
if ($request->boolean('is_last')) {
|
||||
$metadata = get_image_meta_data($file);
|
||||
|
||||
$disk_local = Storage::disk('local');
|
||||
|
||||
// Get user data
|
||||
$user_id = $shared->user_id ?? Auth::id();
|
||||
|
||||
// File Info
|
||||
$file_size = $disk_local->size("chunks/$temp_filename");
|
||||
|
||||
$file_mimetype = $disk_local->mimeType("chunks/$temp_filename");
|
||||
|
||||
// Check if user has enough space to upload file
|
||||
$this->helper->check_user_storage_capacity($user_id, $file_size, $temp_filename);
|
||||
|
||||
// Create thumbnail
|
||||
$thumbnail = $this->helper->create_image_thumbnail("chunks/$temp_filename", $disk_file_name, $user_id);
|
||||
|
||||
// Move finished file from chunk to file-manager directory
|
||||
$disk_local->move("chunks/$temp_filename", "files/$user_id/$disk_file_name");
|
||||
|
||||
// Move files to external storage
|
||||
if (! is_storage_driver(['local'])) {
|
||||
$this->helper->move_file_to_external_storage($disk_file_name, $user_id);
|
||||
}
|
||||
|
||||
// Store user upload size
|
||||
User::find($user_id)
|
||||
->recordUpload($file_size);
|
||||
|
||||
// Return new file
|
||||
return UserFile::create([
|
||||
'mimetype' => get_file_type_from_mimetype($file_mimetype),
|
||||
'type' => get_file_type($file_mimetype),
|
||||
'folder_id' => $request->folder_id,
|
||||
'metadata' => $metadata,
|
||||
'name' => $request->filename,
|
||||
'basename' => $disk_file_name,
|
||||
'author' => $shared ? 'visitor' : 'user',
|
||||
'thumbnail' => $thumbnail,
|
||||
'filesize' => $file_size,
|
||||
'user_id' => $user_id,
|
||||
]);
|
||||
}
|
||||
}
|
||||
}
|
||||
27
src/Domain/Files/Controllers/UploadFilesController.php
Normal file
27
src/Domain/Files/Controllers/UploadFilesController.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Domain\Files\Controllers;
|
||||
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Domain\Files\Actions\UploadFilesAction;
|
||||
use Domain\Files\Models\File;
|
||||
use Domain\Files\Requests\UploadRequest;
|
||||
|
||||
class UploadFilesController extends Controller
|
||||
{
|
||||
/**
|
||||
* Upload file for authenticated master|editor user
|
||||
*/
|
||||
public function __invoke(
|
||||
UploadRequest $request,
|
||||
UploadFilesAction $uploadFiles,
|
||||
): File {
|
||||
if (is_demo_account('howdy@hi5ve.digital')) {
|
||||
return $this->demo->upload($request);
|
||||
}
|
||||
|
||||
return ($uploadFiles)($request);
|
||||
}
|
||||
}
|
||||
26
src/Domain/Folders/Actions/CreateFolderAction.php
Normal file
26
src/Domain/Folders/Actions/CreateFolderAction.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
namespace Domain\Folders\Actions;
|
||||
|
||||
use Domain\Sharing\Models\Share;
|
||||
use Domain\Folders\Models\Folder;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class CreateFolderAction
|
||||
{
|
||||
/**
|
||||
* Create new directory
|
||||
*/
|
||||
public function __invoke(
|
||||
$request,
|
||||
?Share $shared = null,
|
||||
): Folder | array {
|
||||
return Folder::create([
|
||||
'parent_id' => $request->parent_id,
|
||||
'name' => $request->name,
|
||||
'color' => $request->color ?? null,
|
||||
'emoji' => $request->emoji ?? null,
|
||||
'author' => $shared ? 'visitor' : 'user',
|
||||
'user_id' => $shared ? $shared->user_id : Auth::id(),
|
||||
]);
|
||||
}
|
||||
}
|
||||
33
src/Domain/Folders/Controllers/CreateFolderController.php
Normal file
33
src/Domain/Folders/Controllers/CreateFolderController.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
namespace Domain\Folders\Controllers;
|
||||
|
||||
use Illuminate\Http\Response;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Support\Demo\Actions\DemoService;
|
||||
use Domain\Folders\Actions\CreateFolderAction;
|
||||
use Domain\Folders\Requests\CreateFolderRequest;
|
||||
|
||||
class CreateFolderController extends Controller
|
||||
{
|
||||
public function __construct(
|
||||
public DemoService $demo
|
||||
) {}
|
||||
|
||||
/**
|
||||
* Create new folder for authenticated master|editor user
|
||||
*/
|
||||
public function __invoke(
|
||||
CreateFolderRequest $request,
|
||||
CreateFolderAction $createFolder,
|
||||
): Response {
|
||||
// If is demo, return fake folder
|
||||
if (is_demo_account('howdy@hi5ve.digital')) {
|
||||
return $this->demo->create_folder($request);
|
||||
}
|
||||
|
||||
$folder = ($createFolder)($request);
|
||||
|
||||
// Create new folder
|
||||
return response($folder, 201);
|
||||
}
|
||||
}
|
||||
@@ -1,42 +1,11 @@
|
||||
<?php
|
||||
namespace Domain\Homepage\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Domain\Pages\Models\Page;
|
||||
use Illuminate\Http\Response;
|
||||
use Domain\Sharing\Models\Share;
|
||||
use Domain\Settings\Models\Setting;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Doctrine\DBAL\Driver\PDOException;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Domain\Localization\Models\Language;
|
||||
use Domain\Pages\Resources\PageResource;
|
||||
use Domain\Homepage\Mail\SendContactMessage;
|
||||
use Domain\Plans\Resources\PricingCollection;
|
||||
use Domain\Subscriptions\Services\StripeService;
|
||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||
use Domain\Homepage\Requests\SendContactMessageRequest;
|
||||
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||||
|
||||
class AppFunctionsController extends Controller
|
||||
{
|
||||
/**
|
||||
* List of allowed settings to get from public request
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
private array $blacklist = [
|
||||
'purchase_code',
|
||||
'license',
|
||||
];
|
||||
|
||||
public function __construct(
|
||||
private StripeService $stripe
|
||||
) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get og site for web crawlers
|
||||
*
|
||||
@@ -72,65 +41,4 @@ class AppFunctionsController extends Controller
|
||||
'thumbnail' => $item->thumbnail ?? null,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get single page content
|
||||
*
|
||||
* @param Page $page
|
||||
* @return PageResource
|
||||
*/
|
||||
public function get_page(Page $page)
|
||||
{
|
||||
return new PageResource($page);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get selected settings from public route
|
||||
*
|
||||
* @param Request $request
|
||||
* @return mixed
|
||||
*/
|
||||
public function get_setting_columns(Request $request)
|
||||
{
|
||||
if (strpos($request->column, '|') !== false) {
|
||||
$columns = collect(explode('|', $request->column))
|
||||
->each(function ($column) {
|
||||
if (in_array($column, $this->blacklist)) {
|
||||
abort(401);
|
||||
}
|
||||
});
|
||||
|
||||
return Setting::whereIn('name', $columns)
|
||||
->pluck('value', 'name');
|
||||
}
|
||||
|
||||
if (in_array($request->column, $this->blacklist)) {
|
||||
abort(401);
|
||||
}
|
||||
|
||||
return Setting::where('name', $request->column)
|
||||
->pluck('value', 'name');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all active storage plans
|
||||
*
|
||||
* @return PricingCollection
|
||||
*/
|
||||
public function get_storage_plans()
|
||||
{
|
||||
// Get pricing from cache
|
||||
$pricing = Cache::rememberForever('pricing', function () {
|
||||
return $this->stripe->getActivePlans();
|
||||
});
|
||||
|
||||
// Format pricing to collection
|
||||
$collection = new PricingCollection($pricing);
|
||||
|
||||
// Sort and return pricing
|
||||
return $collection
|
||||
->sortBy('product.metadata.capacity')
|
||||
->values()
|
||||
->all();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Domain\Homepage\Controllers;
|
||||
|
||||
|
||||
use Doctrine\DBAL\Driver\PDOException;
|
||||
use Domain\Pages\Models\Page;
|
||||
use Illuminate\View\View;
|
||||
use Domain\Pages\Models\Page;
|
||||
use Doctrine\DBAL\Driver\PDOException;
|
||||
|
||||
class IndexController
|
||||
{
|
||||
@@ -36,4 +33,4 @@ class IndexController
|
||||
->with('legal', $pages ?? null)
|
||||
->with('installation', $setup_status);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,11 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Domain\Homepage\Controllers;
|
||||
|
||||
|
||||
use Illuminate\Http\Response;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Domain\Homepage\Mail\SendContactMessage;
|
||||
use Domain\Homepage\Requests\SendContactMessageRequest;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
|
||||
class SendContactMessageController extends Controller
|
||||
{
|
||||
@@ -26,4 +23,4 @@ class SendContactMessageController extends Controller
|
||||
|
||||
return response('Done', 201);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ namespace Domain\Items\Controllers;
|
||||
use Exception;
|
||||
use Illuminate\Http\Request;
|
||||
use Domain\Files\Models\File;
|
||||
use Domain\Folders\Models\Folder;
|
||||
use Support\Services\HelperService;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Support\Demo\Actions\DemoService;
|
||||
@@ -14,7 +13,6 @@ use Support\Services\FileManagerService;
|
||||
use Domain\Items\Requests\MoveItemRequest;
|
||||
use Domain\Items\Requests\DeleteItemRequest;
|
||||
use Domain\Items\Requests\RenameItemRequest;
|
||||
use Domain\Folders\Requests\CreateFolderRequest;
|
||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||
|
||||
class EditItemsController extends Controller
|
||||
@@ -26,23 +24,6 @@ class EditItemsController extends Controller
|
||||
) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new folder for authenticated master|editor user
|
||||
*
|
||||
* @param CreateFolderRequest $request
|
||||
* @return Folder|array|Model
|
||||
* @throws Exception
|
||||
*/
|
||||
public function create_folder(CreateFolderRequest $request)
|
||||
{
|
||||
if (is_demo_account('howdy@hi5ve.digital')) {
|
||||
return $this->demo->create_folder($request);
|
||||
}
|
||||
|
||||
// Create new folder
|
||||
return $this->filemanager->create_folder($request);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename item for authenticated master|editor user
|
||||
*
|
||||
@@ -84,22 +65,6 @@ class EditItemsController extends Controller
|
||||
return response('Done', 204);
|
||||
}
|
||||
|
||||
/**
|
||||
* Upload file for authenticated master|editor user
|
||||
*
|
||||
* @param UploadRequest $request
|
||||
* @return array|Model|\Illuminate\Support\Facades\File
|
||||
* @throws Exception
|
||||
*/
|
||||
public function upload(UploadRequest $request)
|
||||
{
|
||||
if (is_demo_account('howdy@hi5ve.digital')) {
|
||||
return $this->demo->upload($request);
|
||||
}
|
||||
|
||||
return $this->filemanager->upload($request);
|
||||
}
|
||||
|
||||
/**
|
||||
* Move item for authenticated master|editor user
|
||||
*
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Domain\Localization\Controllers;
|
||||
|
||||
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Domain\Localization\Models\Language;
|
||||
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||||
use Illuminate\Database\QueryException;
|
||||
use Illuminate\Support\Collection;
|
||||
|
||||
class CurrentLocalizationController
|
||||
{
|
||||
@@ -17,7 +14,6 @@ class CurrentLocalizationController
|
||||
public function __invoke(
|
||||
string $lang
|
||||
): Collection {
|
||||
|
||||
$translations = cache()
|
||||
->rememberForever("language-translations-$lang", function () use ($lang) {
|
||||
try {
|
||||
@@ -33,4 +29,4 @@ class CurrentLocalizationController
|
||||
? map_language_translations($translations)
|
||||
: get_default_language_translations();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
62
src/Domain/Pages/Controllers/AdminPagesController.php
Normal file
62
src/Domain/Pages/Controllers/AdminPagesController.php
Normal file
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
namespace Domain\Pages\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Domain\Pages\Models\Page;
|
||||
use Illuminate\Http\Response;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Support\Demo\Actions\DemoService;
|
||||
use Domain\Pages\Resources\PageResource;
|
||||
use Domain\Pages\Resources\PageCollection;
|
||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||
|
||||
class AdminPagesController extends Controller
|
||||
{
|
||||
public function __construct(
|
||||
private DemoService $demo,
|
||||
) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all pages
|
||||
*
|
||||
* @return PageCollection
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
return new PageCollection(
|
||||
Page::sortable()
|
||||
->paginate(10)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get single page resource
|
||||
*
|
||||
* @param $page
|
||||
* @return PageResource
|
||||
*/
|
||||
public function show(Page $page)
|
||||
{
|
||||
return new PageResource($page);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update page content
|
||||
*
|
||||
* @param Request $request
|
||||
* @param Page $page
|
||||
* @return ResponseFactory|Response
|
||||
*/
|
||||
public function update(Request $request, Page $page)
|
||||
{
|
||||
// Abort in demo mode
|
||||
abort_if(is_demo(), 204, 'Done.');
|
||||
|
||||
$page->update(
|
||||
make_single_input($request)
|
||||
);
|
||||
|
||||
return response(new PageResource($page), 204);
|
||||
}
|
||||
}
|
||||
@@ -1,62 +1,17 @@
|
||||
<?php
|
||||
namespace Domain\Pages\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Domain\Pages\Models\Page;
|
||||
use Illuminate\Http\Response;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Support\Demo\Actions\DemoService;
|
||||
use Domain\Pages\Resources\PageResource;
|
||||
use Domain\Pages\Resources\PageCollection;
|
||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||
|
||||
class PagesController extends Controller
|
||||
{
|
||||
public function __construct(
|
||||
private DemoService $demo,
|
||||
) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all pages
|
||||
*
|
||||
* @return PageCollection
|
||||
* Get single page content
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
return new PageCollection(
|
||||
Page::sortable()
|
||||
->paginate(10)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get single page resource
|
||||
*
|
||||
* @param $page
|
||||
* @return PageResource
|
||||
*/
|
||||
public function show(Page $page)
|
||||
public function show(Page $page): PageResource
|
||||
{
|
||||
return new PageResource($page);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update page content
|
||||
*
|
||||
* @param Request $request
|
||||
* @param Page $page
|
||||
* @return ResponseFactory|Response
|
||||
*/
|
||||
public function update(Request $request, Page $page)
|
||||
{
|
||||
// Abort in demo mode
|
||||
abort_if(is_demo(), 204, 'Done.');
|
||||
|
||||
$page->update(
|
||||
make_single_input($request)
|
||||
);
|
||||
|
||||
return response(new PageResource($page), 204);
|
||||
}
|
||||
}
|
||||
|
||||
29
src/Domain/Plans/Controllers/ActivePlansController.php
Normal file
29
src/Domain/Plans/Controllers/ActivePlansController.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
namespace Domain\Plans\Controllers;
|
||||
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Domain\Plans\Resources\PricingCollection;
|
||||
use Domain\Subscriptions\Services\StripeService;
|
||||
|
||||
class ActivePlansController
|
||||
{
|
||||
/**
|
||||
* Get all active storage plans
|
||||
*/
|
||||
public function __invoke(): PricingCollection
|
||||
{
|
||||
// Get pricing from cache
|
||||
$pricing = Cache::rememberForever('pricing', function () {
|
||||
return resolve(StripeService::class)->getActivePlans();
|
||||
});
|
||||
|
||||
// Format pricing to collection
|
||||
$collection = new PricingCollection($pricing);
|
||||
|
||||
// Sort and return pricing
|
||||
return $collection
|
||||
->sortBy('product.metadata.capacity')
|
||||
->values()
|
||||
->all();
|
||||
}
|
||||
}
|
||||
@@ -7,7 +7,6 @@ use Illuminate\Http\Response;
|
||||
use Laravel\Cashier\Subscription;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Support\Demo\Actions\DemoService;
|
||||
use App\Users\Resources\UsersCollection;
|
||||
use Domain\Plans\Resources\PlanResource;
|
||||
use Domain\Plans\Resources\PlanCollection;
|
||||
@@ -19,7 +18,6 @@ class PlansController extends Controller
|
||||
{
|
||||
public function __construct(
|
||||
private StripeService $stripe,
|
||||
private DemoService $demo,
|
||||
) {
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ use Support\Demo\Actions\DemoService;
|
||||
use Cartalyst\Stripe\Exception\UnauthorizedException;
|
||||
use Symfony\Component\HttpKernel\Exception\HttpException;
|
||||
|
||||
class SettingController extends Controller
|
||||
class AdminSettingsController extends Controller
|
||||
{
|
||||
public function __construct(
|
||||
private DemoService $demo
|
||||
43
src/Domain/Settings/Controllers/SettingsController.php
Normal file
43
src/Domain/Settings/Controllers/SettingsController.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<?php
|
||||
namespace Domain\Settings\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Collection;
|
||||
use Domain\Settings\Models\Setting;
|
||||
|
||||
class SettingsController
|
||||
{
|
||||
/**
|
||||
* List of allowed settings to get from public request
|
||||
*/
|
||||
private array $blacklist = [
|
||||
'purchase_code',
|
||||
'license',
|
||||
];
|
||||
|
||||
/**
|
||||
* Get selected settings from public route
|
||||
*/
|
||||
public function __invoke(
|
||||
Request $request
|
||||
): Collection {
|
||||
if (str_contains($request->get('column'), '|')) {
|
||||
$columns = collect(explode('|', $request->get('column')))
|
||||
->each(function ($column) {
|
||||
if (in_array($column, $this->blacklist)) {
|
||||
abort(401);
|
||||
}
|
||||
});
|
||||
|
||||
return Setting::whereIn('name', $columns)
|
||||
->pluck('value', 'name');
|
||||
}
|
||||
|
||||
if (in_array($request->get('column'), $this->blacklist)) {
|
||||
abort(401);
|
||||
}
|
||||
|
||||
return Setting::where('name', $request->get('column'))
|
||||
->pluck('value', 'name');
|
||||
}
|
||||
}
|
||||
@@ -468,7 +468,8 @@ class SetupWizardController extends Controller
|
||||
|
||||
// Get setup_wizard status
|
||||
if (Schema::hasTable('settings') && get_setting('setup_wizard_success')) {
|
||||
abort(410, 'Gone');
|
||||
// TODO: resolve
|
||||
//abort(410, 'Gone');
|
||||
}
|
||||
} catch (PDOException $e) {
|
||||
return false;
|
||||
|
||||
@@ -19,25 +19,6 @@ class FileManagerService
|
||||
) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new directory
|
||||
*
|
||||
* @param $request
|
||||
* @param null $shared
|
||||
* @return Folder|\Illuminate\Database\Eloquent\Model
|
||||
*/
|
||||
public function create_folder($request, $shared = null)
|
||||
{
|
||||
return Folder::create([
|
||||
'parent_id' => $request->parent_id,
|
||||
'author' => $shared ? 'visitor' : 'user',
|
||||
'user_id' => $shared ? $shared->user_id : Auth::id(),
|
||||
'name' => $request->name,
|
||||
'color' => $request->color ?? null,
|
||||
'emoji' => $request->emoji ?? null,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rename item name
|
||||
*
|
||||
@@ -196,88 +177,6 @@ class FileManagerService
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Upload file
|
||||
*
|
||||
* @param $request
|
||||
* @param null $shared
|
||||
* @return File|\Illuminate\Database\Eloquent\Model
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function upload($request, $shared = null)
|
||||
{
|
||||
// Get parent_id from request
|
||||
$file = $request->file('file');
|
||||
|
||||
// File name
|
||||
$disk_file_name = basename('chunks/' . $file->getClientOriginalName(), '.part');
|
||||
$temp_filename = $file->getClientOriginalName();
|
||||
|
||||
// File Path
|
||||
$file_path = Storage::disk('local')->path('chunks/' . $temp_filename);
|
||||
|
||||
// Generate file
|
||||
File::append($file_path, $file->get());
|
||||
|
||||
// Size of file
|
||||
$file_size = File::size($file_path);
|
||||
|
||||
// Size of limit
|
||||
$limit = get_setting('upload_limit');
|
||||
|
||||
// File size handling
|
||||
if ($limit && $file_size > format_bytes($limit)) {
|
||||
abort(413);
|
||||
}
|
||||
|
||||
// If last then process file
|
||||
if ($request->boolean('is_last')) {
|
||||
$metadata = get_image_meta_data($file);
|
||||
|
||||
$disk_local = Storage::disk('local');
|
||||
|
||||
// Get user data
|
||||
$user_id = $shared->user_id ?? Auth::id();
|
||||
|
||||
// File Info
|
||||
$file_size = $disk_local->size("chunks/$temp_filename");
|
||||
|
||||
$file_mimetype = $disk_local->mimeType("chunks/$temp_filename");
|
||||
|
||||
// Check if user has enough space to upload file
|
||||
$this->helper->check_user_storage_capacity($user_id, $file_size, $temp_filename);
|
||||
|
||||
// Create thumbnail
|
||||
$thumbnail = $this->helper->create_image_thumbnail("chunks/$temp_filename", $disk_file_name, $user_id);
|
||||
|
||||
// Move finished file from chunk to file-manager directory
|
||||
$disk_local->move("chunks/$temp_filename", "files/$user_id/$disk_file_name");
|
||||
|
||||
// Move files to external storage
|
||||
if (! is_storage_driver(['local'])) {
|
||||
$this->helper->move_file_to_external_storage($disk_file_name, $user_id);
|
||||
}
|
||||
|
||||
// Store user upload size
|
||||
User::find($user_id)
|
||||
->recordUpload($file_size);
|
||||
|
||||
// Return new file
|
||||
return UserFile::create([
|
||||
'mimetype' => get_file_type_from_mimetype($file_mimetype),
|
||||
'type' => get_file_type($file_mimetype),
|
||||
'folder_id' => $request->folder_id,
|
||||
'metadata' => $metadata,
|
||||
'name' => $request->filename,
|
||||
'basename' => $disk_file_name,
|
||||
'author' => $shared ? 'visitor' : 'user',
|
||||
'thumbnail' => $thumbnail,
|
||||
'filesize' => $file_size,
|
||||
'user_id' => $user_id,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Store folder icon
|
||||
*
|
||||
|
||||
@@ -25,7 +25,7 @@ class SettingsTest extends TestCase
|
||||
'value' => 'Give me a money!',
|
||||
]);
|
||||
|
||||
$this->getJson('/api/content?column=get_started_title|pricing_description')
|
||||
$this->getJson('/api/settings?column=get_started_title|pricing_description')
|
||||
->assertStatus(200)
|
||||
->assertExactJson([
|
||||
'get_started_title' => 'Hello World!',
|
||||
@@ -63,7 +63,7 @@ class SettingsTest extends TestCase
|
||||
'value' => '15a53561-d387-4e0a-8de1-5d1bff34c1ed',
|
||||
]);
|
||||
|
||||
$this->getJson('/api/content?column=purchase_code')
|
||||
$this->getJson('/api/settings?column=purchase_code')
|
||||
->assertStatus(401);
|
||||
}
|
||||
|
||||
|
||||
@@ -222,7 +222,7 @@ class UserShareTest extends TestCase
|
||||
'id' => $folder->id,
|
||||
])->assertStatus(201);
|
||||
|
||||
$this->deleteJson('/api/share/revoke', [
|
||||
$this->delete('/api/share', [
|
||||
'tokens' => [
|
||||
$folder->shared->token,
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user