diff --git a/.env.testing b/.env.testing index 09adae02..adaafed7 100644 --- a/.env.testing +++ b/.env.testing @@ -1,6 +1,6 @@ APP_NAME=Laravel APP_ENV=local -APP_KEY=base64:fzZomRn3E8Rb6UDR8oqFiNo8Y4L5RyX4oVVli3KiWQA= +APP_KEY=base64:yQs3FfCdjY2KGHl1JpLP7L8LLVq8RNOIu/sygWVXUBM= APP_DEBUG=true APP_URL=http://localhost APP_DEMO=false diff --git a/database/factories/FolderFactory.php b/database/factories/FolderFactory.php index 1aff4465..8a11ffaa 100644 --- a/database/factories/FolderFactory.php +++ b/database/factories/FolderFactory.php @@ -25,7 +25,6 @@ class FolderFactory extends Factory 'id' => $this->faker->uuid, 'user_id' => $this->faker->uuid, 'name' => $this->faker->word, - 'team_folder' => false, 'author' => $this->faker->randomElement( ['user', 'member', 'visitor'] ), diff --git a/database/factories/UserLimitationFactory.php b/database/factories/UserLimitationFactory.php index 0dcd51af..d9cacfa6 100644 --- a/database/factories/UserLimitationFactory.php +++ b/database/factories/UserLimitationFactory.php @@ -24,7 +24,6 @@ class UserLimitationFactory extends Factory return [ 'user_id' => $this->faker->uuid, 'max_storage_amount' => $this->faker->randomElement([100, 200, 300]), - 'max_team_members' => $this->faker->randomElement([10, 20, 30]), ]; } } diff --git a/database/migrations/2019_08_15_171328_create_folders_table.php b/database/migrations/2019_08_15_171328_create_folders_table.php index 133365eb..fcb5f1b1 100644 --- a/database/migrations/2019_08_15_171328_create_folders_table.php +++ b/database/migrations/2019_08_15_171328_create_folders_table.php @@ -21,8 +21,6 @@ class CreateFoldersTable extends Migration $table->string('color')->nullable(); $table->longText('emoji')->nullable(); - $table->boolean('team_folder')->default(0); - $table->enum('author', ['user', 'member', 'visitor'])->default('user'); $table->softDeletes(); diff --git a/database/migrations/2021_08_24_080638_create_team_folder_invitations_table.php b/database/migrations/2021_08_24_080638_create_team_folder_invitations_table.php deleted file mode 100644 index 27e8e06a..00000000 --- a/database/migrations/2021_08_24_080638_create_team_folder_invitations_table.php +++ /dev/null @@ -1,39 +0,0 @@ -uuid('id')->primary(); - $table->uuid('parent_id'); - $table->uuid('inviter_id'); - $table->text('email'); - $table->string('color')->nullable(); - $table->enum('permission', ['can-edit', 'can-view', 'can-view-and-download']); - $table->enum('status', ['pending', 'accepted', 'waiting-for-registration', 'rejected'])->default('pending'); - $table->timestamps(); - $table->charset = 'utf8mb4'; - $table->collation = 'utf8mb4_unicode_ci'; - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('invitations'); - } -} diff --git a/database/migrations/2021_08_24_092726_create_team_folder_members_table.php b/database/migrations/2021_08_24_092726_create_team_folder_members_table.php deleted file mode 100644 index 9428c489..00000000 --- a/database/migrations/2021_08_24_092726_create_team_folder_members_table.php +++ /dev/null @@ -1,34 +0,0 @@ -uuid('parent_id'); - $table->uuid('user_id'); - $table->string('permission'); - $table->charset = 'utf8mb4'; - $table->collation = 'utf8mb4_unicode_ci'; - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('team_folder_members'); - } -} diff --git a/database/migrations/2021_11_19_164732_create_user_limitations_table.php b/database/migrations/2021_11_19_164732_create_user_limitations_table.php index bb54c3b8..bc95c88d 100644 --- a/database/migrations/2021_11_19_164732_create_user_limitations_table.php +++ b/database/migrations/2021_11_19_164732_create_user_limitations_table.php @@ -16,7 +16,6 @@ class CreateUserLimitationsTable extends Migration Schema::create('user_limitations', function (Blueprint $table) { $table->uuid('user_id'); $table->text('max_storage_amount'); - $table->text('max_team_members'); $table->charset = 'utf8mb4'; $table->collation = 'utf8mb4_unicode_ci'; }); diff --git a/database/migrations/2022_02_17_073653_create_upload_requests_table.php b/database/migrations/2022_02_17_073653_create_upload_requests_table.php deleted file mode 100644 index 08ac829c..00000000 --- a/database/migrations/2022_02_17_073653_create_upload_requests_table.php +++ /dev/null @@ -1,39 +0,0 @@ -uuid('id'); - $table->uuid('user_id'); - $table->uuid('folder_id')->nullable(); - $table->enum('status', ['active', 'filling', 'filled', 'expired'])->default('active'); - $table->string('email')->nullable(); - $table->text('name')->nullable(); - $table->longText('notes')->nullable(); - $table->timestamps(); - $table->charset = 'utf8mb4'; - $table->collation = 'utf8mb4_unicode_ci'; - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('upload_requests'); - } -} diff --git a/database/migrations/2022_03_10_052753_create_notifications_table.php b/database/migrations/2022_03_10_052753_create_notifications_table.php deleted file mode 100644 index 395e2d3b..00000000 --- a/database/migrations/2022_03_10_052753_create_notifications_table.php +++ /dev/null @@ -1,36 +0,0 @@ -uuid('id')->primary(); - $table->string('type'); - $table->string('notifiable_type'); - $table->uuid('notifiable_id'); - $table->text('data'); - $table->timestamp('read_at')->nullable(); - $table->timestamps(); - }); - } - - /** - * Reverse the migrations. - * - * @return void - */ - public function down() - { - Schema::dropIfExists('notifications'); - } -}; diff --git a/resources/views/index.blade.php b/resources/views/index.blade.php index b52cfc9f..4881e606 100644 --- a/resources/views/index.blade.php +++ b/resources/views/index.blade.php @@ -1,16 +1,6 @@ @php - use VueFileManager\Subscription\Domain\Plans\Models\Plan; - use VueFileManager\Subscription\Domain\Transactions\Models\Transaction; - use VueFileManager\Subscription\Domain\Subscriptions\Models\Subscription; try { - // Subscription - $isEmptySubscriptions = Subscription::count() === 0; - $isEmptyTransactions = Transaction::count() === 0; - $isEmptyPlans = Plan::count() === 0; - $plan = Plan::where('status', 'active') - ->where('type', 'metered'); - // User $isUser = auth()->check(); $user = Auth::user(); @@ -21,7 +11,6 @@ } catch (PDOException $e) { [$isUser, $isEmptyPlans, $isEmptyTransactions, $isEmptySubscriptions] = false; - $plan = null; $defaultEmoji = 'twemoji'; $defaultThemeMode = 'system'; } @@ -71,19 +60,11 @@
@endif - - {{--Adsense code--}} - @if(optional($settings)->allowed_adsense) - - - - @endif diff --git a/resources/views/mails/contact-message.blade.php b/resources/views/mails/contact-message.blade.php deleted file mode 100644 index 9fbfd7ed..00000000 --- a/resources/views/mails/contact-message.blade.php +++ /dev/null @@ -1 +0,0 @@ -

{{ $request['message'] }}

\ No newline at end of file diff --git a/resources/views/vuefilemanager/invoice.blade.php b/resources/views/vuefilemanager/invoice.blade.php deleted file mode 100644 index 7071e49f..00000000 --- a/resources/views/vuefilemanager/invoice.blade.php +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - {{ __t('invoice') }} - - - - - - - - @include('vuefilemanager.others.color-template') - - -
- -
- -
- - -
-
- @if(isset($settings->app_logo_horizontal)) - {{ $settings->app_title ?? 'VueFileManager' }} - @else -

- {{ $settings->app_title ?? 'VueFileManager' }} -

- @endif - - - {{ $settings->contact_email }} - -
- -
-

- {{ __t('invoice') }} -

- - {{ __t('number') }}: {{ $invoice->id }} - -
-
- - -
- -
-
- - {{ __t('seller') }}: - - - @isset($settings->billing_name) - - {{ $settings->billing_name }} - - @endisset -
- -
- - {{ __t('head_office') }}: - - - @isset($settings->billing_address) - - {{ $settings->billing_address }} - - @endisset - - @isset($settings->billing_city) - - {{ $settings->billing_city }} - - @endisset - - @isset($settings->billing_state) - - {{ $settings->billing_state }} - - @endisset - - @isset($settings->billing_postal_code) - - {{ $settings->billing_postal_code }} - - @endisset - - @isset($settings->billing_country) - - {{ $settings->billing_country }} - - @endisset - - @isset($settings->billing_phone_number) - - {{ $settings->billing_phone_number }} - - @endisset -
- -
- - {{ __t('billing_information') }}: - - - @isset($settings->billing_vat_number) - - {{ __t('vat_id') }}: {{ $settings->billing_vat_number }} - - @endisset - - {{--@if(isset($vat)) - - {{ $vat }} - - @endif--}} -
-
- - -
-
- - {{ __t('client') }}: - - - @isset($invoice->user->settings->name) - - {{ $invoice->user->settings->name }} - - @endisset - - @isset($invoice->user->settings->address) - - {{ $invoice->user->settings->address }} - - @endisset - - @isset($invoice->user->settings->postal_code) - - {{ $invoice->user->settings->postal_code }} - - @endisset - - @isset($invoice->user->settings->city) - - {{ $invoice->user->settings->city }} - , - @endisset - - @isset($invoice->user->settings->state) - - {{ $invoice->user->settings->state }} - - @endisset - - @isset($invoice->user->settings->country) - - {{ $invoice->user->settings->country }} - - @endisset - - @isset($invoice->user->settings->phone_number) - - {{ $invoice->user->settings->phone_number }} - - @endisset -
-
- {{ __t('date_of_issue') }}: {{ format_date($invoice->created_at) }} -
-
-
- - -
- - - - - - - - - - - - - @if($invoice->metadata) - - @foreach($invoice->metadata as $item) - - - - - - - @endforeach - - @else - - - - - - - @endif -
- - {{ __t('description') }} - - - - {{ __t('period') }} - - - - {{ __t('usage') }} - - - - {{ __t('amount') }} - -
- - {{ __t($item['feature']) }} - - - - {{ $invoice->note }} - - - - {{ $item['usage'] }} - - - - {{ $item['cost'] }} - -
- - {{ __t('subscription') }} - - - - {{ $invoice->note }} - - - - 1 - - - - {{ format_currency($invoice->amount, $invoice->currency) }} - -
- - -
- - {{ __t('total') }} {{ format_currency($invoice->amount, $invoice->currency) }} - -
-
- - - -
- - diff --git a/routes/admin.php b/routes/admin.php index 73998312..3f661630 100644 --- a/routes/admin.php +++ b/routes/admin.php @@ -1,11 +1,9 @@ 'dashboard'], function () { - Route::get('/transactions', GetLatestTransactionsController::class); Route::get('/newbies', GetNewbiesController::class); Route::get('/', GetDashboardDataController::class); }); @@ -36,14 +27,11 @@ Route::group(['prefix' => 'dashboard'], function () { Route::group(['prefix' => 'users'], function () { Route::patch('/{user}/capacity', ChangeUserStorageCapacityController::class); Route::post('/{user}/reset-password', ResetUserPasswordController::class); - Route::get('/{user}/transactions', GetUserTransactionsController::class); Route::get('/{user}/storage', ShowUserStorageCapacityController::class); Route::patch('/{user}/role', ChangeUserRoleController::class); Route::delete('/{user}/delete', DeleteUserController::class); }); -Route::get('/transactions', GetAllTransactionsController::class); -Route::apiResource('/pages', AdminPagesController::class); Route::apiResource('/users', UserController::class); // Settings @@ -54,10 +42,6 @@ Route::group(['prefix' => 'settings'], function () { Route::get('/flush-cache', FlushCacheController::class); Route::post('/email', StoreEmailCredentialsController::class); Route::post('/storage', StoreStorageCredentialsController::class); - - Route::post('/payment-service', StorePaymentServiceCredentialsController::class); - Route::post('/social-service', StoreSocialServiceCredentialsController::class); - Route::post('/broadcast', StoreBroadcastServiceCredentialsController::class); }); // Language @@ -66,5 +50,3 @@ Route::apiResource('/languages', LanguageController::class); // Server Status Route::get('/status', GetServerStatusController::class); - -Route::post('/upgrade-license', UpgradeLicenseController::class); diff --git a/routes/api.php b/routes/api.php index 0accfb01..2a8d47f5 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1,7 +1,6 @@ 'password'], function () { Route::post('/email', [ForgotPasswordController::class, 'sendResetLinkEmail']); @@ -79,7 +64,6 @@ Route::group(['middleware' => ['auth:sanctum']], function () { // User master,editor routes Route::group(['middleware' => ['auth:sanctum']], function () { - Route::post('/upload/remote', RemoteUploadFileController::class); Route::post('/create-folder', CreateFolderController::class); Route::post('/upload', UploadFileController::class); diff --git a/routes/console.php b/routes/console.php index 31d2fa05..071f4f66 100644 --- a/routes/console.php +++ b/routes/console.php @@ -1,7 +1,5 @@ resolve(ReportUsageAction::class)()) - ->describe('Store user usage estimates for metered billing'); diff --git a/routes/file.php b/routes/file.php index dc0e2f52..07f70f0c 100644 --- a/routes/file.php +++ b/routes/file.php @@ -6,18 +6,10 @@ use Domain\Files\Controllers\FileAccess\GetFileController; use Domain\Files\Controllers\FileAccess\GetThumbnailController; use Domain\Files\Controllers\FileAccess\VisitorGetFileController; use Domain\Files\Controllers\FileAccess\VisitorGetThumbnailController; -use Domain\UploadRequest\Controllers\FileAccess\GetFileFromUploadRequestController; -use Domain\UploadRequest\Controllers\FileAccess\GetThumbnailFromUploadRequestController; Route::get('/avatars/{avatar}', GetAvatarController::class); Route::get('/system/{image}', GetAppImageController::class); -// Get Upload request thumbnails and files -Route::group(['middleware' => ['upload-request']], function () { - Route::get('/thumbnail/{name}/upload-request/{uploadRequest}', GetThumbnailFromUploadRequestController::class); - Route::get('/file/{name}/upload-request/{uploadRequest}', GetFileFromUploadRequestController::class); -}); - // Get public thumbnails and files Route::get('/thumbnail/{name}/shared/{shared}', VisitorGetThumbnailController::class); Route::get('/file/{name}/shared/{shared}', VisitorGetFileController::class); diff --git a/routes/share.php b/routes/share.php index b79de0a5..eb02f9ae 100644 --- a/routes/share.php +++ b/routes/share.php @@ -12,12 +12,10 @@ use Domain\Items\Controllers\VisitorDeleteFileOrFolderController; use Domain\Items\Controllers\VisitorRenameFileOrFolderController; use Domain\Sharing\Controllers\VisitorUnlockLockedShareController; use Domain\Folders\Controllers\VisitorNavigationFolderTreeController; -use Domain\RemoteUpload\Controllers\VisitorRemoteUploadFileController; use Domain\Browsing\Controllers\VisitorSearchFilesAndFoldersController; // Browse functions Route::group(['prefix' => 'editor'], function () { - Route::post('/upload/remote/{shared}', VisitorRemoteUploadFileController::class); Route::post('/create-folder/{shared}', VisitorCreateFolderController::class); Route::post('/upload/{shared}', VisitorUploadFileController::class); diff --git a/routes/user.php b/routes/user.php index 0f1c60ec..32952c61 100644 --- a/routes/user.php +++ b/routes/user.php @@ -4,14 +4,10 @@ use App\Users\Controllers\Account\AccountDetailsController; use App\Users\Controllers\Account\UpdatePasswordController; use App\Users\Controllers\Account\StorageCapacityController; use App\Users\Controllers\Verification\VerifyEmailController; -use Domain\Transactions\Controllers\GetTransactionsController; use App\Users\Controllers\Verification\ResendVerificationEmail; use App\Users\Controllers\Authentication\CheckAccountController; use App\Users\Controllers\Account\UpdateProfileSettingsController; -use Domain\Notifications\Controllers\GetUserNotificationsController; use App\Users\Controllers\Authentication\AccountAccessTokenController; -use Domain\Notifications\Controllers\FlushUserNotificationsController; -use Domain\Notifications\Controllers\MarkUserNotificationsAsReadController; Route::post('/check', CheckAccountController::class); @@ -26,14 +22,8 @@ Route::group(['middleware' => ['auth:sanctum']], function () { // User Access Token Route::apiResource('/tokens', AccountAccessTokenController::class); - // Notifications - Route::post('/notifications/read', MarkUserNotificationsAsReadController::class); - Route::delete('/notifications', FlushUserNotificationsController::class); - Route::get('/notifications', GetUserNotificationsController::class); - // Account Route::patch('/settings', UpdateProfileSettingsController::class); - Route::get('/transactions', GetTransactionsController::class); Route::post('/password', UpdatePasswordController::class); Route::get('/storage', StorageCapacityController::class); Route::get('/', AccountDetailsController::class); diff --git a/routes/web.php b/routes/web.php index bfc8f5eb..9d606e90 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,23 +1,15 @@ middleware('auth:sanctum'); - Route::get('/admin/log/{log}', DownloadLogController::class) ->middleware(['auth:sanctum', 'admin']); diff --git a/src/App/Console/Commands/SetupDevEnvironment.php b/src/App/Console/Commands/SetupDevEnvironment.php index c76d3544..016e15b0 100644 --- a/src/App/Console/Commands/SetupDevEnvironment.php +++ b/src/App/Console/Commands/SetupDevEnvironment.php @@ -11,8 +11,6 @@ use Illuminate\Support\Facades\DB; use Domain\Settings\Models\Setting; use Illuminate\Support\Facades\Storage; use Illuminate\Foundation\Testing\WithFaker; -use Domain\Teams\Models\TeamFolderInvitation; -use Domain\Pages\Actions\SeedDefaultPagesAction; use Intervention\Image\ImageManagerStatic as Image; use Domain\Settings\Actions\SeedDefaultSettingsAction; use Domain\Localization\Actions\SeedDefaultLanguageAction; @@ -25,7 +23,7 @@ class SetupDevEnvironment extends Command /** * The name and signature of the console command. */ - protected $signature = 'setup:dev {license=extended}'; + protected $signature = 'setup:dev'; /** * The console command description. @@ -36,7 +34,6 @@ class SetupDevEnvironment extends Command private CreateDiskDirectoriesAction $createDiskDirectories, private SeedDefaultSettingsAction $seedDefaultSettings, private SeedDefaultLanguageAction $seedDefaultLanguage, - private SeedDefaultPagesAction $seedDefaultPages, ) { parent::__construct(); $this->setUpFaker(); @@ -56,8 +53,7 @@ class SetupDevEnvironment extends Command $this->migrate_and_generate(); $this->info('Storing default settings and content...'); - ($this->seedDefaultPages)(); - ($this->seedDefaultSettings)($this->argument('license')); + ($this->seedDefaultSettings)(); ($this->seedDefaultLanguage)(); $this->store_default_settings(); @@ -69,15 +65,9 @@ class SetupDevEnvironment extends Command $this->info('Creating default demo content...'); $this->create_admin_default_content(); - $this->create_team_folders_content(); - $this->create_share_with_me_team_folders_content(); $this->create_share_records(); $this->generate_traffic(); - $this->generateCommonNotification(); - $this->generateTeamInvitationNotification(); - $this->generateFileRequestFilledNotification(); - $this->info('Clearing application cache...'); $this->clear_cache(); @@ -91,135 +81,6 @@ class SetupDevEnvironment extends Command $this->info('Everything is done, congratulations! 🥳🥳🥳'); } - private function generateCommonNotification() - { - $howdy = User::whereEmail('howdy@hi5ve.digital') - ->first(); - - DB::table('notifications') - ->insert([ - 'id' => Str::uuid(), - 'type' => 'App\Users\Notifications\RegistrationBonusAddedNotification', - 'notifiable_type' => 'App\Users\Models\User', - 'notifiable_id' => $howdy->id, - 'data' => json_encode([ - 'category' => 'gift', - 'title' => 'You Received $10.00', - 'description' => 'You received credit bonus $10.00 for your registration. Happy spending!', - ]), - 'read_at' => now()->subMinutes(5), - 'created_at' => now()->subMinutes(5), - 'updated_at' => now()->subMinutes(5), - ]); - } - - private function generateTeamInvitationNotification() - { - $alice = User::whereEmail('alice@hi5ve.digital') - ->first(); - - $howdy = User::whereEmail('howdy@hi5ve.digital') - ->first(); - - $newV2Wallpaper = Folder::factory() - ->create([ - 'user_id' => $alice->id, - 'team_folder' => true, - 'name' => 'New v2 Wallpaper', - ]); - - $invitation = TeamFolderInvitation::factory() - ->create([ - 'email' => 'howdy@hi5ve.digital', - 'parent_id' => $newV2Wallpaper->id, - 'inviter_id' => $newV2Wallpaper->user_id, - 'status' => 'pending', - 'permission' => 'can-edit', - ]); - - DB::table('notifications') - ->insert([ - 'id' => Str::uuid(), - 'type' => 'Domain\UploadRequest\Notifications\UploadRequestFulfilledNotification', - 'notifiable_type' => 'App\Users\Models\User', - 'notifiable_id' => $howdy->id, - 'data' => json_encode([ - 'category' => 'team-invitation', - 'title' => 'New Team Invitation', - 'description' => 'Jane Doe invite you to join into Team Folder.', - 'action' => [ - 'type' => 'invitation', - 'params' => [ - 'id' => $invitation->id, - ], - ], - ]), - 'read_at' => now(), - 'created_at' => now(), - 'updated_at' => now(), - ]); - } - - private function generateFileRequestFilledNotification() - { - $howdy = User::whereEmail('howdy@hi5ve.digital') - ->first(); - - $sharedFolder = Folder::where('name', 'Shared Folder') - ->first(); - - $fileRequestFolder = Folder::factory() - ->create([ - 'parent_id' => $sharedFolder->id, - 'user_id' => $howdy->id, - 'team_folder' => false, - 'name' => 'Upload Request from 10. Mar. 2022', - ]); - - DB::table('notifications') - ->insert([ - 'id' => Str::uuid(), - 'type' => 'Domain\UploadRequest\Notifications\UploadRequestFulfilledNotification', - 'notifiable_type' => 'App\Users\Models\User', - 'notifiable_id' => $howdy->id, - 'data' => json_encode([ - 'category' => 'file-request', - 'title' => 'File Request Filled', - 'description' => "Your file request for 'Shared Folder' folder was filled successfully.", - 'action' => [ - 'type' => 'route', - 'params' => [ - 'route' => 'Files', - 'button' => 'Show Files', - 'id' => $fileRequestFolder->id, - ], - ], - ]), - 'created_at' => now(), - 'updated_at' => now(), - ]); - - // Get meme gallery - collect([ - 'demo/request/v2-wallpaper.jpg', - ]) - ->each(function ($file) use ($howdy, $fileRequestFolder) { - $thumbnail = $this->generate_thumbnails($file, $howdy); - - // Create file record - File::create([ - 'parent_id' => $fileRequestFolder->id, - 'user_id' => $howdy->id, - 'name' => $thumbnail['name'], - 'basename' => $thumbnail['basename'], - 'type' => 'image', - 'mimetype' => 'jpg', - 'filesize' => rand(1000000, 4000000), - 'created_at' => now()->subMinutes(rand(1, 5)), - ]); - }); - } - /** * Create default admin account */ @@ -830,527 +691,6 @@ class SetupDevEnvironment extends Command }); } - private function create_team_folders_content(): void - { - $user = User::whereEmail('howdy@hi5ve.digital') - ->first(); - - $alice = User::whereEmail('alice@hi5ve.digital') - ->first(); - - $johan = User::whereEmail('johan@hi5ve.digital') - ->first(); - - $users = [$user, $alice, $johan]; - - // 1. Company project - $companyProjectFolder = Folder::factory() - ->create([ - 'user_id' => $user->id, - 'team_folder' => true, - 'name' => 'Company Project', - ]); - - $presentationMaterial = Folder::factory() - ->create([ - 'user_id' => $user->id, - 'parent_id' => $companyProjectFolder->id, - 'name' => 'Presentation Materials', - 'team_folder' => true, - ]); - - $teamGallery = Folder::factory() - ->create([ - 'user_id' => $user->id, - 'parent_id' => $companyProjectFolder->id, - 'name' => 'Team Gallery', - 'team_folder' => true, - ]); - - collect([ - 'demo/images/team-gallery/photo-1.jpeg', - 'demo/images/team-gallery/photo-2.jpeg', - 'demo/images/team-gallery/photo-3.jpeg', - ]) - ->each(function ($file) use ($users, $user, $teamGallery) { - $author = $users[rand(0, 2)]; - - $thumbnail = $this->generate_thumbnails($file, $user); - - // Create file record - File::create([ - 'parent_id' => $teamGallery->id, - 'user_id' => $user->id, - 'creator_id' => $author->id, - 'name' => $thumbnail['name'], - 'basename' => $thumbnail['basename'], - 'type' => 'image', - 'mimetype' => 'jpg', - 'filesize' => rand(1000000, 4000000), - 'created_at' => now()->subMinutes(rand(1, 5)), - ]); - }); - - collect([ - 'demo/images/presentation/photo-1.jpeg', - 'demo/images/presentation/photo-2.jpeg', - ]) - ->each(function ($file) use ($users, $user, $presentationMaterial) { - $author = $users[rand(0, 2)]; - - $thumbnail = $this->generate_thumbnails($file, $user); - - // Create file record - File::create([ - 'parent_id' => $presentationMaterial->id, - 'user_id' => $user->id, - 'creator_id' => $author->id, - 'name' => $thumbnail['name'], - 'basename' => $thumbnail['basename'], - 'type' => 'image', - 'mimetype' => 'jpg', - 'filesize' => rand(1000000, 4000000), - 'created_at' => now()->subMinutes(rand(1, 5)), - ]); - }); - - // 2. Finance Documents - $financeDocumentsFolder = Folder::factory() - ->create([ - 'user_id' => $user->id, - 'team_folder' => true, - 'name' => 'Finance Documents', - ]); - - $reserves = Folder::factory() - ->create([ - 'user_id' => $user->id, - 'parent_id' => $financeDocumentsFolder->id, - 'name' => 'Reserves', - 'team_folder' => true, - ]); - - $otherDocuments = Folder::factory() - ->create([ - 'user_id' => $user->id, - 'parent_id' => $financeDocumentsFolder->id, - 'name' => 'Other Documents', - 'team_folder' => true, - ]); - - collect([ - 'demo/images/finance-documents/photo-1.jpeg', - 'demo/images/finance-documents/photo-2.jpeg', - 'demo/images/finance-documents/photo-3.jpeg', - ]) - ->each(function ($file) use ($users, $user, $financeDocumentsFolder) { - $author = $users[rand(0, 2)]; - - $thumbnail = $this->generate_thumbnails($file, $user); - - // Create file record - File::create([ - 'parent_id' => $financeDocumentsFolder->id, - 'user_id' => $user->id, - 'creator_id' => $author->id, - 'name' => $thumbnail['name'], - 'basename' => $thumbnail['basename'], - 'type' => 'image', - 'mimetype' => 'jpg', - 'filesize' => rand(1000000, 4000000), - 'created_at' => now()->subMinutes(rand(1, 5)), - ]); - }); - - collect([ - 'demo/images/finance-documents/photo-4.jpeg', - 'demo/images/finance-documents/photo-5.jpeg', - ]) - ->each(function ($file) use ($users, $user, $reserves) { - $author = $users[rand(0, 2)]; - - $thumbnail = $this->generate_thumbnails($file, $user); - - // Create file record - File::create([ - 'parent_id' => $reserves->id, - 'user_id' => $user->id, - 'creator_id' => $author->id, - 'name' => $thumbnail['name'], - 'basename' => $thumbnail['basename'], - 'type' => 'image', - 'mimetype' => 'jpg', - 'filesize' => rand(1000000, 4000000), - 'created_at' => now()->subMinutes(rand(1, 5)), - ]); - }); - - // Get documents to root directory - collect([ - [ - 'name' => 'Next Year Projection', - 'basename' => 'Licence.pdf', - 'mimetype' => 'pdf', - ], - [ - 'name' => 'Budget.pdf', - 'basename' => 'Project Notes.pdf', - 'mimetype' => 'pdf', - ], - [ - 'name' => '2022 Yearly Report.pages', - 'basename' => 'School Report.pages', - 'mimetype' => 'pages', - ], - [ - 'name' => 'Company Project Notes.pages', - 'basename' => 'Stories of the Night Skies.pages', - 'mimetype' => 'pages', - ], - [ - 'name' => 'Finance Stories.pages', - 'basename' => 'Stories of the Night Skies.pages', - 'mimetype' => 'pages', - ], - ]) - ->each(function ($file) use ($users, $user, $financeDocumentsFolder, $otherDocuments) { - $author = $users[rand(0, 2)]; - $folder = [$financeDocumentsFolder, $otherDocuments][rand(0, 1)]; - - $basename = Str::random(12) . '-' . $file['basename']; - - // Copy file into app storage - Storage::putFileAs("files/$user->id", storage_path("demo/documents/{$file['basename']}"), $basename, 'private'); - - // Create file record - File::create([ - 'parent_id' => $folder->id, - 'user_id' => $user->id, - 'creator_id' => $author->id, - 'name' => $file['name'], - 'basename' => $basename, - 'type' => 'file', - 'mimetype' => $file['mimetype'], - 'filesize' => rand(1000000, 4000000), - 'created_at' => now()->subMinutes(rand(1, 5)), - ]); - }); - - // 3. Holiday 2022 - $holiday2022Folder = Folder::factory() - ->create([ - 'user_id' => $user->id, - 'team_folder' => true, - 'name' => 'Holiday 2022', - ]); - - $destinationGallery = Folder::factory() - ->create([ - 'user_id' => $user->id, - 'parent_id' => $holiday2022Folder->id, - 'name' => 'Destination Gallery', - 'team_folder' => true, - ]); - - collect([ - 'demo/images/destination-gallery/photo-1.jpeg', - 'demo/images/destination-gallery/photo-2.jpeg', - 'demo/images/destination-gallery/photo-3.jpeg', - 'demo/images/destination-gallery/photo-4.jpeg', - 'demo/images/destination-gallery/photo-5.jpeg', - ]) - ->each(function ($file) use ($users, $user, $destinationGallery) { - $author = $users[rand(0, 2)]; - - $thumbnail = $this->generate_thumbnails($file, $user); - - // Create file record - File::create([ - 'parent_id' => $destinationGallery->id, - 'user_id' => $user->id, - 'creator_id' => $author->id, - 'name' => $thumbnail['name'], - 'basename' => $thumbnail['basename'], - 'type' => 'image', - 'mimetype' => 'jpg', - 'filesize' => rand(1000000, 4000000), - 'created_at' => now()->subMinutes(rand(1, 5)), - ]); - }); - - // Get documents to root directory - collect([ - [ - 'name' => 'Finance.pages', - 'basename' => 'Licence.pdf', - 'mimetype' => 'pdf', - ], - [ - 'name' => 'Fly tickets.pdf', - 'basename' => 'Project Notes.pdf', - 'mimetype' => 'pdf', - ], - [ - 'name' => 'Documentation.pdf', - 'basename' => 'School Report.pages', - 'mimetype' => 'pages', - ], - ]) - ->each(function ($file) use ($users, $user, $holiday2022Folder) { - $author = $users[rand(0, 2)]; - - $basename = Str::random(12) . '-' . $file['basename']; - - // Copy file into app storage - Storage::putFileAs("files/$user->id", storage_path("demo/documents/{$file['basename']}"), $basename, 'private'); - - // Create file record - File::create([ - 'parent_id' => $holiday2022Folder->id, - 'user_id' => $user->id, - 'creator_id' => $author->id, - 'name' => $file['name'], - 'basename' => $basename, - 'type' => 'file', - 'mimetype' => $file['mimetype'], - 'filesize' => rand(1000000, 4000000), - 'created_at' => now()->subMinutes(rand(1, 5)), - ]); - }); - - collect([$companyProjectFolder, $financeDocumentsFolder, $holiday2022Folder]) - ->each(function ($folder) use ($user) { - DB::table('team_folder_members') - ->insert([ - 'parent_id' => $folder->id, - 'user_id' => $user->id, - 'permission' => 'owner', - ]); - }); - - // Attach members - $members = User::whereNotIn('email', ['howdy@hi5ve.digital']) - ->get(); - - collect([$members[0]->id, $members[1]->id, $members[5]->id]) - ->each( - fn ($id) => DB::table('team_folder_members') - ->insert([ - 'parent_id' => $companyProjectFolder->id, - 'user_id' => $id, - 'permission' => 'can-edit', - ]) - ); - - collect([$members[3]->id, $members[2]->id]) - ->each( - fn ($id) => DB::table('team_folder_members') - ->insert([ - 'parent_id' => $financeDocumentsFolder->id, - 'user_id' => $id, - 'permission' => 'can-edit', - ]) - ); - - collect([$members[2]->id, $members[3]->id, $members[5]->id, $members[0]->id]) - ->each( - fn ($id) => DB::table('team_folder_members') - ->insert([ - 'parent_id' => $holiday2022Folder->id, - 'user_id' => $id, - 'permission' => 'can-edit', - ]) - ); - - // Create invitations - collect([$members[4], $members[5]]) - ->each( - fn ($user) => TeamFolderInvitation::factory() - ->create([ - 'email' => $user->email, - 'parent_id' => $companyProjectFolder->id, - 'inviter_id' => $companyProjectFolder->user_id, - 'status' => 'pending', - 'permission' => 'can-edit', - ]) - ); - } - - public function create_share_with_me_team_folders_content(): void - { - $member = User::whereEmail('howdy@hi5ve.digital') - ->first(); - - $owner = User::whereEmail('alice@hi5ve.digital') - ->first(); - - $johan = User::whereEmail('johan@hi5ve.digital') - ->first(); - - $users = [$member, $johan]; - - $folder = Folder::factory() - ->create([ - 'user_id' => $owner->id, - 'team_folder' => true, - 'name' => "Alice's Project Files", - ]); - - $videos = Folder::factory() - ->create([ - 'user_id' => $owner->id, - 'parent_id' => $folder->id, - 'name' => 'Videos', - 'team_folder' => true, - ]); - - $hug = Folder::factory() - ->create([ - 'user_id' => $owner->id, - 'parent_id' => $folder->id, - 'name' => 'Digital Hug', - 'team_folder' => true, - ]); - - DB::table('team_folder_members') - ->insert([ - [ - 'parent_id' => $folder->id, - 'user_id' => $member->id, - 'permission' => 'can-edit', - ], - [ - 'parent_id' => $folder->id, - 'user_id' => $owner->id, - 'permission' => 'owner', - ], - [ - 'parent_id' => $folder->id, - 'user_id' => $johan->id, - 'permission' => 'can-edit', - ], - ]); - - // Get videos - collect([ - 'Apple Watch App Video Promotion.mp4', - 'Smart Watch 3D Device Pack for Element 3D.mp4', - ]) - ->each(function ($file) use ($users, $owner, $videos) { - $author = $users[rand(0, 1)]; - - $basename = Str::random(12) . '-' . $file; - - // Copy file into app storage - Storage::putFileAs("files/$owner->id", storage_path("demo/video/$file"), $basename, 'private'); - - // Create file record - File::create([ - 'parent_id' => $videos->id, - 'user_id' => $owner->id, - 'creator_id' => $author->id, - 'name' => $file, - 'basename' => $basename, - 'type' => 'video', - 'mimetype' => 'mp4', - 'filesize' => rand(1000000, 4000000), - 'created_at' => now()->subMinutes(rand(1, 5)), - ]); - }); - - collect([ - [ - 'name' => 'Notes', - 'basename' => 'Licence.pdf', - 'mimetype' => 'pdf', - ], - ]) - ->each(function ($file) use ($users, $owner, $folder) { - $basename = Str::random(12) . '-' . $file['basename']; - - $author = $users[rand(0, 1)]; - - // Copy file into app storage - Storage::putFileAs("files/$owner->id", storage_path("demo/documents/{$file['basename']}"), $basename, 'private'); - - // Create file record - File::create([ - 'parent_id' => $folder->id, - 'user_id' => $owner->id, - 'creator_id' => $author->id, - 'name' => $file['name'], - 'basename' => $basename, - 'type' => 'file', - 'mimetype' => $file['mimetype'], - 'filesize' => rand(1000000, 4000000), - 'created_at' => now()->subMinutes(rand(1, 5)), - ]); - }); - - // Get meme gallery - collect([ - 'demo/images/memes/Sofishticated.jpg', - 'demo/images/memes/whaaaaat.jpg', - ]) - ->each(function ($file) use ($owner, $folder) { - $thumbnail = $this->generate_thumbnails($file, $owner); - - // Create file record - File::create([ - 'parent_id' => $folder->id, - 'user_id' => $owner->id, - 'name' => $thumbnail['name'], - 'basename' => $thumbnail['basename'], - 'type' => 'image', - 'mimetype' => 'jpg', - 'filesize' => rand(1000000, 4000000), - 'created_at' => now()->subMinutes(rand(1, 5)), - ]); - }); - - // Get meme gallery - collect([ - 'demo/images/memes/You Are My Sunshine.jpg', - ]) - ->each(function ($file) use ($johan, $owner, $folder) { - $thumbnail = $this->generate_thumbnails($file, $owner); - - // Create file record - File::create([ - 'parent_id' => $folder->id, - 'user_id' => $owner->id, - 'creator_id' => $johan->id, - 'name' => $thumbnail['name'], - 'basename' => $thumbnail['basename'], - 'type' => 'image', - 'mimetype' => 'jpg', - 'filesize' => rand(1000000, 4000000), - 'created_at' => now()->subMinutes(rand(1, 5)), - ]); - }); - - collect([ - 'demo/images/memes/Eggcited bro.jpg', - 'demo/images/memes/Get a Rest.jpg', - ]) - ->each(function ($file) use ($member, $owner, $hug) { - $thumbnail = $this->generate_thumbnails($file, $owner); - - // Create file record - File::create([ - 'parent_id' => $hug->id, - 'user_id' => $owner->id, - 'creator_id' => $member->id, - 'name' => $thumbnail['name'], - 'basename' => $thumbnail['basename'], - 'type' => 'image', - 'mimetype' => 'jpg', - 'filesize' => rand(1000000, 4000000), - 'created_at' => now()->subMinutes(rand(1, 5)), - ]); - }); - } - private function create_share_records(): void { $user = User::whereEmail('howdy@hi5ve.digital') @@ -1450,14 +790,6 @@ class SetupDevEnvironment extends Command 'name' => 'registration', 'value' => 1, ], - [ - 'name' => 'user_verification', - 'value' => 0, - ], - [ - 'name' => 'allowed_payments', - 'value' => 1, - ], [ 'name' => 'storage_limitation', 'value' => 1, @@ -1466,17 +798,13 @@ class SetupDevEnvironment extends Command 'name' => 'default_max_storage_amount', 'value' => 5, ], - [ - 'name' => 'default_max_team_member', - 'value' => 10, - ], [ 'name' => 'setup_wizard_success', 'value' => 1, ], [ 'name' => 'license', - 'value' => $this->argument('license'), + 'value' => 'regular', ], [ 'name' => 'purchase_code', @@ -1514,30 +842,6 @@ class SetupDevEnvironment extends Command 'name' => 'billing_vat_number', 'value' => '41241241234', ], - [ - 'name' => 'allowed_registration_bonus', - 'value' => 1, - ], - [ - 'name' => 'registration_bonus_amount', - 'value' => 10, - ], - [ - 'name' => 'allowed_paypal', - 'value' => 1, - ], - [ - 'name' => 'allowed_paystack', - 'value' => 1, - ], - [ - 'name' => 'allowed_stripe', - 'value' => 1, - ], - [ - 'name' => 'subscription_type', - 'value' => 'none', - ], [ 'name' => 'allowed_recaptcha', 'value' => 0, diff --git a/src/App/Console/Commands/SetupProdEnvironment.php b/src/App/Console/Commands/SetupProdEnvironment.php index e91497d1..d6c803c2 100644 --- a/src/App/Console/Commands/SetupProdEnvironment.php +++ b/src/App/Console/Commands/SetupProdEnvironment.php @@ -5,7 +5,6 @@ use App\Users\Models\User; use Illuminate\Console\Command; use Domain\Settings\Models\Setting; use Illuminate\Foundation\Testing\WithFaker; -use Domain\Pages\Actions\SeedDefaultPagesAction; use Domain\Settings\Actions\SeedDefaultSettingsAction; use Domain\Localization\Actions\SeedDefaultLanguageAction; use Domain\SetupWizard\Actions\CreateDiskDirectoriesAction; @@ -17,7 +16,7 @@ class SetupProdEnvironment extends Command /** * The name and signature of the console command. */ - protected $signature = 'setup:prod {license=extended}'; + protected $signature = 'setup:prod'; /** * The console command description. @@ -30,7 +29,6 @@ class SetupProdEnvironment extends Command private CreateDiskDirectoriesAction $createDiskDirectories, private SeedDefaultSettingsAction $seedDefaultSettings, private SeedDefaultLanguageAction $seedDefaultLanguage, - private SeedDefaultPagesAction $seedDefaultPages, ) { parent::__construct(); $this->setUpFaker(); @@ -54,7 +52,6 @@ class SetupProdEnvironment extends Command $this->info('Storing default settings and content...'); $this->store_default_settings(); - ($this->seedDefaultPages)(); ($this->seedDefaultSettings)($this->argument('license')); ($this->seedDefaultLanguage)(); @@ -129,14 +126,6 @@ class SetupProdEnvironment extends Command 'name' => 'contact_email', 'value' => null, ], - [ - 'name' => 'registration', - 'value' => 0, - ], - [ - 'name' => 'user_verification', - 'value' => 0, - ], [ 'name' => 'storage_limitation', 'value' => 1, @@ -145,17 +134,13 @@ class SetupProdEnvironment extends Command 'name' => 'default_max_storage_amount', 'value' => 5, ], - [ - 'name' => 'default_max_team_member', - 'value' => 10, - ], [ 'name' => 'setup_wizard_success', 'value' => 1, ], [ 'name' => 'license', - 'value' => $this->argument('license'), + 'value' => 'regular', ], [ 'name' => 'purchase_code', @@ -203,20 +188,6 @@ class SetupProdEnvironment extends Command 'value' => $col['value'], ]); }); - - if ($this->argument('license') === 'extended') { - $choice = $this->choice('Choose subscription type', [ - 'metered' => 'Metered', - 'fixed' => 'Fixed', - 'none' => 'None', - ]); - - Setting::updateOrCreate([ - 'name' => 'subscription_type', - ], [ - 'value' => $choice, - ]); - } } /** diff --git a/src/App/Console/Kernel.php b/src/App/Console/Kernel.php index b0e7e9e2..37807044 100644 --- a/src/App/Console/Kernel.php +++ b/src/App/Console/Kernel.php @@ -4,16 +4,12 @@ namespace App\Console; use Illuminate\Console\Scheduling\Schedule; use App\Console\Commands\SetupDevEnvironment; use App\Console\Commands\SetupProdEnvironment; -use Support\Scheduler\Actions\ReportUsageAction; use Support\Upgrading\Actions\UpdateSystemAction; use Support\Demo\Actions\ClearHowdyDemoDataAction; -use App\Console\Commands\SetupWebsocketEnvironment; use Support\Scheduler\Actions\DeleteFailedFilesAction; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; use Support\Scheduler\Actions\DeleteUnverifiedUsersAction; use Support\Scheduler\Actions\DeleteExpiredShareLinksAction; -use App\Console\Commands\GenerateDemoSubscriptionContentCommand; -use Support\Scheduler\Actions\ExpireUnfilledUploadRequestAction; class Kernel extends ConsoleKernel { @@ -26,10 +22,6 @@ class Kernel extends ConsoleKernel // Basic demo content generator SetupDevEnvironment::class, SetupProdEnvironment::class, - SetupWebsocketEnvironment::class, - - // Subscription demo generator - GenerateDemoSubscriptionContentCommand::class, ]; /** @@ -53,10 +45,6 @@ class Kernel extends ConsoleKernel fn () => resolve(DeleteExpiredShareLinksAction::class)() )->everyTenMinutes(); - $schedule->call( - fn () => resolve(ExpireUnfilledUploadRequestAction::class)() - )->hourly(); - $schedule->call( fn () => resolve(UpdateSystemAction::class)() )->everyMinute(); @@ -65,10 +53,6 @@ class Kernel extends ConsoleKernel fn () => resolve(DeleteUnverifiedUsersAction::class)() )->daily()->at('00:05'); - $schedule->call( - fn () => resolve(ReportUsageAction::class)() - )->daily()->at('00:10'); - // Run queue jobs every minute $schedule->command('queue:work --queue=high,default --max-time=300') ->everyFiveMinutes() diff --git a/src/App/Http/Kernel.php b/src/App/Http/Kernel.php index 3385b560..c5f62fa3 100644 --- a/src/App/Http/Kernel.php +++ b/src/App/Http/Kernel.php @@ -15,7 +15,6 @@ use Illuminate\View\Middleware\ShareErrorsFromSession; use Support\Middleware\PreventRequestsDuringMaintenance; use Illuminate\Foundation\Http\Middleware\ValidatePostSize; use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse; -use Domain\UploadRequest\Middleware\ProtectUploadRequestRoutes; use Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull; use Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful; @@ -78,6 +77,5 @@ class Kernel extends HttpKernel 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'admin' => AdminCheck::class, 'setup-wizard' => ProtectSetupWizardRoutes::class, - 'upload-request' => ProtectUploadRequestRoutes::class, ]; } diff --git a/src/App/Providers/AuthServiceProvider.php b/src/App/Providers/AuthServiceProvider.php index ddbd29c7..d1cf24c3 100644 --- a/src/App/Providers/AuthServiceProvider.php +++ b/src/App/Providers/AuthServiceProvider.php @@ -45,9 +45,6 @@ class AuthServiceProvider extends ServiceProvider if ($user?->id === $item->user_id) { return true; } - - // Check team member ability to access into requested item - return $this->teamMemberGuard($item, $user, $ability); }); }); @@ -85,17 +82,4 @@ class AuthServiceProvider extends ServiceProvider return $share->user_id === $item->user_id; } - - private function teamMemberGuard(Folder | File $item, ?User $user, $ability): bool - { - $teamFolder = $item->getLatestParent(); - - $membership = DB::table('team_folder_members') - ->where('parent_id', $teamFolder->id) - ->where('user_id', $user->id) - ->first(); - - // check existing members permission or check team folder owner privileges - return $membership?->permission === $ability || $teamFolder->user_id === Auth::id(); - } } diff --git a/src/App/Providers/EventServiceProvider.php b/src/App/Providers/EventServiceProvider.php index ba1b6c9c..13d6f453 100644 --- a/src/App/Providers/EventServiceProvider.php +++ b/src/App/Providers/EventServiceProvider.php @@ -2,7 +2,6 @@ namespace App\Providers; use Illuminate\Auth\Events\Registered; -use Support\Listeners\SubscriptionEventSubscriber; use Illuminate\Auth\Listeners\SendEmailVerificationNotification; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; @@ -25,7 +24,7 @@ class EventServiceProvider extends ServiceProvider * @var array */ protected $subscribe = [ - SubscriptionEventSubscriber::class, + ]; /** diff --git a/src/App/Providers/RouteServiceProvider.php b/src/App/Providers/RouteServiceProvider.php index eb2742e2..0ced0e36 100644 --- a/src/App/Providers/RouteServiceProvider.php +++ b/src/App/Providers/RouteServiceProvider.php @@ -43,10 +43,6 @@ class RouteServiceProvider extends ServiceProvider ->middleware('api') ->group(base_path('routes/share.php')); - Route::prefix('api/upload-request') - ->middleware('api') - ->group(base_path('routes/upload-request.php')); - Route::prefix('api/admin') ->middleware(['api', 'auth:sanctum', 'admin']) ->group(base_path('routes/admin.php')); @@ -64,10 +60,6 @@ class RouteServiceProvider extends ServiceProvider Route::middleware('web') ->group(base_path('routes/file.php')); - Route::prefix('api/teams') - ->middleware(['api']) - ->group(base_path('routes/teams.php')); - Route::middleware('web') ->group(base_path('routes/web.php')); }); diff --git a/src/App/Users/Actions/CreateNewUserAction.php b/src/App/Users/Actions/CreateNewUserAction.php index 447d8bb9..c54a4896 100644 --- a/src/App/Users/Actions/CreateNewUserAction.php +++ b/src/App/Users/Actions/CreateNewUserAction.php @@ -12,32 +12,14 @@ use VueFileManager\Subscription\Domain\Plans\Exceptions\MeteredBillingPlanDoesnt class CreateNewUserAction extends Controller { - public function __construct( - protected AutoSubscribeForMeteredBillingAction $autoSubscribeForMeteredBilling, - ) { - } - /** * Validate and create a new user. - * - * @throws MeteredBillingPlanDoesntExist */ public function __invoke(CreateUserData $data): User { - // Check if subscription metered billing plan exist - $this->checkMeteredBillingPlan($data); - // Create user $user = $this->createUser($data); - // Join to previously accepted team folder invitations - $this->applyExistingTeamInvitations($user); - - // Subscribe user for metered billing - if (get_settings('subscription_type') === 'metered' && $data->role !== 'admin') { - ($this->autoSubscribeForMeteredBilling)($user); - } - // Mark as verified if verification is disabled if (! $data->password || ! intval(get_settings('user_verification'))) { $user->markEmailAsVerified(); @@ -48,43 +30,10 @@ class CreateNewUserAction extends Controller return $user; } - /** - * @throws MeteredBillingPlanDoesntExist - */ - private function checkMeteredBillingPlan(CreateUserData $data): void - { - if (get_settings('subscription_type') === 'metered' && $data->role !== 'admin') { - // Get metered plan - $plan = Plan::where('status', 'active') - ->where('type', 'metered'); - - if ($plan->doesntExist()) { - throw new MeteredBillingPlanDoesntExist(); - } - } - } - - private function applyExistingTeamInvitations(User $user): void - { - TeamFolderInvitation::where('email', $user->email) - ->where('status', 'waiting-for-registration') - ->cursor() - ->each(function ($invitation) use ($user) { - TeamFolderMember::create([ - 'user_id' => $user->id, - 'parent_id' => $invitation->parent_id, - 'permission' => $invitation->permission, - ]); - - $invitation->accept(); - }); - } - private function createUser(CreateUserData $data): User { $user = User::create([ 'password' => $data->password ? bcrypt($data->password) : null, - 'oauth_provider' => $data->oauth_provider, 'email' => $data->email, ]); diff --git a/src/App/Users/Controllers/Authentication/CheckAccountController.php b/src/App/Users/Controllers/Authentication/CheckAccountController.php index 16d4a61d..18e3bb60 100644 --- a/src/App/Users/Controllers/Authentication/CheckAccountController.php +++ b/src/App/Users/Controllers/Authentication/CheckAccountController.php @@ -25,7 +25,7 @@ class CheckAccountController extends Controller 'name' => $user->settings->first_name, 'avatar' => $user->settings->avatar, 'verified' => $user->email_verified_at ? 1 : 0, - 'oauth_provider' => $user->password ? null : $user->oauth_provider, + 'oauth_provider' => null, ]; } } diff --git a/src/App/Users/Controllers/Authentication/RegisterUserController.php b/src/App/Users/Controllers/Authentication/RegisterUserController.php deleted file mode 100644 index ab68cb0d..00000000 --- a/src/App/Users/Controllers/Authentication/RegisterUserController.php +++ /dev/null @@ -1,53 +0,0 @@ - 'error', - 'message' => 'User registration is not allowed', - ], 401); - } - - // Map registration data - $data = CreateUserData::fromArray([ - 'name' => $request->input('name'), - 'email' => $request->input('email'), - 'password' => $request->input('password'), - ]); - - // Register user - try { - $user = ($this->createNewUser)($data); - } catch (MeteredBillingPlanDoesntExist $e) { - return response([ - 'type' => 'error', - 'message' => 'User registrations are temporarily disabled', - ], 409); - } - - // Log in if verification is disabled - if (! $user->password || ! intval(get_settings('user_verification'))) { - $this->guard->login($user); - } - - return response('User successfully registered.', 201); - } -} diff --git a/src/App/Users/DTO/CreateUserData.php b/src/App/Users/DTO/CreateUserData.php index a910bb7f..fd174194 100644 --- a/src/App/Users/DTO/CreateUserData.php +++ b/src/App/Users/DTO/CreateUserData.php @@ -9,7 +9,6 @@ class CreateUserData extends DataTransferObject public string $name; public string $email; public ?string $password; - public ?string $oauth_provider; public ?string $avatar; public static function fromRequest($request): self @@ -20,7 +19,6 @@ class CreateUserData extends DataTransferObject 'email' => $request->input('email'), 'avatar' => $request->input('avatar') ?? null, 'password' => $request->input('password'), - 'oauth_provider' => $request->input('oauth_provider') ?? null, ]); } @@ -32,7 +30,6 @@ class CreateUserData extends DataTransferObject 'email' => $array['email'], 'avatar' => $array['avatar'] ?? null, 'password' => $array['password'] ?? null, - 'oauth_provider' => $array['oauth_provider'] ?? null, ]); } } diff --git a/src/App/Users/Models/User.php b/src/App/Users/Models/User.php index ec7f9403..7712382d 100644 --- a/src/App/Users/Models/User.php +++ b/src/App/Users/Models/User.php @@ -15,7 +15,6 @@ use Illuminate\Support\Facades\Storage; use Illuminate\Notifications\Notifiable; use App\Users\Notifications\ResetPassword; use Laravel\Fortify\TwoFactorAuthenticatable; -use Domain\UploadRequest\Models\UploadRequest; use Illuminate\Contracts\Auth\MustVerifyEmail; use App\Users\Restrictions\RestrictionsManager; use Illuminate\Database\Eloquent\Relations\HasOne; @@ -23,7 +22,6 @@ use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; -use VueFileManager\Subscription\App\User\Traits\Billable; /** * @property string id @@ -47,7 +45,6 @@ class User extends Authenticatable implements MustVerifyEmail use Notifiable; use HasFactory; use Sortable; - use Billable; protected $guarded = [ 'id', @@ -57,7 +54,6 @@ class User extends Authenticatable implements MustVerifyEmail protected $fillable = [ 'email', 'password', - 'oauth_provider', ]; protected $hidden = [ @@ -138,8 +134,7 @@ class User extends Authenticatable implements MustVerifyEmail */ public function favouriteFolders(): BelongsToMany { - return $this->belongsToMany(Folder::class, 'favourite_folder', 'user_id', 'parent_id', 'id', 'id') - ->where('team_folder', false); + return $this->belongsToMany(Folder::class, 'favourite_folder', 'user_id', 'parent_id', 'id', 'id'); } /** @@ -182,11 +177,6 @@ class User extends Authenticatable implements MustVerifyEmail return $this->hasMany(Traffic::class); } - public function uploadRequest(): HasOne - { - return $this->hasOne(UploadRequest::class); - } - /** * Send the password reset notification. */ @@ -216,7 +206,6 @@ class User extends Authenticatable implements MustVerifyEmail // Create default limitations $user->limitations()->create([ 'max_storage_amount' => get_settings('default_max_storage_amount') ?? 1, - 'max_team_members' => get_settings('default_max_team_member') ?? 10, ]); // Create user directory for his files diff --git a/src/App/Users/Models/UserLimitation.php b/src/App/Users/Models/UserLimitation.php index 290c96ec..84d22f23 100644 --- a/src/App/Users/Models/UserLimitation.php +++ b/src/App/Users/Models/UserLimitation.php @@ -46,7 +46,6 @@ class UserLimitation extends Model { return [ 'max_storage_amount' => $this->getMaxStorageAmount(), - 'max_team_members' => $this->getMaxTeamMembers(), ]; } @@ -63,44 +62,4 @@ class UserLimitation extends Model 'percentage' => get_storage_percentage($userCapacity, $this->max_storage_amount), ]; } - - /** - * Get usage data of team members - */ - private function getMaxTeamMembers(): array - { - $userTeamFolderIds = DB::table('team_folder_members') - ->where('user_id', $this->user_id) - ->pluck('parent_id'); - - $memberIds = DB::table('team_folder_members') - ->where('user_id', '!=', $this->user_id) - ->whereIn('parent_id', $userTeamFolderIds) - ->pluck('user_id') - ->unique(); - - // Get member emails - $memberEmails = User::whereIn('id', $memberIds) - ->pluck('email'); - - // Get active invitation emails - $InvitationEmails = DB::table('team_folder_invitations') - ->where('status', 'pending') - ->where('inviter_id', $this->user_id) - ->pluck('email') - ->unique(); - - // Get allowed emails in the limit - $totalUsedEmails = $memberEmails->merge($InvitationEmails) - ->unique(); - - return [ - 'use' => $totalUsedEmails->count(), - 'total' => (int) $this->max_team_members, - 'percentage' => ($totalUsedEmails->count() / $this->max_team_members) * 100, - 'meta' => [ - 'allowed_emails' => $totalUsedEmails, - ], - ]; - } } diff --git a/src/App/Users/Resources/UserResource.php b/src/App/Users/Resources/UserResource.php index 408787f3..cb352d8c 100644 --- a/src/App/Users/Resources/UserResource.php +++ b/src/App/Users/Resources/UserResource.php @@ -3,14 +3,6 @@ namespace App\Users\Resources; use Domain\Folders\Resources\FolderCollection; use Illuminate\Http\Resources\Json\JsonResource; -use App\Users\Actions\FormatUsageEstimatesAction; -use Domain\Notifications\Resources\NotificationCollection; -use VueFileManager\Subscription\Domain\Credits\Resources\BalanceResource; -use VueFileManager\Subscription\Domain\CreditCards\Resources\CreditCardCollection; -use VueFileManager\Subscription\Domain\BillingAlerts\Resources\BillingAlertResource; -use VueFileManager\Subscription\Domain\Subscriptions\Resources\SubscriptionResource; -use VueFileManager\Subscription\Domain\Usage\Actions\SumUsageForCurrentPeriodAction; -use VueFileManager\Subscription\Domain\FailedPayments\Resources\FailedPaymentsCollection; class UserResource extends JsonResource { @@ -22,11 +14,6 @@ class UserResource extends JsonResource */ public function toArray($request) { - $subscriptionType = get_settings('subscription_type'); - - $isMeteredSubscription = $subscriptionType === 'metered'; - $isFixedSubscription = $subscriptionType === 'fixed'; - return [ 'data' => [ 'id' => $this->id, @@ -44,63 +31,17 @@ class UserResource extends JsonResource 'updated_at' => format_date($this->updated_at, 'd. M. Y'), ], 'relationships' => [ - 'readNotifications' => new NotificationCollection($this->readNotifications), - 'unreadNotifications' => new NotificationCollection($this->unreadNotifications), 'settings' => new SettingsResource($this->settings), 'favourites' => new FolderCollection($this->favouriteFolders), - 'creditCards' => new CreditCardCollection($this->creditCards), - $this->mergeWhen($this->hasSubscription(), fn () => [ - 'subscription' => new SubscriptionResource($this->subscription), - ]), - $this->mergeWhen($isMeteredSubscription && $this->hasSubscription(), fn () => [ - 'balance' => new BalanceResource($this->balance), - ]), - $this->mergeWhen($isMeteredSubscription && $this->hasSubscription(), fn () => [ - 'alert' => new BillingAlertResource($this->billingAlert), - ]), - $this->mergeWhen($isMeteredSubscription && $this->hasSubscription(), fn () => [ - 'failedPayments' => new FailedPaymentsCollection($this->failedPayments), - ]), ], 'meta' => [ 'restrictions' => [ 'canUpload' => $this->canUpload(), 'canDownload' => $this->canDownload(), 'canCreateFolder' => $this->canCreateFolder(), - 'canCreateTeamFolder' => $this->canCreateTeamFolder(), - 'canInviteTeamMembers' => $this->canInviteTeamMembers(), ], - $this->mergeWhen($isFixedSubscription, fn () => [ - 'limitations' => $this->limitations->summary(), - ]), - $this->mergeWhen($isMeteredSubscription && $this->hasSubscription(), fn () => [ - 'usages' => $this->getUsageEstimates(), - ]), - $this->mergeWhen($isMeteredSubscription && $this->hasSubscription(), fn () => [ - 'totalDebt' => [ - 'formatted' => format_currency($this->failedPayments->sum('amount'), $this->subscription->plan->currency), - 'amount' => $this->failedPayments->sum('amount'), - ], - ]), ], ], ]; } - - private function getUsageEstimates() - { - // Get plan currency - $currency = $this->subscription->plan->currency; - - // Get usage - $usage = resolve(SumUsageForCurrentPeriodAction::class)($this->subscription); - - // Format usages - $estimates = resolve(FormatUsageEstimatesAction::class)($currency, $usage); - - return [ - 'costEstimate' => format_currency($estimates->sum('amount'), $currency), - 'featureEstimates' => $estimates->toArray(), - ]; - } } diff --git a/src/App/Users/Resources/UserStorageResource.php b/src/App/Users/Resources/UserStorageResource.php index cb0615ae..21be0052 100644 --- a/src/App/Users/Resources/UserStorageResource.php +++ b/src/App/Users/Resources/UserStorageResource.php @@ -18,11 +18,7 @@ class UserStorageResource extends JsonResource list($images, $audios, $videos, $documents, $others) = $this->get_file_type_distribution(); list($downloadTotal, $uploadTotal, $upload, $download) = $this->get_traffic_distribution(); - $totalCapacity = match (get_settings('subscription_type')) { - 'metered' => $this->usedCapacity / 1000000000, - 'fixed' => $this->limitations->max_storage_amount, - default => $this->limitations->max_storage_amount, - }; + $totalCapacity = $this->limitations->max_storage_amount; return [ 'data' => [ diff --git a/src/App/Users/Restrictions/Engines/DefaultRestrictionsEngine.php b/src/App/Users/Restrictions/Engines/DefaultRestrictionsEngine.php index 2f03f371..2c687b22 100644 --- a/src/App/Users/Restrictions/Engines/DefaultRestrictionsEngine.php +++ b/src/App/Users/Restrictions/Engines/DefaultRestrictionsEngine.php @@ -33,16 +33,6 @@ class DefaultRestrictionsEngine implements RestrictionsEngine return true; } - public function canCreateTeamFolder(User $user): bool - { - return true; - } - - public function canInviteTeamMembers(User $user, array $newInvites = []): bool - { - return true; - } - public function canVisitShared(User $user): bool { return true; diff --git a/src/App/Users/Restrictions/RestrictionsEngine.php b/src/App/Users/Restrictions/RestrictionsEngine.php index a111787a..9b60bfad 100644 --- a/src/App/Users/Restrictions/RestrictionsEngine.php +++ b/src/App/Users/Restrictions/RestrictionsEngine.php @@ -11,9 +11,5 @@ interface RestrictionsEngine public function canCreateFolder(User $user): bool; - public function canCreateTeamFolder(User $user): bool; - - public function canInviteTeamMembers(User $user, array $newInvites = []): bool; - public function canVisitShared(User $user): bool; } diff --git a/src/App/Users/Restrictions/RestrictionsManager.php b/src/App/Users/Restrictions/RestrictionsManager.php index f4f3f3bf..b74d2816 100644 --- a/src/App/Users/Restrictions/RestrictionsManager.php +++ b/src/App/Users/Restrictions/RestrictionsManager.php @@ -3,8 +3,6 @@ namespace App\Users\Restrictions; use Illuminate\Support\Manager; use App\Users\Restrictions\Engines\DefaultRestrictionsEngine; -use App\Users\Restrictions\Engines\FixedBillingRestrictionsEngine; -use App\Users\Restrictions\Engines\MeteredBillingRestrictionsEngine; class RestrictionsManager extends Manager { diff --git a/src/Domain/Admin/Actions/DeleteUserDataAction.php b/src/Domain/Admin/Actions/DeleteUserDataAction.php index 31df5807..ba34a057 100644 --- a/src/Domain/Admin/Actions/DeleteUserDataAction.php +++ b/src/Domain/Admin/Actions/DeleteUserDataAction.php @@ -21,11 +21,6 @@ class DeleteUserDataAction // Delete all user files Storage::deleteDirectory("files/$user->id"); - // Delete user subscriptions - if ($user->subscription) { - $user->subscription->delete(); - } - // Delete all user records in database collect(['folders', 'files', 'user_settings', 'shares', 'favourite_folder', 'traffic']) ->each(function ($table) use ($user) { diff --git a/src/Domain/Admin/Controllers/Dashboard/GetDashboardDataController.php b/src/Domain/Admin/Controllers/Dashboard/GetDashboardDataController.php index 5e838729..610002c0 100644 --- a/src/Domain/Admin/Controllers/Dashboard/GetDashboardDataController.php +++ b/src/Domain/Admin/Controllers/Dashboard/GetDashboardDataController.php @@ -6,7 +6,6 @@ use App\Users\Models\User; use Illuminate\Http\JsonResponse; use Illuminate\Support\Facades\DB; use App\Http\Controllers\Controller; -use VueFileManager\Subscription\Domain\Subscriptions\Models\Subscription; class GetDashboardDataController extends Controller { @@ -15,16 +14,9 @@ class GetDashboardDataController extends Controller // Get bandwidth data list($upload, $download, $uploadTotal, $downloadTotal, $storageUsage) = $this->getDiskData(); - // Get total earnings from transactions - $totalEarnings = DB::table('transactions') - ->where('status', 'completed') - ->where('type', 'charge') - ->sum('amount'); - return response()->json([ 'users' => [ 'total' => User::count(), - 'usersPremiumTotal' => Subscription::count(), ], 'disk' => [ 'used' => $storageUsage, @@ -41,7 +33,6 @@ class GetDashboardDataController extends Controller 'isRunningCron' => isRunningCron(), 'license' => get_settings('license'), 'version' => config('vuefilemanager.version'), - 'earnings' => format_currency($totalEarnings, 'USD'), // todo: refactor currency to global setup or plan currency ], ]); } diff --git a/src/Domain/Browsing/Controllers/BrowseFolderController.php b/src/Domain/Browsing/Controllers/BrowseFolderController.php index 0baf51bb..e27fd377 100644 --- a/src/Domain/Browsing/Controllers/BrowseFolderController.php +++ b/src/Domain/Browsing/Controllers/BrowseFolderController.php @@ -20,7 +20,6 @@ class BrowseFolderController $folders = Folder::with(['parent:id,name', 'shared:token,id,item_id,permission,is_protected,expire_in']) ->where('parent_id', $root_id) - ->where('team_folder', false) ->where('user_id', Auth::id()) ->sortable() ->get(); diff --git a/src/Domain/Browsing/Controllers/SpotlightSearchController.php b/src/Domain/Browsing/Controllers/SpotlightSearchController.php index baeaf217..932da6db 100644 --- a/src/Domain/Browsing/Controllers/SpotlightSearchController.php +++ b/src/Domain/Browsing/Controllers/SpotlightSearchController.php @@ -53,18 +53,12 @@ class SpotlightSearchController { $user_id = Auth::id(); - // Get "shared with me" folders - $sharedWithMeFolderIds = DB::table('team_folder_members') - ->where('user_id', $user_id) - ->pluck('parent_id'); - // Next get their folder tree for ids extraction $folderWithinIds = Folder::with('folders:id,parent_id') - ->whereIn('parent_id', $sharedWithMeFolderIds) ->get(['id']); // Then get all accessible shared folders within - $accessible_parent_ids = Arr::flatten([filter_folders_ids($folderWithinIds), $sharedWithMeFolderIds]); + $accessible_parent_ids = Arr::flatten([filter_folders_ids($folderWithinIds)]); // Prepare eloquent builder $folder = new Folder(); diff --git a/src/Domain/Files/Actions/GetFileParentId.php b/src/Domain/Files/Actions/GetFileParentId.php index 8bb98448..978cfa27 100644 --- a/src/Domain/Files/Actions/GetFileParentId.php +++ b/src/Domain/Files/Actions/GetFileParentId.php @@ -60,19 +60,10 @@ class GetFileParentId private function createFolder($directoryName, $userId, $parentId): Folder { - /* - * Check if exist parent team folder, if yes, - * then get the latest parent folder to detect whether it is team_folder - */ - if ($parentId) { - $isTeamFolder = Folder::find($parentId)->getLatestParent()->team_folder; - } - return Folder::create([ 'name' => $directoryName, 'parent_id' => $parentId, 'user_id' => $userId, - 'team_folder' => $isTeamFolder ?? false, ]); } } diff --git a/src/Domain/Files/Requests/UploadRequest.php b/src/Domain/Files/Requests/UploadRequest.php new file mode 100644 index 00000000..f02d31c1 --- /dev/null +++ b/src/Domain/Files/Requests/UploadRequest.php @@ -0,0 +1,35 @@ + 'required|string', + 'parent_id' => 'nullable|uuid', + 'path' => 'required|string', + 'is_last' => 'sometimes|string', + 'extension' => 'sometimes|string|nullable', + 'file' => ['required', 'file', new DisabledMimetypes], + ]; + } +} diff --git a/src/Domain/Folders/Actions/CreateFolderAction.php b/src/Domain/Folders/Actions/CreateFolderAction.php index 8a09f1f3..2972e2a5 100644 --- a/src/Domain/Folders/Actions/CreateFolderAction.php +++ b/src/Domain/Folders/Actions/CreateFolderAction.php @@ -39,9 +39,6 @@ class CreateFolderAction 'emoji' => $request->input('emoji') ?? null, 'author' => $shared ? 'visitor' : 'user', 'user_id' => $user->id, - 'team_folder' => $isFilledParentId - ? Folder::find($parentId)->getLatestParent()->team_folder - : false, ]); } } diff --git a/src/Domain/Folders/Controllers/NavigationTreeController.php b/src/Domain/Folders/Controllers/NavigationTreeController.php index 804c5319..f5903222 100644 --- a/src/Domain/Folders/Controllers/NavigationTreeController.php +++ b/src/Domain/Folders/Controllers/NavigationTreeController.php @@ -10,30 +10,10 @@ class NavigationTreeController public function __invoke(): array { // Get signed user folders - $folders = Folder::with('folders:id,parent_id,name,team_folder') + $folders = Folder::with('folders:id,parent_id,name') ->where('parent_id') - ->where('team_folder', false) ->where('user_id', Auth::id()) ->sortable() - ->get(['id', 'parent_id', 'name', 'team_folder']); - - // Get signed user team folders - $teamFolders = Folder::with('folders:id,parent_id,name,team_folder') - ->where('parent_id') - ->where('team_folder', true) - ->where('user_id', Auth::id()) - ->sortable() - ->get(['id', 'parent_id', 'name']); - - // Get signed user folder which are shared with him - $sharedFolderIds = DB::table('team_folder_members') - ->where('user_id', Auth::id()) - ->whereIn('permission', ['can-edit', 'can-view']) - ->pluck('parent_id'); - - $sharedWithMeFolders = Folder::with('folders:id,parent_id,name,team_folder') - ->whereIn('id', $sharedFolderIds) - ->sortable() ->get(['id', 'parent_id', 'name']); return [ @@ -44,20 +24,6 @@ class NavigationTreeController 'isMovable' => true, 'isOpen' => true, ], - [ - 'location' => 'team-folders', - 'name' => __t('team_folders'), - 'folders' => $teamFolders, - 'isMovable' => false, - 'isOpen' => false, - ], - [ - 'location' => 'shared-with-me', - 'name' => __t('shared_with_me'), - 'folders' => $sharedWithMeFolders, - 'isMovable' => false, - 'isOpen' => false, - ], ]; } } diff --git a/src/Domain/Folders/Models/Folder.php b/src/Domain/Folders/Models/Folder.php index e19250a6..ae7f0015 100644 --- a/src/Domain/Folders/Models/Folder.php +++ b/src/Domain/Folders/Models/Folder.php @@ -10,7 +10,6 @@ use Kyslik\ColumnSortable\Sortable; use Database\Factories\FolderFactory; use Illuminate\Database\Eloquent\Model; use TeamTNT\TNTSearch\Indexer\TNTIndexer; -use Domain\Teams\Models\TeamFolderInvitation; use \Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\Relations\HasMany; @@ -34,7 +33,6 @@ use Illuminate\Database\Eloquent\Relations\BelongsToMany; * @property string created_at * @property string updated_at * @property string deleted_at - * @property bool team_folder */ class Folder extends Model { @@ -54,7 +52,6 @@ class Folder extends Model protected $casts = [ 'emoji' => 'array', - 'team_folder' => 'boolean', ]; public $sortable = [ @@ -180,18 +177,6 @@ class Folder extends Model return $this->hasOne(Share::class, 'item_id', 'id'); } - public function teamInvitations(): HasMany - { - return $this->hasMany(TeamFolderInvitation::class, 'parent_id', 'id') - ->where('status', 'pending'); - } - - public function teamMembers(): BelongsToMany - { - return $this->belongsToMany(User::class, 'team_folder_members', 'parent_id', 'user_id') - ->withPivot('permission'); - } - public function user(): HasOne { return $this->hasOne(User::class, 'id', 'user_id'); diff --git a/src/Domain/Folders/Resources/FolderResource.php b/src/Domain/Folders/Resources/FolderResource.php index 82962b3a..be2970f3 100644 --- a/src/Domain/Folders/Resources/FolderResource.php +++ b/src/Domain/Folders/Resources/FolderResource.php @@ -19,7 +19,7 @@ class FolderResource extends JsonResource 'color' => $this->color, 'emoji' => $this->emoji, 'filesize' => $this->filesize, - 'isTeamFolder' => $this->team_folder, + 'isTeamFolder' => false, 'items' => $this->items, 'trashed_items' => $this->trashed_items, 'created_at' => set_time_by_user_timezone($this->user, $this->created_at), @@ -29,12 +29,6 @@ class FolderResource extends JsonResource : null, ], 'relationships' => [ - $this->mergeWhen($this->teamMembers, fn () => [ - 'members' => new TeamMembersCollection($this->teamMembers), - ]), - $this->mergeWhen($this->teamInvitations, fn () => [ - 'invitations' => new TeamInvitationsCollection($this->teamInvitations), - ]), $this->mergeWhen($this->shared, fn () => [ 'shared' => new ShareResource($this->shared), ]), @@ -49,19 +43,6 @@ class FolderResource extends JsonResource ], ], ]), - $this->mergeWhen($this->user, fn () => [ - 'user' => [ - 'data' => [ - 'type' => 'user', - 'id' => $this->user_id, - 'attributes' => [ - 'name' => $this->user->settings->name, - 'avatar' => $this->user->settings->avatar, - 'color' => $this->user->settings->color, - ], - ], - ], - ]), ], ], ]; diff --git a/src/Domain/Homepage/Controllers/IndexController.php b/src/Domain/Homepage/Controllers/IndexController.php index fed0de57..7ff223f4 100644 --- a/src/Domain/Homepage/Controllers/IndexController.php +++ b/src/Domain/Homepage/Controllers/IndexController.php @@ -30,9 +30,6 @@ class IndexController // Get setup status $setup_status = get_setup_status(); - // Get app pages - $pages = Page::all(); - // Get all settings $settings = get_settings_in_json(); } catch (PDOException $e) { @@ -45,7 +42,6 @@ class IndexController return view('index') ->with('status_check', $status_check ?? []) ->with('settings', $settings ?? null) - ->with('legal', $pages ?? null) ->with('installation', $setup_status); } } diff --git a/src/Domain/Items/Actions/MoveFileOrFolderAction.php b/src/Domain/Items/Actions/MoveFileOrFolderAction.php index 88abdbf0..300ecfd8 100644 --- a/src/Domain/Items/Actions/MoveFileOrFolderAction.php +++ b/src/Domain/Items/Actions/MoveFileOrFolderAction.php @@ -3,16 +3,9 @@ namespace Domain\Items\Actions; use Gate; use Domain\Sharing\Models\Share; -use Domain\Folders\Models\Folder; -use Domain\Teams\Actions\SetTeamFolderPropertyForAllChildrenAction; class MoveFileOrFolderAction { - public function __construct( - public SetTeamFolderPropertyForAllChildrenAction $setTeamFolderPropertyForAllChildren, - ) { - } - /** * Move folder or file to new location */ @@ -24,30 +17,10 @@ class MoveFileOrFolderAction // Check permission Gate::authorize('can-edit', [$entry, $share]); - // Process folder - if ($item['type'] === 'folder') { - // Determine, if we are moving folder into the team folder or not - $isTeamFolder = is_null($request->input('to_id')) - ? false - : Folder::find($request->input('to_id'))->getLatestParent()->team_folder; - - // Change team_folder mark for all children folders - ($this->setTeamFolderPropertyForAllChildren)($entry, $isTeamFolder); - - // Update folder - $entry->update([ - 'parent_id' => $request->input('to_id'), - 'team_folder' => $isTeamFolder, - ]); - } - - // Process file - if ($item['type'] !== 'folder') { - // Update file - $entry->update([ - 'parent_id' => $request->input('to_id'), - ]); - } + // Update item + $entry->update([ + 'parent_id' => $request->input('to_id'), + ]); } } } diff --git a/src/Domain/Settings/Actions/SeedDefaultSettingsAction.php b/src/Domain/Settings/Actions/SeedDefaultSettingsAction.php index b092da65..9996ff39 100644 --- a/src/Domain/Settings/Actions/SeedDefaultSettingsAction.php +++ b/src/Domain/Settings/Actions/SeedDefaultSettingsAction.php @@ -9,12 +9,10 @@ class SeedDefaultSettingsAction /** * Store default VueFileManager settings into database */ - public function __invoke( - string $license - ): void { + public function __invoke(): void { // Set default settings collect( - config('content.content.' . strtolower($license)) + config('content.content.regular') )->each(fn ($content) => Setting::updateOrCreate([ 'name' => $content['name'], ], [ @@ -23,6 +21,6 @@ class SeedDefaultSettingsAction // Set update records collect(config('vuefilemanager.updates')) - ->each(fn ($version) => AppUpdate::create(['version' => $version])); + ->each(fn ($version) => AppUpdate::create(['version' => 'regular'])); } } diff --git a/src/Domain/Settings/Controllers/UpdateSettingValueController.php b/src/Domain/Settings/Controllers/UpdateSettingValueController.php index a125c084..07cbd173 100644 --- a/src/Domain/Settings/Controllers/UpdateSettingValueController.php +++ b/src/Domain/Settings/Controllers/UpdateSettingValueController.php @@ -29,21 +29,6 @@ class UpdateSettingValueController extends Controller return response('Done', 204); } - // Set paypal live option - if ($request->input('name') === 'paypal_live') { - setEnvironmentValue([ - 'PAYPAL_IS_LIVE' => $request->input('value') ? 'true' : 'false', - ]); - - // Clear config cache - if (! is_dev()) { - Artisan::call('config:clear'); - Artisan::call('config:cache'); - } - - return response('Done', 204); - } - // Find and update variable Setting::updateOrCreate( ['name' => $request->input('name')], diff --git a/src/Domain/Settings/Controllers/UpgradeLicenseController.php b/src/Domain/Settings/Controllers/UpgradeLicenseController.php deleted file mode 100644 index 0ade7d32..00000000 --- a/src/Domain/Settings/Controllers/UpgradeLicenseController.php +++ /dev/null @@ -1,102 +0,0 @@ -input('purchaseCode')}"); - - if ($response->successful() && $response->body() === 'b6896a44017217c36f4a6fdc56699728') { - // Store default settings for extended version - collect([ - [ - 'name' => 'license', - 'value' => 'extended', - ], - [ - 'name' => 'purchase_code', - 'value' => $request->input('purchaseCode'), - ], - [ - 'name' => 'section_pricing_content', - 'value' => 1, - ], - [ - 'name' => 'paypal_payment_description', - 'value' => 'Available PayPal Credit, Debit or Credit Card.', - ], - [ - 'name' => 'paystack_payment_description', - 'value' => 'Available Bank Account, USSD, Mobile Money, Apple Pay.', - ], - [ - 'name' => 'stripe_payment_description', - 'value' => 'Available credit card or Apple Pay.', - ], - [ - 'name' => 'allowed_registration_bonus', - 'value' => 0, - ], - [ - 'name' => 'registration_bonus_amount', - 'value' => 0, - ], - [ - 'name' => 'pricing_title', - 'value' => 'Pick the Best Plan For Your Needs', - ], - [ - 'name' => 'pricing_description', - 'value' => 'Your private cloud storage software build on Laravel & Vue.js. No limits & no monthly fees. Truly freedom.', - ], - ])->each(function ($col) { - Setting::updateOrCreate([ - 'name' => $col['name'], - ], [ - 'value' => $col['value'], - ]); - }); - - // Seed translations for extended version - Language::all() - ->each(function ($lang) { - $translations = collect( - config('language-translations.extended') - ) - ->map(fn ($value, $key) => [ - 'lang' => $lang->locale, - 'value' => $value, - 'key' => $key, - ])->toArray(); - - $chunks = array_chunk($translations, 100); - - foreach ($chunks as $chunk) { - DB::table('language_translations') - ->insert($chunk); - } - }); - - // Clear config and cache - Artisan::call('config:clear'); - Artisan::call('cache:clear'); - - return response('Your license was successfully upgraded', 201); - } - - return response('Purchase code is invalid or is not Extended License.', 400); - } -} diff --git a/src/Domain/SetupWizard/Controllers/CreateAdminAccountController.php b/src/Domain/SetupWizard/Controllers/CreateAdminAccountController.php index 70aec489..699ff7b0 100644 --- a/src/Domain/SetupWizard/Controllers/CreateAdminAccountController.php +++ b/src/Domain/SetupWizard/Controllers/CreateAdminAccountController.php @@ -7,7 +7,6 @@ use Illuminate\Http\Response; use Domain\Settings\Models\Setting; use App\Http\Controllers\Controller; use Illuminate\Contracts\Auth\StatefulGuard; -use Domain\Pages\Actions\SeedDefaultPagesAction; use Domain\Settings\Actions\SeedDefaultSettingsAction; use Domain\SetupWizard\Requests\StoreAdminAccountRequest; use Domain\Localization\Actions\SeedDefaultLanguageAction; @@ -20,7 +19,6 @@ class CreateAdminAccountController extends Controller { public function __construct( protected StatefulGuard $guard, - public SeedDefaultPagesAction $seedDefaultPages, public SeedDefaultLanguageAction $seedDefaultLanguage, public CreateDiskDirectoriesAction $createDiskDirectories, public SeedDefaultSettingsAction $seedDefaultSettingsAction, @@ -58,7 +56,7 @@ class CreateAdminAccountController extends Controller ], [ 'name' => 'license', - 'value' => strtolower($request->input('license')), + 'value' => 'regular', ], [ 'name' => 'purchase_code', @@ -79,8 +77,7 @@ class CreateAdminAccountController extends Controller Artisan::call('config:clear'); // Set up application - ($this->seedDefaultPages)(); - ($this->seedDefaultSettingsAction)($request->input('license')); + ($this->seedDefaultSettingsAction)(); ($this->seedDefaultLanguage)(); return response('Registration was successful', 204); diff --git a/src/Domain/SetupWizard/Controllers/StoreAppSettingsController.php b/src/Domain/SetupWizard/Controllers/StoreAppSettingsController.php index 46e90eb3..7b2f3ba9 100644 --- a/src/Domain/SetupWizard/Controllers/StoreAppSettingsController.php +++ b/src/Domain/SetupWizard/Controllers/StoreAppSettingsController.php @@ -16,10 +16,6 @@ class StoreAppSettingsController extends Controller StoreAppSetupRequest $request ): Response { collect([ - [ - 'name' => 'subscription_type', - 'value' => $request->input('subscriptionType') ?? 'none', - ], [ 'name' => 'app_color', 'value' => $request->input('color'), @@ -68,10 +64,6 @@ class StoreAppSettingsController extends Controller 'name' => 'contact_email', 'value' => $request->input('contactMail'), ], - [ - 'name' => 'registration', - 'value' => $request->input('userRegistration'), - ], [ 'name' => 'storage_limitation', 'value' => $request->input('storageLimitation'), @@ -80,14 +72,6 @@ class StoreAppSettingsController extends Controller 'name' => 'default_max_storage_amount', 'value' => $request->input('defaultStorage') ?? 5, ], - [ - 'name' => 'default_max_team_member', - 'value' => $request->input('teamsDefaultMembers') ?? 10, - ], - [ - 'name' => 'user_verification', - 'value' => 0, - ], ])->each(function ($col) { Setting::updateOrCreate([ 'name' => $col['name'], diff --git a/src/Domain/SetupWizard/Controllers/StoreEnvironmentSettingsController.php b/src/Domain/SetupWizard/Controllers/StoreEnvironmentSettingsController.php index dac40a0d..7929d541 100644 --- a/src/Domain/SetupWizard/Controllers/StoreEnvironmentSettingsController.php +++ b/src/Domain/SetupWizard/Controllers/StoreEnvironmentSettingsController.php @@ -83,31 +83,6 @@ class StoreEnvironmentSettingsController extends Controller }; $setup = [ - 'broadcasting' => [ - 'pusher' => [ - 'BROADCAST_DRIVER' => 'pusher', - 'PUSHER_APP_ID' => $request->input('broadcast.id'), - 'PUSHER_APP_KEY' => $request->input('broadcast.key'), - 'PUSHER_APP_SECRET' => $request->input('broadcast.secret'), - 'PUSHER_APP_CLUSTER' => $request->input('broadcast.cluster'), - 'PUSHER_APP_HOST' => '', - 'PUSHER_APP_PORT' => '', - 'PUSHER_APP_TLS' => true, - ], - 'native' => [ - 'BROADCAST_DRIVER' => 'pusher', - 'PUSHER_APP_ID' => 'local', - 'PUSHER_APP_KEY' => 'local', - 'PUSHER_APP_SECRET' => 'local', - 'PUSHER_APP_CLUSTER' => 'local', - 'PUSHER_APP_HOST' => $request->input('broadcast.host'), - 'PUSHER_APP_PORT' => '', - 'PUSHER_APP_TLS' => $request->boolean('tls') ? 'true' : 'false', - ], - 'none' => [ - 'BROADCAST_DRIVER' => 'null', - ], - ], 'drivers' => [ 'local' => [ 'FILESYSTEM_DISK' => 'local', @@ -184,7 +159,6 @@ class StoreEnvironmentSettingsController extends Controller // Set other environment variables setEnvironmentValue(array_merge( - $setup['broadcasting'][$request->input('broadcast.driver')], $setup['environment'][$request->input('environment')], $setup['mail'][$request->input('mailDriver')], $setup['drivers'][$StorageDriver], diff --git a/src/Domain/SetupWizard/Requests/StoreAdminAccountRequest.php b/src/Domain/SetupWizard/Requests/StoreAdminAccountRequest.php index ee7db9fc..be970843 100644 --- a/src/Domain/SetupWizard/Requests/StoreAdminAccountRequest.php +++ b/src/Domain/SetupWizard/Requests/StoreAdminAccountRequest.php @@ -27,7 +27,6 @@ class StoreAdminAccountRequest extends FormRequest 'password' => 'required|string|min:6|confirmed', 'name' => 'required|string', 'purchase_code' => 'required|string', - 'license' => 'required|string', 'avatar' => 'sometimes|file', ]; } diff --git a/src/Domain/SetupWizard/Requests/StoreAppSetupRequest.php b/src/Domain/SetupWizard/Requests/StoreAppSetupRequest.php index 8344f296..e215dba6 100644 --- a/src/Domain/SetupWizard/Requests/StoreAppSetupRequest.php +++ b/src/Domain/SetupWizard/Requests/StoreAppSetupRequest.php @@ -31,7 +31,6 @@ class StoreAppSetupRequest extends FormRequest 'contactMail' => 'required|email', 'googleAnalytics' => 'sometimes|string', 'defaultStorage' => 'sometimes|digits_between:1,9', - 'userRegistration' => 'required|boolean', 'storageLimitation' => 'required|boolean', ]; } diff --git a/src/Domain/SetupWizard/Requests/StoreEnvironmentSetupRequest.php b/src/Domain/SetupWizard/Requests/StoreEnvironmentSetupRequest.php index fc09d9db..b94d0cbe 100644 --- a/src/Domain/SetupWizard/Requests/StoreEnvironmentSetupRequest.php +++ b/src/Domain/SetupWizard/Requests/StoreEnvironmentSetupRequest.php @@ -23,7 +23,6 @@ class StoreEnvironmentSetupRequest extends FormRequest public function rules() { return [ - 'broadcast' => 'required|array', 'storage' => 'required|array', 'environment' => 'required|string', 'storage.driver' => 'required|string', diff --git a/src/Support/Demo/Actions/ClearHowdyDemoDataAction.php b/src/Support/Demo/Actions/ClearHowdyDemoDataAction.php index 03c9502a..6f505c6d 100644 --- a/src/Support/Demo/Actions/ClearHowdyDemoDataAction.php +++ b/src/Support/Demo/Actions/ClearHowdyDemoDataAction.php @@ -17,14 +17,5 @@ class ClearHowdyDemoDataAction DB::table('shares') ->where('user_id', $user->id) ->delete(); - - // Delete File request - UploadRequest::where('user_id', $user->id) - ->cursor() - ->each(function ($request) { - if ($request->created_at->diffInHours(now()) >= 6) { - $request->delete(); - } - }); } } diff --git a/src/Support/Upgrading/Controllers/UpgradingVersionsController.php b/src/Support/Upgrading/Controllers/UpgradingVersionsController.php index 536d1e0c..39d4245f 100644 --- a/src/Support/Upgrading/Controllers/UpgradingVersionsController.php +++ b/src/Support/Upgrading/Controllers/UpgradingVersionsController.php @@ -19,119 +19,5 @@ class UpgradingVersionsController public UpgradeDatabaseAction $upgradeDatabase, public DeleteLanguageTranslationsAction $deleteLanguageStrings, public UpdateLanguageTranslationsAction $updateLanguageStrings, - ) { - } - - public function upgrade_to_2_1_1(): void - { - ($this->upgradeDatabase)(); - } - - public function upgrade_to_2_0_10(): void - { - ($this->upgradeDatabase)(); - - // Upgrade team folder content ownership - Folder::where('parent_id', null) - ->where('team_folder', true) - ->cursor() - ->each(function ($teamFolder) { - // Get all inherited folder from team folder - $childrenFolderIds = Folder::with('folders:id,parent_id') - ->where('id', $teamFolder->id) - ->get('id'); - - $teamFolderIds = Arr::flatten(filter_folders_ids($childrenFolderIds)); - - // Replace user content ownership for author of team folder - DB::table('files') - ->whereIn('parent_id', $teamFolderIds) - ->cursor() - ->each(function ($file) use ($teamFolder) { - // Move image thumbnails - if ($file->type === 'image') { - // Get image thumbnail list - $thumbnailList = getThumbnailFileList($file->basename); - - // move thumbnails to the new location - $thumbnailList->each(function ($basename) use ($file, $teamFolder) { - $oldPath = "files/$file->user_id/$basename"; - $newPath = "files/$teamFolder->user_id/$basename"; - - if (Storage::exists($oldPath)) { - Storage::move($oldPath, $newPath); - } - }); - } - - // Get single file path - $filePath = "files/$file->user_id/$file->basename"; - - // Move single file - if (Storage::exists($filePath)) { - Storage::move($filePath, "files/$teamFolder->user_id/$file->basename"); - } - - // Update file permission - File::find($file->id)->update([ - 'user_id' => $teamFolder->user_id, - 'creator_id' => $teamFolder->user_id !== $file->user_id ? $file->user_id : null, - ]); - }); - - // Update folder ownership - DB::table('folders') - ->whereIn('parent_id', $teamFolderIds) - ->update(['user_id' => $teamFolder->user_id]); - }); - - // Upgrade dwg files - File::withTrashed() - ->where('mimetype', 'vnd.dwg') - ->cursor() - ->each(fn ($file) => $file->update([ - 'mimetype' => 'dwg', - 'type' => 'file', - ])); - } - - public function upgrade_to_2_0_13(): void - { - // Force plan synchronization - if (get_settings('license') === 'extended' && Plan::count() !== 0) { - Artisan::call('subscription:synchronize-plans'); - } - } - - public function upgrade_to_2_0_14(): void - { - ($this->upgradeDatabase)(); - - User::whereNotNull('two_factor_secret') - ->cursor() - ->each(fn ($user) => $user->forceFill(['two_factor_confirmed_at' => now()])->save()); - - ($this->deleteLanguageStrings)([ - 'popup_2fa.disappear_qr', - ]); - - ($this->updateLanguageStrings)([ - 'require_email_verification' => 'Require Verify Email Address', - 'require_email_verification_note' => 'Turn on, if you want to verify user email address after registration.', - ]); - - Artisan::call('cache:clear'); - } - - public function upgrade_to_2_0_16(): void - { - ($this->updateLanguageStrings)([ - 'write_feedback' => 'Help Us Improve', - 'change_password' => 'Security & API', - 'shared.empty_shared' => 'Nothing Shared Yet', - 'admin_settings.others.default_storage' => 'Default Storage Space for User Accounts (in GB)', - ]); - - Artisan::call('cache:clear'); - } + ) {} } diff --git a/src/Support/helpers.php b/src/Support/helpers.php index 20b8a5d6..1d867312 100644 --- a/src/Support/helpers.php +++ b/src/Support/helpers.php @@ -38,16 +38,6 @@ if (! function_exists('getListOfLatestLogs')) { } } -if (! function_exists('isBroadcasting')) { - /** - * Check if cron is running - */ - function isBroadcasting(): bool - { - return config('broadcasting.default') === 'pusher'; - } -} - if (! function_exists('isRunningCron')) { /** * Check if cron is running @@ -91,20 +81,6 @@ if (! function_exists('obfuscate_email')) { } } -if (! function_exists('get_restriction_driver')) { - /** - * Get driver for limitation API - */ - function get_restriction_driver(): string - { - return match (get_settings('subscription_type')) { - 'fixed' => 'fixed', - 'metered' => 'metered', - default => 'default', - }; - } -} - if (! function_exists('get_email_provider')) { /** * Get single or multiple values from settings table @@ -239,24 +215,6 @@ if (! function_exists('setEnvironmentValue')) { } } -if (! function_exists('get_invoice_number')) { - /** - * Get invoice number - * - * @return string - */ - function get_invoice_number() - { - $invoices = \App\Invoice::all(); - - if ($invoices->isEmpty()) { - return now()->year . '001'; - } - - return (int) $invoices->last()->order + 1; - } -} - if (! function_exists('cache_forget_many')) { /** * Forget many cache keys at once @@ -270,18 +228,6 @@ if (! function_exists('cache_forget_many')) { } } -if (! function_exists('get_storage')) { - /** - * Get app version from config - * - * @return \Illuminate\Config\Repository|mixed - */ - function get_storage() - { - return config('filesystems.default'); - } -} - if (! function_exists('isStorageDriver')) { /** * Check if is running AWS s3 as storage @@ -1067,29 +1013,6 @@ if (! function_exists('replace_occurrence')) { ); } - if (! function_exists('get_socialite_avatar')) { - /** - * Get socialite avatar create and store his thumbnails - */ - function store_socialite_avatar($avatar) - { - // Get image from external source - $image = Http::get($avatar)->body(); - - // Generate avatar name - $avatar_name = Str::uuid() . '.jpg'; - - // Create intervention image - $intervention = Image::make($image); - - // Generate avatar sizes - generate_avatar_thumbnails($intervention, $avatar_name); - - // Return name of image - return $avatar_name; - } - } - if (! function_exists('generate_avatar_thumbnails')) { /** * Create avatar thumbnails @@ -1124,39 +1047,4 @@ if (! function_exists('replace_occurrence')) { return "{$degrees}°$minutes'$seconds\"$ref"; } } - - if (! function_exists('extractExtensionFromUrl')) { - /** - * Extract extension from the url - * - * TODO: make unit test - */ - function extractExtensionFromUrl($url, $response): string|null - { - $extension = null; - - if (array_key_exists('extension', pathinfo($url))) { - // Break attributes - $string = str_replace(['&'], '?', pathinfo($url)['extension']); - - // Get extension from url path - $extension = explode('?', $string)[0]; - } - - // Return pure extension - if ($extension) { - return $extension; - } - - // Prepare header for extracting content-type line - $header = array_change_key_case($response->headers(), CASE_LOWER); - - // Get extension - if (array_key_exists('content-type', $header)) { - return explode('/', $header['content-type'][0])[1]; - } - - return null; - } - } } diff --git a/storage/files.index-shm b/storage/files.index-shm index 83327bc3..f98f9063 100644 Binary files a/storage/files.index-shm and b/storage/files.index-shm differ diff --git a/storage/files.index-wal b/storage/files.index-wal index 4e3c4f59..74040b0c 100644 Binary files a/storage/files.index-wal and b/storage/files.index-wal differ diff --git a/tests/App/Restrictions/RestrictionsTest.php b/tests/App/Restrictions/RestrictionsTest.php deleted file mode 100644 index 1c7254df..00000000 --- a/tests/App/Restrictions/RestrictionsTest.php +++ /dev/null @@ -1,47 +0,0 @@ - 'subscription_type', - ], [ - 'value' => 'metered', - ]); - - $this->assertEquals('metered', get_restriction_driver()); - } - /** - * @test - */ - public function it_get_fixed_driver() - { - Setting::updateOrCreate([ - 'name' => 'subscription_type', - ], [ - 'value' => 'fixed', - ]); - - $this->assertEquals('fixed', get_restriction_driver()); - } - /** - * @test - */ - public function it_get_default_driver() - { - $subscriptionType = Setting::where('name', 'subscription_type') - ->first(); - - $subscriptionType?->delete(); - - $this->assertEquals('default', get_restriction_driver()); - } -} diff --git a/tests/App/Users/SignFlowTest.php b/tests/App/Users/SignFlowTest.php index bc892d86..97382ce2 100644 --- a/tests/App/Users/SignFlowTest.php +++ b/tests/App/Users/SignFlowTest.php @@ -15,239 +15,6 @@ use App\Users\Notifications\RegistrationBonusAddedNotification; class SignFlowTest extends TestCase { - /** - * @test - */ - public function it_create_user_from_register_form() - { - collect([ - [ - 'name' => 'user_verification', - 'value' => 1, - ], - [ - 'name' => 'default_max_storage_amount', - 'value' => 10, - ], - ])->each(function ($setting) { - Setting::updateOrCreate([ - 'name' => $setting['name'], - ], [ - 'value' => $setting['value'], - ]); - }); - - $this->postJson('api/register', [ - 'role' => 'admin', - 'email' => 'john@doe.com', - 'password' => 'SecretPassword', - 'password_confirmation' => 'SecretPassword', - 'name' => 'John Doe', - ])->assertStatus(201); - - $this - ->assertDatabaseHas('users', [ - 'email' => 'john@doe.com', - 'email_verified_at' => null, - 'role' => 'user', - ]) - ->assertDatabaseHas('user_settings', [ - 'first_name' => 'John', - 'last_name' => 'Doe', - ]) - ->assertDatabaseHas('user_limitations', [ - 'max_storage_amount' => 10, - ]); - - Storage::disk('local') - ->assertExists('files/' . User::first()->id); - - Notification::assertTimesSent(1, VerifyEmail::class); - } - - /** - * @test - */ - public function it_register_user_when_metered_billing_is_active() - { - // Seed default settings - collect([ - [ - 'name' => 'subscription_type', - 'value' => 'metered', - ], - [ - 'name' => 'allowed_registration_bonus', - 'value' => 0, - ], - [ - 'name' => 'registration_bonus_amount', - 'value' => 15, - ], - ])->each(function ($setting) { - Setting::updateOrCreate([ - 'name' => $setting['name'], - ], [ - 'value' => $setting['value'], - ]); - }); - - // Create metered plan - $plan = Plan::factory() - ->create([ - 'status' => 'active', - 'type' => 'metered', - 'currency' => 'USD', - ]); - - $this->postJson('api/register', [ - 'role' => 'admin', - 'email' => 'john@doe.com', - 'password' => 'SecretPassword', - 'password_confirmation' => 'SecretPassword', - 'name' => 'John Doe', - ])->assertStatus(201); - - $this - ->assertDatabaseCount('transactions', 0) - ->assertDatabaseHas('users', [ - 'role' => 'user', - 'email' => 'john@doe.com', - ]) - ->assertDatabaseHas('subscriptions', [ - 'status' => 'active', - 'name' => $plan->name, - 'ends_at' => null, - 'renews_at' => now()->addDays(config('subscription.metered_billing.settlement_period')), - ]) - ->assertDatabaseHas('balances', [ - 'currency' => 'USD', - 'amount' => 0, - ]) - ->assertDatabaseHas('user_settings', [ - 'first_name' => 'John', - 'last_name' => 'Doe', - ]); - } - - /** - * @test - */ - public function it_register_user_when_metered_billing_is_active_with_registration_bonus() - { - // Seed default settings - collect([ - [ - 'name' => 'subscription_type', - 'value' => 'metered', - ], - [ - 'name' => 'allowed_registration_bonus', - 'value' => 1, - ], - [ - 'name' => 'registration_bonus_amount', - 'value' => 15, - ], - ])->each(function ($setting) { - Setting::updateOrCreate([ - 'name' => $setting['name'], - ], [ - 'value' => $setting['value'], - ]); - }); - - // Create metered plan - $plan = Plan::factory() - ->create([ - 'status' => 'active', - 'type' => 'metered', - 'currency' => 'USD', - ]); - - $this->postJson('api/register', [ - 'role' => 'admin', - 'email' => 'john@doe.com', - 'password' => 'SecretPassword', - 'password_confirmation' => 'SecretPassword', - 'name' => 'John Doe', - ])->assertStatus(201); - - $user = User::first(); - - $this - ->assertDatabaseHas('users', [ - 'role' => 'user', - 'email' => 'john@doe.com', - ]) - ->assertDatabaseHas('subscriptions', [ - 'status' => 'active', - 'name' => $plan->name, - 'ends_at' => null, - 'renews_at' => now()->addDays(config('subscription.metered_billing.settlement_period')), - ]) - ->assertDatabaseHas('balances', [ - 'currency' => 'USD', - 'amount' => 15, - ]) - ->assertDatabaseHas('transactions', [ - 'user_id' => $user->id, - 'amount' => 15.00, - 'currency' => 'USD', - 'status' => 'completed', - 'type' => 'credit', - 'driver' => 'system', - ]) - ->assertDatabaseHas('user_settings', [ - 'first_name' => 'John', - 'last_name' => 'Doe', - ]); - - Notification::assertSentTo($user, RegistrationBonusAddedNotification::class); - } - - /** - * @test - */ - public function it_try_register_when_registration_is_disabled() - { - Setting::updateOrCreate([ - 'name' => 'registration', - ], [ - 'value' => 0, - ]); - - $this->postJson('api/register', [ - 'email' => 'john@doe.com', - 'password' => 'SecretPassword', - 'password_confirmation' => 'SecretPassword', - 'name' => 'John Doe', - ])->assertStatus(401); - - $this->assertDatabaseMissing('users', [ - 'email' => 'john@doe.com', - 'email_verified_at' => null, - ]); - } - - /** - * @test - */ - public function it_try_register_from_disabled_email_provider() - { - $this->postJson('api/register', [ - 'email' => 'john@maildrop.cc', - 'password' => 'SecretPassword', - 'password_confirmation' => 'SecretPassword', - 'name' => 'John Doe', - ])->assertStatus(422); - - $this->assertDatabaseMissing('users', [ - 'email' => 'john@doe.com', - 'email_verified_at' => null, - ]); - } - /** * @test */ @@ -339,33 +106,4 @@ class SignFlowTest extends TestCase 'email' => $user->email, ]); } - - /** - * @test - */ - public function it_create_user_from_register_form_with_reCaptcha() - { - Setting::updateOrCreate([ - 'name' => 'allowed_recaptcha', - ], [ - 'value' => 1, - ]); - - $this->mock(ReCaptchaRules::class, function ($mock) { - $mock->shouldReceive('passes')->andReturn(true); - }); - - $this->postJson('api/register', [ - 'email' => 'john@doe.com', - 'password' => 'SecretPassword', - 'password_confirmation' => 'SecretPassword', - 'name' => 'John Doe', - 'reCaptcha' => 'fakeToken', - ])->assertStatus(201); - - $this - ->assertDatabaseHas('users', [ - 'email' => 'john@doe.com', - ]); - } } diff --git a/tests/App/Users/UserAccountTest.php b/tests/App/Users/UserAccountTest.php index 9a40cee0..e57c2285 100644 --- a/tests/App/Users/UserAccountTest.php +++ b/tests/App/Users/UserAccountTest.php @@ -170,16 +170,11 @@ class UserAccountTest extends TestCase 'meta' => [ 'restrictions' => [ 'canCreateFolder' => true, - 'canCreateTeamFolder' => true, 'canDownload' => true, - 'canInviteTeamMembers' => true, 'canUpload' => true, ], ], 'relationships' => [ - 'creditCards' => [ - 'data' => [], - ], 'settings' => [ 'data' => [ 'id' => (string) $user->id, @@ -202,12 +197,6 @@ class UserAccountTest extends TestCase 'favourites' => [ 'data' => [], ], - 'readNotifications' => [ - 'data' => [], - ], - 'unreadNotifications' => [ - 'data' => [], - ], ], ], ]); diff --git a/tests/Domain/Admin/AdminTest.php b/tests/Domain/Admin/AdminTest.php index aaf7deeb..1d16a8c9 100644 --- a/tests/Domain/Admin/AdminTest.php +++ b/tests/Domain/Admin/AdminTest.php @@ -77,24 +77,6 @@ class AdminTest extends TestCase ]); } - /** - * todo: complete test - */ - public function it_get_non_existed_user_subscription() - { - $user = User::factory() - ->hasSettings() - ->create(); - - $admin = User::factory() - ->create(['role' => 'admin']); - - $this - ->actingAs($admin) - ->getJson("/api/admin/users/$user->id/subscription") - ->assertStatus(404); - } - /** * @test */ diff --git a/tests/Domain/Admin/DashboardTest.php b/tests/Domain/Admin/DashboardTest.php index 5b340bcf..3e82ce6b 100644 --- a/tests/Domain/Admin/DashboardTest.php +++ b/tests/Domain/Admin/DashboardTest.php @@ -25,14 +25,12 @@ class DashboardTest extends TestCase ->assertStatus(200) ->assertJsonFragment([ 'app' => [ - 'earnings' => '$0.00', 'isRunningCron' => false, - 'license' => 'extended', + 'license' => 'regular', 'version' => config('vuefilemanager.version'), ], 'users' => [ 'total' => 1, - 'usersPremiumTotal' => 0, ], 'used' => '2.00MB', ]); diff --git a/tests/Domain/Browsing/BrowseTest.php b/tests/Domain/Browsing/BrowseTest.php index 4a87d28f..3e488861 100644 --- a/tests/Domain/Browsing/BrowseTest.php +++ b/tests/Domain/Browsing/BrowseTest.php @@ -69,7 +69,6 @@ class BrowseTest extends TestCase 'name' => 'level 1', 'items' => 2, 'trashed_items' => 2, - 'team_folder' => false, 'folders' => [ [ 'id' => $folder_level_2->id, @@ -77,7 +76,6 @@ class BrowseTest extends TestCase 'name' => 'level 2', 'items' => 1, 'trashed_items' => 1, - 'team_folder' => false, 'folders' => [ [ 'id' => $folder_level_3->id, @@ -92,7 +90,6 @@ class BrowseTest extends TestCase 'updated_at' => $folder_level_3->updated_at->toJson(), 'items' => 0, 'trashed_items' => 0, - 'team_folder' => false, 'folders' => [], ], ], @@ -103,7 +100,6 @@ class BrowseTest extends TestCase 'name' => 'level 2 Sibling', 'items' => 0, 'trashed_items' => 0, - 'team_folder' => false, 'folders' => [], ], ], @@ -112,20 +108,6 @@ class BrowseTest extends TestCase 'isMovable' => true, 'isOpen' => true, ], - [ - 'location' => 'team-folders', - 'name' => 'Team Folders', - 'folders' => [], - 'isMovable' => false, - 'isOpen' => false, - ], - [ - 'location' => 'shared-with-me', - 'name' => 'Shared with Me', - 'folders' => [], - 'isMovable' => false, - 'isOpen' => false, - ], ]); } diff --git a/tests/Domain/Files/FileTest.php b/tests/Domain/Files/FileTest.php index 8026f834..31f0c2a4 100644 --- a/tests/Domain/Files/FileTest.php +++ b/tests/Domain/Files/FileTest.php @@ -105,60 +105,6 @@ class FileTest extends TestCase ); } - /** - * @test - */ - public function it_remotely_upload_new_file() - { - Event::fake([ - RemoteFileCreatedEvent::class, - ]); - - $user = User::factory() - ->hasSettings() - ->create(); - - $folder = Folder::factory() - ->create([ - 'user_id' => $user->id, - ]); - - $fakeFile = UploadedFile::fake() - ->create('top-secret-document.pdf', 12000000, 'application/pdf'); - - Http::fake([ - 'https://fake.com/top-secret-document.pdf' => Http::response($fakeFile->getContent()), - 'https://fake.com/another-secret-document.pdf' => Http::response($fakeFile->getContent()), - ]); - - $this - ->actingAs($user) - ->postJson('/api/upload/remote', [ - 'urls' => [ - 'https://fake.com/top-secret-document.pdf', - 'https://fake.com/another-secret-document.pdf', - ], - 'parent_id' => $folder->id, - ])->assertStatus(201); - - $this - ->assertDatabaseHas('files', [ - 'user_id' => $user->id, - 'name' => 'top-secret-document', - 'parent_id' => $folder->id, - ]) - ->assertDatabaseHas('files', [ - 'name' => 'another-secret-document', - ]); - - File::all() - ->each(function ($file) { - Event::assertDispatched(fn (RemoteFileCreatedEvent $event) => $event->payload['file']->id === $file->id); - - Storage::assertExists("files/$file->user_id/$file->basename"); - }); - } - /** * @test */ diff --git a/tests/Domain/Homepage/HomepageTest.php b/tests/Domain/Homepage/HomepageTest.php index 4ccabcdb..fdd7bb9c 100644 --- a/tests/Domain/Homepage/HomepageTest.php +++ b/tests/Domain/Homepage/HomepageTest.php @@ -1,15 +1,12 @@ 'setup_wizard_success', @@ -136,25 +131,4 @@ class HomepageTest extends TestCase ->assertStatus(200) ->assertSee('This link is protected by password'); } - - /** - * @test - */ - public function it_send_contact_form() - { - Mail::fake(); - - Setting::create([ - 'name' => 'contact_email', - 'value' => 'jane@doe.com', - ]); - - $this->postJson('/api/contact', [ - 'email' => 'john@doe.com', - 'message' => 'Whaats is up!', - ]) - ->assertStatus(201); - - Mail::assertSent(SendContactMessage::class); - } } diff --git a/tests/Domain/Settings/SettingsTest.php b/tests/Domain/Settings/SettingsTest.php index 380b4a61..f3b138ec 100644 --- a/tests/Domain/Settings/SettingsTest.php +++ b/tests/Domain/Settings/SettingsTest.php @@ -6,9 +6,7 @@ use Tests\TestCase; use App\Users\Models\User; use Illuminate\Http\UploadedFile; use Domain\Settings\Models\Setting; -use Illuminate\Support\Facades\Http; use Domain\Settings\Actions\SeedDefaultSettingsAction; -use Domain\Localization\Actions\SeedDefaultLanguageAction; class SettingsTest extends TestCase { @@ -40,7 +38,7 @@ class SettingsTest extends TestCase */ public function it_get_admin_settings() { - resolve(SeedDefaultSettingsAction::class)('Extended'); + resolve(SeedDefaultSettingsAction::class)(); $admin = User::factory() ->create(['role' => 'admin']); @@ -74,7 +72,7 @@ class SettingsTest extends TestCase */ public function it_update_settings() { - resolve(SeedDefaultSettingsAction::class)('Extended'); + resolve(SeedDefaultSettingsAction::class)(); $admin = User::factory() ->create(['role' => 'admin']); @@ -137,50 +135,6 @@ class SettingsTest extends TestCase ->assertStatus(204); } - /** - * @test - */ - public function it_store_payment_service_credentials() - { - $admin = User::factory() - ->create(['role' => 'admin']); - - $this - ->actingAs($admin) - ->post('/api/admin/settings/payment-service', [ - 'service' => 'stripe', - 'key' => '123456789', - 'secret' => '123456789', - ])->assertStatus(204); - - $this->assertDatabaseHas('settings', [ - 'name' => 'allowed_stripe', - 'value' => '1', - ]); - } - - /** - * @test - */ - public function it_store_social_service_credentials() - { - $admin = User::factory() - ->create(['role' => 'admin']); - - $this - ->actingAs($admin) - ->post('/api/admin/settings/social-service', [ - 'client_id' => '123456789', - 'client_secret' => '123456789', - 'service' => 'facebook', - ])->assertStatus(204); - - $this->assertDatabaseHas('settings', [ - 'name' => 'allowed_facebook', - 'value' => 1, - ]); - } - /** * @test */ @@ -222,85 +176,4 @@ class SettingsTest extends TestCase ], ])->assertStatus(204); } - - /** - * @test - */ - public function it_set_broadcast() - { - $admin = User::factory() - ->create(['role' => 'admin']); - - $this - ->actingAs($admin) - ->postJson('/api/admin/settings/broadcast', [ - 'driver' => 'pusher', - 'id' => '123', - 'key' => '123456', - 'secret' => 'mOoiofnssddf', - 'cluster' => 'eu', - 'port' => null, - 'host' => null, - ])->assertStatus(204); - } - - /** - * @test - */ - public function it_upgrade_license() - { - Http::fake([ - 'https://verify.vuefilemanager.com/api/verify-code/*' => Http::response('b6896a44017217c36f4a6fdc56699728'), - ]); - - collect([ - [ - 'name' => 'license', - 'value' => 'regular', - ], - [ - 'name' => 'purchase_code', - 'value' => '22b28b36-6d84-41b2-a920-a884b2bf63b6', - ], - ])->each(function ($col) { - Setting::updateOrCreate([ - 'name' => $col['name'], - ], [ - 'value' => $col['value'], - ]); - }); - - resolve(SeedDefaultLanguageAction::class)(); - - $admin = User::factory() - ->create(['role' => 'admin']); - - $this - ->actingAs($admin) - ->postJson('/api/admin/upgrade-license', [ - 'purchaseCode' => '6ab28b36-6d84-41b2-a920-a884b2bf63b6', - ])->assertStatus(201); - - collect([ - [ - 'name' => 'license', - 'value' => 'extended', - ], - [ - 'name' => 'purchase_code', - 'value' => '6ab28b36-6d84-41b2-a920-a884b2bf63b6', - ], - ])->each(function ($col) { - $this->assertDatabaseHas('settings', [ - 'name' => $col['name'], - 'value' => $col['value'], - ]); - }); - - $this->assertDatabaseHas('language_translations', [ - 'key' => 'go_to_subscription', - 'value' => 'Go to Subscription', - 'lang' => 'en', - ]); - } } diff --git a/tests/Domain/SetupWizard/SetupWizardTest.php b/tests/Domain/SetupWizard/SetupWizardTest.php index 349daa4c..5ad879c6 100644 --- a/tests/Domain/SetupWizard/SetupWizardTest.php +++ b/tests/Domain/SetupWizard/SetupWizardTest.php @@ -66,9 +66,6 @@ class SetupWizardTest extends TestCase 'description' => 'The best file manager on the internet', 'googleAnalytics' => 'UA-12345678-1', 'contactMail' => 'john@doe.com', - 'subscriptionType' => 'metered', - 'userVerification' => 1, - 'userRegistration' => 1, 'storageLimitation' => 1, 'defaultStorage' => 10, 'logo' => UploadedFile::fake()->image('fake-logo.jpg'), @@ -79,14 +76,6 @@ class SetupWizardTest extends TestCase ])->assertStatus(204); $this - ->assertDatabaseHas('settings', [ - 'name' => 'subscription_type', - 'value' => 'metered', - ]) - ->assertDatabaseHas('settings', [ - 'name' => 'user_verification', - 'value' => 0, - ]) ->assertDatabaseHas('settings', [ 'name' => 'app_color', 'value' => '#00BC72', @@ -154,15 +143,6 @@ class SetupWizardTest extends TestCase 'avatar' => null, ]); - $this->assertDatabaseHas('pages', [ - 'title' => 'Terms of Service', - ]); - - $this->assertDatabaseHas('settings', [ - 'name' => 'feature_title_1', - 'value' => 'Truly Freedom', - ]); - $this->assertDatabaseHas('settings', [ 'name' => 'setup_wizard_success', 'value' => '1', diff --git a/tests/Domain/Spotlight/SearchTest.php b/tests/Domain/Spotlight/SearchTest.php index c636af64..9691c5f2 100644 --- a/tests/Domain/Spotlight/SearchTest.php +++ b/tests/Domain/Spotlight/SearchTest.php @@ -72,69 +72,4 @@ class SearchTest extends TestCase 'id' => $folder->id, ]); } - - /** - * @test - */ - public function it_get_searched_shared_with_me_file_and_folders() - { - $owner = User::factory() - ->hasSettings() - ->create(); - - $member = User::factory() - ->hasSettings() - ->create(); - - $folder = Folder::factory() - ->create([ - 'name' => "Alice's files", - 'user_id' => $owner->id, - ]); - - $folderWithin = Folder::factory() - ->create([ - 'name' => 'Folder within Alice', - 'parent_id' => $folder->id, - 'user_id' => $owner->id, - ]); - - $document = File::factory() - ->create([ - 'name' => 'Document', - 'user_id' => $owner->id, - 'parent_id' => $folderWithin->id, - ]); - - DB::table('team_folder_members') - ->insert([ - 'parent_id' => $folder->id, - 'user_id' => $member->id, - 'permission' => 'can-edit', - ]); - - $this - ->actingAs($member) - ->getJson('/api/browse/search?query=ali') - ->assertStatus(200) - ->assertJsonFragment([ - 'id' => $folder->id, - ]); - - $this - ->actingAs($member) - ->getJson('/api/browse/search?query=Fol') - ->assertStatus(200) - ->assertJsonFragment([ - 'id' => $folder->id, - ]); - - $this - ->actingAs($member) - ->getJson('/api/browse/search?query=doc') - ->assertStatus(200) - ->assertJsonFragment([ - 'id' => $document->id, - ]); - } } diff --git a/tests/Support/Gate/GateTest.php b/tests/Support/Gate/GateTest.php index 46ceacc4..18895427 100644 --- a/tests/Support/Gate/GateTest.php +++ b/tests/Support/Gate/GateTest.php @@ -109,157 +109,4 @@ class GateTest extends TestCase ]); }); } - - /** - * @test - */ - public function team_member_with_can_edit_privilege_rename_folder() - { - $owner = User::factory() - ->hasSettings() - ->create(); - - $member = User::factory() - ->hasSettings() - ->create(); - - $teamFolder = Folder::factory() - ->create([ - 'user_id' => $owner->id, - 'team_folder' => 1, - 'name' => 'Team Folder', - ]); - - $parent = Folder::factory() - ->create([ - 'user_id' => $owner->id, - 'parent_id' => $teamFolder->id, - ]); - - $children = Folder::factory() - ->create([ - 'user_id' => $owner->id, - 'parent_id' => $parent->id, - ]); - - DB::table('team_folder_members') - ->insert([ - [ - 'parent_id' => $teamFolder->id, - 'user_id' => $member->id, - 'permission' => 'can-edit', - ], - ]); - - $this - ->actingAs($member) - ->patchJson("/api/rename/{$children->id}", [ - 'name' => 'Renamed Folder', - 'type' => 'folder', - ]) - ->assertStatus(200) - ->assertJsonFragment([ - 'name' => 'Renamed Folder', - ]); - } - - /** - * @test - */ - public function team_member_with_can_visit_privilege_try_rename_folder() - { - $owner = User::factory() - ->create(); - - $member = User::factory() - ->create(); - - $teamFolder = Folder::factory() - ->create([ - 'user_id' => $owner->id, - 'team_folder' => 1, - 'name' => 'Team Folder', - ]); - - $parent = Folder::factory() - ->create([ - 'user_id' => $owner->id, - 'parent_id' => $teamFolder->id, - ]); - - $children = Folder::factory() - ->create([ - 'user_id' => $owner->id, - 'parent_id' => $parent->id, - 'name' => 'Captivating', - ]); - - DB::table('team_folder_members') - ->insert([ - [ - 'parent_id' => $teamFolder->id, - 'user_id' => $member->id, - 'permission' => 'can-view', - ], - ]); - - $this - ->actingAs($member) - ->patchJson("/api/rename/{$children->id}", [ - 'name' => 'Renamed Folder', - 'type' => 'folder', - ]) - ->assertStatus(403); - - $this->assertDatabaseHas('folders', [ - 'name' => 'Captivating', - ]); - } - - /** - * @test - */ - public function team_member_rename_file() - { - $owner = User::factory() - ->hasSettings() - ->create(); - - $member = User::factory() - ->hasSettings() - ->create(); - - $teamFolder = Folder::factory() - ->create([ - 'user_id' => $owner->id, - 'team_folder' => 1, - 'name' => 'Team Folder', - ]); - - $file = File::factory() - ->create([ - 'user_id' => $owner->id, - 'parent_id' => $teamFolder->id, - ]); - - DB::table('team_folder_members') - ->insert([ - [ - 'parent_id' => $teamFolder->id, - 'user_id' => $member->id, - 'permission' => 'can-edit', - ], - ]); - - $this - ->actingAs($member) - ->patchJson("/api/rename/{$file->id}", [ - 'name' => 'Renamed File', - 'type' => 'file', - ]) - ->assertStatus(200) - ->assertJsonFragment([ - 'name' => 'Renamed File', - ]); - } } diff --git a/tests/Support/Scheduler/SchedulerTest.php b/tests/Support/Scheduler/SchedulerTest.php index 2b3a216e..884df57a 100644 --- a/tests/Support/Scheduler/SchedulerTest.php +++ b/tests/Support/Scheduler/SchedulerTest.php @@ -4,83 +4,14 @@ namespace Tests\Support\Scheduler; use Storage; use Tests\TestCase; use App\Users\Models\User; -use Domain\Files\Models\File; use Domain\Sharing\Models\Share; use Illuminate\Http\UploadedFile; -use Domain\Traffic\Models\Traffic; -use Support\Scheduler\Actions\ReportUsageAction; use Support\Scheduler\Actions\DeleteFailedFilesAction; -use VueFileManager\Subscription\Domain\Plans\Models\Plan; use Support\Scheduler\Actions\DeleteUnverifiedUsersAction; use Support\Scheduler\Actions\DeleteExpiredShareLinksAction; -use VueFileManager\Subscription\Domain\Plans\Models\PlanMeteredFeature; -use VueFileManager\Subscription\Domain\Subscriptions\Models\Subscription; class SchedulerTest extends TestCase { - /** - * @test - */ - public function it_report_usage_of_subscription() - { - $user = User::factory() - ->hasSettings() - ->create(); - - $plan = Plan::factory() - ->create([ - 'type' => 'metered', - ]); - - PlanMeteredFeature::factory() - ->count(4) - ->sequence( - ['key' => 'storage'], - ['key' => 'bandwidth'], - ['key' => 'flatFee'], - ['key' => 'member'], - ) - ->create([ - 'plan_id' => $plan->id, - ]); - - $subscription = Subscription::factory() - ->create([ - 'status' => 'active', - 'type' => 'pre-paid', - 'plan_id' => $plan->id, - 'user_id' => $user->id, - ]); - - File::factory() - ->create([ - 'user_id' => $user->id, - 'filesize' => 125000000, - ]); - - Traffic::factory() - ->create([ - 'user_id' => $user->id, - 'download' => 155000000, - 'upload' => 255000000, - 'created_at' => now()->subDay(), - ]); - - resolve(ReportUsageAction::class)(); - - $this - ->assertDatabaseHas('usages', [ - 'metered_feature_id' => $plan->meteredFeatures()->get()[0]->id, - 'subscription_id' => $subscription->id, - 'quantity' => 0.125, - ]) - ->assertDatabaseHas('usages', [ - 'metered_feature_id' => $plan->meteredFeatures()->get()[1]->id, - 'subscription_id' => $subscription->id, - 'quantity' => 0.410, - ]); - } - /** * @test */