mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-18 16:22:14 +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.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/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/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/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=0fe6c45de3fe3c75bd04",
|
||||||
"/chunks/invoices.js": "/chunks/invoices.js?id=35179ba2b74cdaf74492",
|
"/chunks/invoices.js": "/chunks/invoices.js?id=35179ba2b74cdaf74492",
|
||||||
"/chunks/not-found.js": "/chunks/not-found.js?id=3f0c127b00d113541acc",
|
"/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/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.13a7c4eb981e304dd11c.hot-update.js": "/chunks/platform.13a7c4eb981e304dd11c.hot-update.js",
|
||||||
"/chunks/platform.1dc9a86f8f195ad336c8.hot-update.js": "/chunks/platform.1dc9a86f8f195ad336c8.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'})
|
this.$router.push({name: 'SignIn'})
|
||||||
|
|
||||||
// Get page content
|
// Get page content
|
||||||
axios.get('/api/content', {
|
axios.get('/api/settings', {
|
||||||
params: {
|
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'
|
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
|
<?php
|
||||||
|
|
||||||
use Domain\Admin\Controllers\UserController;
|
use Domain\Admin\Controllers\UserController;
|
||||||
use Domain\Pages\Controllers\PagesController;
|
|
||||||
use Domain\Plans\Controllers\PlansController;
|
use Domain\Plans\Controllers\PlansController;
|
||||||
use Domain\Admin\Controllers\InvoiceController;
|
use Domain\Admin\Controllers\InvoiceController;
|
||||||
use Domain\Admin\Controllers\DashboardController;
|
use Domain\Admin\Controllers\DashboardController;
|
||||||
use Domain\Settings\Controllers\SettingController;
|
use Domain\Pages\Controllers\AdminPagesController;
|
||||||
use Domain\Localization\Controllers\LanguageController;
|
use Domain\Localization\Controllers\LanguageController;
|
||||||
|
use Domain\Settings\Controllers\AdminSettingsController;
|
||||||
|
|
||||||
// Dashboard
|
// Dashboard
|
||||||
Route::group(['prefix' => 'dashboard'], function () {
|
Route::group(['prefix' => 'dashboard'], function () {
|
||||||
@@ -40,9 +40,9 @@ Route::group(['prefix' => 'plans'], function () {
|
|||||||
|
|
||||||
// Pages
|
// Pages
|
||||||
Route::group(['prefix' => 'pages'], function () {
|
Route::group(['prefix' => 'pages'], function () {
|
||||||
Route::patch('/{page}', [PagesController::class, 'update']);
|
Route::patch('/{page}', [AdminPagesController::class, 'update']);
|
||||||
Route::get('/{page}', [PagesController::class, 'show']);
|
Route::get('/{page}', [AdminPagesController::class, 'show']);
|
||||||
Route::get('/', [PagesController::class, 'index']);
|
Route::get('/', [AdminPagesController::class, 'index']);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Invoices
|
// Invoices
|
||||||
@@ -50,11 +50,11 @@ Route::get('/invoices', [InvoiceController::class, 'index']);
|
|||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
Route::group(['prefix' => 'settings'], function () {
|
Route::group(['prefix' => 'settings'], function () {
|
||||||
Route::get('/flush-cache', [SettingController::class, 'flush_cache']);
|
Route::get('/flush-cache', [AdminSettingsController::class, 'flush_cache']);
|
||||||
Route::post('/stripe', [SettingController::class, 'set_stripe']);
|
Route::post('/stripe', [AdminSettingsController::class, 'set_stripe']);
|
||||||
Route::post('/email', [SettingController::class, 'set_email']);
|
Route::post('/email', [AdminSettingsController::class, 'set_email']);
|
||||||
Route::patch('/', [SettingController::class, 'update']);
|
Route::patch('/', [AdminSettingsController::class, 'update']);
|
||||||
Route::get('/', [SettingController::class, 'show']);
|
Route::get('/', [AdminSettingsController::class, 'show']);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Language
|
// Language
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use App\Users\Actions\CreateNewUserAction;
|
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\Sharing\Controllers\ShareController;
|
||||||
use Domain\Items\Controllers\EditItemsController;
|
use Domain\Items\Controllers\EditItemsController;
|
||||||
use Domain\Trash\Controllers\DumpTrashController;
|
use Domain\Trash\Controllers\DumpTrashController;
|
||||||
@@ -9,23 +10,31 @@ use App\Users\Controllers\ResetPasswordController;
|
|||||||
use Domain\Zipping\Controllers\ZipFilesController;
|
use Domain\Zipping\Controllers\ZipFilesController;
|
||||||
use App\Users\Controllers\ForgotPasswordController;
|
use App\Users\Controllers\ForgotPasswordController;
|
||||||
use Domain\Folders\Controllers\FavouriteController;
|
use Domain\Folders\Controllers\FavouriteController;
|
||||||
|
use Domain\Plans\Controllers\ActivePlansController;
|
||||||
|
use Domain\Settings\Controllers\SettingsController;
|
||||||
use Domain\Zipping\Controllers\ZipFolderController;
|
use Domain\Zipping\Controllers\ZipFolderController;
|
||||||
use Domain\Homepage\Controllers\AppFunctionsController;
|
use Domain\Folders\Controllers\CreateFolderController;
|
||||||
use Domain\Sharing\Controllers\ShareViaEmailController;
|
use Domain\Sharing\Controllers\ShareViaEmailController;
|
||||||
use Domain\Trash\Controllers\RestoreTrashContentController;
|
use Domain\Trash\Controllers\RestoreTrashContentController;
|
||||||
use Domain\Browsing\Controllers\BrowseLatestFilesController;
|
use Domain\Browsing\Controllers\BrowseLatestFilesController;
|
||||||
use Domain\Browsing\Controllers\BrowseSharedItemsController;
|
use Domain\Browsing\Controllers\BrowseSharedItemsController;
|
||||||
use Domain\Browsing\Controllers\BrowseTrashContentController;
|
use Domain\Browsing\Controllers\BrowseTrashContentController;
|
||||||
|
use Domain\Homepage\Controllers\SendContactMessageController;
|
||||||
use Domain\Browsing\Controllers\BrowseFolderContentController;
|
use Domain\Browsing\Controllers\BrowseFolderContentController;
|
||||||
use Domain\Folders\Controllers\NavigationFolderTreeController;
|
use Domain\Folders\Controllers\NavigationFolderTreeController;
|
||||||
use Domain\Browsing\Controllers\SearchFilesAndFoldersController;
|
use Domain\Browsing\Controllers\SearchFilesAndFoldersController;
|
||||||
use Domain\Browsing\Controllers\BrowseParticipantsUploadsController;
|
use Domain\Browsing\Controllers\BrowseParticipantsUploadsController;
|
||||||
|
|
||||||
// Pages
|
// Pages
|
||||||
Route::get('/content', [AppFunctionsController::class, 'get_setting_columns']);
|
Route::apiResource('/page', PagesController::class);
|
||||||
|
|
||||||
|
// Homepage
|
||||||
Route::post('/contact', SendContactMessageController::class);
|
Route::post('/contact', SendContactMessageController::class);
|
||||||
Route::get('/page/{page}', [AppFunctionsController::class, 'get_page']);
|
Route::get('/pricing', ActivePlansController::class);
|
||||||
Route::get('/pricing', [AppFunctionsController::class, 'get_storage_plans']);
|
Route::get('/settings', SettingsController::class);
|
||||||
|
|
||||||
|
// Register user
|
||||||
|
Route::post('/register', CreateNewUserAction::class);
|
||||||
|
|
||||||
// Password reset
|
// Password reset
|
||||||
Route::group(['prefix' => 'password'], function () {
|
Route::group(['prefix' => 'password'], function () {
|
||||||
@@ -33,9 +42,6 @@ Route::group(['prefix' => 'password'], function () {
|
|||||||
Route::post('/reset', [ResetPasswordController::class, 'reset']);
|
Route::post('/reset', [ResetPasswordController::class, 'reset']);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Register user
|
|
||||||
Route::post('/register', CreateNewUserAction::class);
|
|
||||||
|
|
||||||
// User master Routes
|
// User master Routes
|
||||||
Route::group(['middleware' => ['auth:sanctum']], function () {
|
Route::group(['middleware' => ['auth:sanctum']], function () {
|
||||||
// Browse
|
// Browse
|
||||||
@@ -55,24 +61,25 @@ Route::group(['middleware' => ['auth:sanctum']], function () {
|
|||||||
Route::delete('/dump', DumpTrashController::class);
|
Route::delete('/dump', DumpTrashController::class);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Share
|
||||||
|
Route::group(['prefix' => 'share'], function () {
|
||||||
|
Route::post('/{token}/email', ShareViaEmailController::class);
|
||||||
|
Route::apiResource('/', ShareController::class);
|
||||||
|
});
|
||||||
|
|
||||||
// Favourites
|
// Favourites
|
||||||
Route::apiResource('/folders/favourites', FavouriteController::class);
|
Route::apiResource('/folders/favourites', FavouriteController::class);
|
||||||
|
|
||||||
// Share
|
|
||||||
Route::post('/share/{token}/email', ShareViaEmailController::class);
|
|
||||||
Route::apiResource('/share', ShareController::class);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// User master,editor routes
|
// User master,editor routes
|
||||||
Route::group(['middleware' => ['auth:sanctum']], function () {
|
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::patch('/rename/{id}', [EditItemsController::class, 'rename_item']);
|
||||||
Route::post('/remove', [EditItemsController::class, 'delete_item']);
|
Route::post('/remove', [EditItemsController::class, 'delete_item']);
|
||||||
Route::post('/upload', [EditItemsController::class, 'upload']);
|
|
||||||
Route::post('/move', [EditItemsController::class, 'move']);
|
Route::post('/move', [EditItemsController::class, 'move']);
|
||||||
|
|
||||||
Route::group(['prefix' => '/zip'], function () {
|
Route::get('/zip/folder/{id}', ZipFolderController::class);
|
||||||
Route::post('/files', ZipFilesController::class);
|
Route::post('/zip/files', ZipFilesController::class);
|
||||||
Route::get('/folder/{id}', ZipFolderController::class);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
use Domain\Admin\Controllers\InvoiceController;
|
use Domain\Admin\Controllers\InvoiceController;
|
||||||
use Domain\Homepage\Controllers\IndexController;
|
use Domain\Homepage\Controllers\IndexController;
|
||||||
use Domain\Localization\Controllers\CurrentLocalizationController;
|
|
||||||
use Domain\Sharing\Controllers\BrowseShareController;
|
use Domain\Sharing\Controllers\BrowseShareController;
|
||||||
use Domain\Homepage\Controllers\AppFunctionsController;
|
use Domain\Homepage\Controllers\AppFunctionsController;
|
||||||
use Domain\SetupWizard\Controllers\SetupWizardController;
|
use Domain\SetupWizard\Controllers\SetupWizardController;
|
||||||
use Domain\Subscriptions\Controllers\StripeWebhookController;
|
use Domain\Subscriptions\Controllers\StripeWebhookController;
|
||||||
|
use Domain\Localization\Controllers\CurrentLocalizationController;
|
||||||
|
|
||||||
Route::post('/stripe/webhook', [StripeWebhookController::class, 'handleWebhook']);
|
Route::post('/stripe/webhook', [StripeWebhookController::class, 'handleWebhook']);
|
||||||
Route::post('/admin-setup', [SetupWizardController::class, 'create_admin_account']);
|
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
|
<?php
|
||||||
namespace Domain\Homepage\Controllers;
|
namespace Domain\Homepage\Controllers;
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Domain\Pages\Models\Page;
|
|
||||||
use Illuminate\Http\Response;
|
|
||||||
use Domain\Sharing\Models\Share;
|
use Domain\Sharing\Models\Share;
|
||||||
use Domain\Settings\Models\Setting;
|
|
||||||
use App\Http\Controllers\Controller;
|
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
|
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
|
* Get og site for web crawlers
|
||||||
*
|
*
|
||||||
@@ -72,65 +41,4 @@ class AppFunctionsController extends Controller
|
|||||||
'thumbnail' => $item->thumbnail ?? null,
|
'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
|
<?php
|
||||||
|
|
||||||
|
|
||||||
namespace Domain\Homepage\Controllers;
|
namespace Domain\Homepage\Controllers;
|
||||||
|
|
||||||
|
|
||||||
use Doctrine\DBAL\Driver\PDOException;
|
|
||||||
use Domain\Pages\Models\Page;
|
|
||||||
use Illuminate\View\View;
|
use Illuminate\View\View;
|
||||||
|
use Domain\Pages\Models\Page;
|
||||||
|
use Doctrine\DBAL\Driver\PDOException;
|
||||||
|
|
||||||
class IndexController
|
class IndexController
|
||||||
{
|
{
|
||||||
@@ -36,4 +33,4 @@ class IndexController
|
|||||||
->with('legal', $pages ?? null)
|
->with('legal', $pages ?? null)
|
||||||
->with('installation', $setup_status);
|
->with('installation', $setup_status);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
|
||||||
namespace Domain\Homepage\Controllers;
|
namespace Domain\Homepage\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Http\Response;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use Illuminate\Support\Facades\Mail;
|
||||||
use Domain\Homepage\Mail\SendContactMessage;
|
use Domain\Homepage\Mail\SendContactMessage;
|
||||||
use Domain\Homepage\Requests\SendContactMessageRequest;
|
use Domain\Homepage\Requests\SendContactMessageRequest;
|
||||||
use Illuminate\Http\Response;
|
|
||||||
use Illuminate\Support\Facades\Mail;
|
|
||||||
|
|
||||||
class SendContactMessageController extends Controller
|
class SendContactMessageController extends Controller
|
||||||
{
|
{
|
||||||
@@ -26,4 +23,4 @@ class SendContactMessageController extends Controller
|
|||||||
|
|
||||||
return response('Done', 201);
|
return response('Done', 201);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ namespace Domain\Items\Controllers;
|
|||||||
use Exception;
|
use Exception;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Domain\Files\Models\File;
|
use Domain\Files\Models\File;
|
||||||
use Domain\Folders\Models\Folder;
|
|
||||||
use Support\Services\HelperService;
|
use Support\Services\HelperService;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Support\Demo\Actions\DemoService;
|
use Support\Demo\Actions\DemoService;
|
||||||
@@ -14,7 +13,6 @@ use Support\Services\FileManagerService;
|
|||||||
use Domain\Items\Requests\MoveItemRequest;
|
use Domain\Items\Requests\MoveItemRequest;
|
||||||
use Domain\Items\Requests\DeleteItemRequest;
|
use Domain\Items\Requests\DeleteItemRequest;
|
||||||
use Domain\Items\Requests\RenameItemRequest;
|
use Domain\Items\Requests\RenameItemRequest;
|
||||||
use Domain\Folders\Requests\CreateFolderRequest;
|
|
||||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||||
|
|
||||||
class EditItemsController extends Controller
|
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
|
* Rename item for authenticated master|editor user
|
||||||
*
|
*
|
||||||
@@ -84,22 +65,6 @@ class EditItemsController extends Controller
|
|||||||
return response('Done', 204);
|
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
|
* Move item for authenticated master|editor user
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,13 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
|
||||||
namespace Domain\Localization\Controllers;
|
namespace Domain\Localization\Controllers;
|
||||||
|
|
||||||
|
use Illuminate\Support\Collection;
|
||||||
|
use Illuminate\Database\QueryException;
|
||||||
use Domain\Localization\Models\Language;
|
use Domain\Localization\Models\Language;
|
||||||
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
use Illuminate\Database\Eloquent\ModelNotFoundException;
|
||||||
use Illuminate\Database\QueryException;
|
|
||||||
use Illuminate\Support\Collection;
|
|
||||||
|
|
||||||
class CurrentLocalizationController
|
class CurrentLocalizationController
|
||||||
{
|
{
|
||||||
@@ -17,7 +14,6 @@ class CurrentLocalizationController
|
|||||||
public function __invoke(
|
public function __invoke(
|
||||||
string $lang
|
string $lang
|
||||||
): Collection {
|
): Collection {
|
||||||
|
|
||||||
$translations = cache()
|
$translations = cache()
|
||||||
->rememberForever("language-translations-$lang", function () use ($lang) {
|
->rememberForever("language-translations-$lang", function () use ($lang) {
|
||||||
try {
|
try {
|
||||||
@@ -33,4 +29,4 @@ class CurrentLocalizationController
|
|||||||
? map_language_translations($translations)
|
? map_language_translations($translations)
|
||||||
: get_default_language_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
|
<?php
|
||||||
namespace Domain\Pages\Controllers;
|
namespace Domain\Pages\Controllers;
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Domain\Pages\Models\Page;
|
use Domain\Pages\Models\Page;
|
||||||
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 Illuminate\Contracts\Routing\ResponseFactory;
|
|
||||||
|
|
||||||
class PagesController extends Controller
|
class PagesController extends Controller
|
||||||
{
|
{
|
||||||
public function __construct(
|
|
||||||
private DemoService $demo,
|
|
||||||
) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all pages
|
* Get single page content
|
||||||
*
|
|
||||||
* @return PageCollection
|
|
||||||
*/
|
*/
|
||||||
public function index()
|
public function show(Page $page): PageResource
|
||||||
{
|
|
||||||
return new PageCollection(
|
|
||||||
Page::sortable()
|
|
||||||
->paginate(10)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get single page resource
|
|
||||||
*
|
|
||||||
* @param $page
|
|
||||||
* @return PageResource
|
|
||||||
*/
|
|
||||||
public function show(Page $page)
|
|
||||||
{
|
{
|
||||||
return new PageResource($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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
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 Laravel\Cashier\Subscription;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
use Support\Demo\Actions\DemoService;
|
|
||||||
use App\Users\Resources\UsersCollection;
|
use App\Users\Resources\UsersCollection;
|
||||||
use Domain\Plans\Resources\PlanResource;
|
use Domain\Plans\Resources\PlanResource;
|
||||||
use Domain\Plans\Resources\PlanCollection;
|
use Domain\Plans\Resources\PlanCollection;
|
||||||
@@ -19,7 +18,6 @@ class PlansController extends Controller
|
|||||||
{
|
{
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private StripeService $stripe,
|
private StripeService $stripe,
|
||||||
private DemoService $demo,
|
|
||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ use Support\Demo\Actions\DemoService;
|
|||||||
use Cartalyst\Stripe\Exception\UnauthorizedException;
|
use Cartalyst\Stripe\Exception\UnauthorizedException;
|
||||||
use Symfony\Component\HttpKernel\Exception\HttpException;
|
use Symfony\Component\HttpKernel\Exception\HttpException;
|
||||||
|
|
||||||
class SettingController extends Controller
|
class AdminSettingsController extends Controller
|
||||||
{
|
{
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private DemoService $demo
|
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
|
// Get setup_wizard status
|
||||||
if (Schema::hasTable('settings') && get_setting('setup_wizard_success')) {
|
if (Schema::hasTable('settings') && get_setting('setup_wizard_success')) {
|
||||||
abort(410, 'Gone');
|
// TODO: resolve
|
||||||
|
//abort(410, 'Gone');
|
||||||
}
|
}
|
||||||
} catch (PDOException $e) {
|
} catch (PDOException $e) {
|
||||||
return false;
|
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
|
* 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
|
* Store folder icon
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ class SettingsTest extends TestCase
|
|||||||
'value' => 'Give me a money!',
|
'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)
|
->assertStatus(200)
|
||||||
->assertExactJson([
|
->assertExactJson([
|
||||||
'get_started_title' => 'Hello World!',
|
'get_started_title' => 'Hello World!',
|
||||||
@@ -63,7 +63,7 @@ class SettingsTest extends TestCase
|
|||||||
'value' => '15a53561-d387-4e0a-8de1-5d1bff34c1ed',
|
'value' => '15a53561-d387-4e0a-8de1-5d1bff34c1ed',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$this->getJson('/api/content?column=purchase_code')
|
$this->getJson('/api/settings?column=purchase_code')
|
||||||
->assertStatus(401);
|
->assertStatus(401);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -222,7 +222,7 @@ class UserShareTest extends TestCase
|
|||||||
'id' => $folder->id,
|
'id' => $folder->id,
|
||||||
])->assertStatus(201);
|
])->assertStatus(201);
|
||||||
|
|
||||||
$this->deleteJson('/api/share/revoke', [
|
$this->delete('/api/share', [
|
||||||
'tokens' => [
|
'tokens' => [
|
||||||
$folder->shared->token,
|
$folder->shared->token,
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user