Merge remote-tracking branch 'origin/master' into oasis

# Conflicts:
#	app/Console/Commands/SetupDevEnvironment.php
#	app/Console/Kernel.php
#	app/Http/Resources/InvoiceResource.php
#	app/Http/Resources/UserResource.php
#	app/Models/User.php
#	composer.lock
#	config/app.php
#	config/custom-language-translations.php
#	config/language-translations.php
#	public/chunks/admin.js
#	public/chunks/app-language.js
#	public/chunks/dashboard.js
#	public/chunks/files.js
#	public/chunks/files~chunks/shared-files~chunks/shared/file-browser.js
#	public/chunks/files~chunks/shared-files~chunks/shared/file-browser~chunks/shared/single-file.js
#	public/chunks/invoices.js
#	public/chunks/pages.js
#	public/chunks/plan-subscribers.js
#	public/chunks/plans.js
#	public/chunks/platform.js
#	public/chunks/settings-invoices.js
#	public/chunks/settings-payment-methods.js
#	public/chunks/settings-subscription.js
#	public/chunks/shared-files.js
#	public/chunks/shared.js
#	public/chunks/shared/file-browser.js
#	public/chunks/user-invoices.js
#	public/chunks/user-subscription.js
#	public/chunks/users.js
#	public/js/main.js
#	public/mix-manifest.json
#	resources/js/components/FilesView/FileItemGrid.vue
#	resources/js/components/FilesView/FileItemList.vue
This commit is contained in:
Peter Papp
2021-04-29 11:06:14 +02:00
166 changed files with 2945 additions and 2876 deletions

View File

@@ -1,17 +1,16 @@
<?php
namespace App\Console\Commands;
use App\Models\File;
use App\Models\Folder;
use App\Models\Share;
use App\Services\SetupService;
use App\Models\Setting;
use App\Models\User;
use Illuminate\Console\Command;
use Illuminate\Foundation\Testing\WithFaker;
use Illuminate\Support\Facades\Storage;
use App\Models\Share;
use App\Models\Folder;
use App\Models\Setting;
use Illuminate\Support\Str;
use App\Services\SetupService;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Storage;
use Illuminate\Foundation\Testing\WithFaker;
class SetupDevEnvironment extends Command
{
@@ -87,27 +86,27 @@ class SetupDevEnvironment extends Command
private function create_admin(): void
{
$user = User::forceCreate([
'role' => 'admin',
'email' => 'howdy@hi5ve.digital',
'role' => 'admin',
'email' => 'howdy@hi5ve.digital',
'password' => bcrypt('vuefilemanager'),
]);
$user
->settings()
->create([
'avatar' => 'avatars/avatar-01.png',
'avatar' => 'avatars/avatar-01.png',
'storage_capacity' => 5,
'name' => 'Jane Doe',
'address' => $this->faker->address,
'state' => $this->faker->state,
'city' => $this->faker->city,
'postal_code' => $this->faker->postcode,
'country' => $this->faker->randomElement(['SK', 'CZ', 'DE', 'FR']),
'phone_number' => $this->faker->phoneNumber,
'timezone' => $this->faker->randomElement(['+1.0', '+2.0', '+3.0']),
'name' => 'Jane Doe',
'address' => $this->faker->address,
'state' => $this->faker->state,
'city' => $this->faker->city,
'postal_code' => $this->faker->postcode,
'country' => $this->faker->randomElement(['SK', 'CZ', 'DE', 'FR']),
'phone_number' => $this->faker->phoneNumber,
'timezone' => $this->faker->randomElement(['+1.0', '+2.0', '+3.0']),
]);
Storage::putFileAs("avatars", storage_path("demo/avatars/avatar-01.png"), 'avatar-01.png', "private");
Storage::putFileAs('avatars', storage_path('demo/avatars/avatar-01.png'), 'avatar-01.png', 'private');
// Show user credentials
$this->info('Default admin account created. Email: howdy@hi5ve.digital and Password: vuefilemanager');
@@ -126,29 +125,28 @@ class SetupDevEnvironment extends Command
'avatar' => 'avatar-03.png',
],
])->each(function ($user) {
$newbie = User::forceCreate([
'role' => 'user',
'email' => $this->faker->email,
'role' => 'user',
'email' => $this->faker->email,
'password' => bcrypt('vuefilemanager'),
]);
$newbie
->settings()
->create([
'avatar' => "avatars/{$user['avatar']}",
'avatar' => "avatars/{$user['avatar']}",
'storage_capacity' => 5,
'name' => $this->faker->name,
'address' => $this->faker->address,
'state' => $this->faker->state,
'city' => $this->faker->city,
'postal_code' => $this->faker->postcode,
'country' => $this->faker->randomElement(['SK', 'CZ', 'DE', 'FR']),
'phone_number' => $this->faker->phoneNumber,
'timezone' => $this->faker->randomElement(['+1.0', '+2.0', '+3.0']),
'name' => $this->faker->name,
'address' => $this->faker->address,
'state' => $this->faker->state,
'city' => $this->faker->city,
'postal_code' => $this->faker->postcode,
'country' => $this->faker->randomElement(['SK', 'CZ', 'DE', 'FR']),
'phone_number' => $this->faker->phoneNumber,
'timezone' => $this->faker->randomElement(['+1.0', '+2.0', '+3.0']),
]);
Storage::putFileAs("avatars", storage_path("demo/avatars/{$user['avatar']}"), $user['avatar'], "private");
Storage::putFileAs('avatars', storage_path("demo/avatars/{$user['avatar']}"), $user['avatar'], 'private');
$this->info("Generated user with email: $newbie->email and Password: vuefilemanager");
});
@@ -165,51 +163,51 @@ class SetupDevEnvironment extends Command
// 1.
$shared_folder = Folder::factory(Folder::class)
->create([
'user_id' => $user->id,
'author' => 'user',
'name' => 'Shared Folder',
'emoji' => [
"codes" => "1F680",
"char" => "🚀",
"name" => "rocket",
"category" => "Travel & Places (transport-air)",
"group" => "Travel & Places",
"subgroup" => "transport-air"
'user_id' => $user->id,
'author' => 'user',
'name' => 'Shared Folder',
'emoji' => [
'codes' => '1F680',
'char' => '🚀',
'name' => 'rocket',
'category' => 'Travel & Places (transport-air)',
'group' => 'Travel & Places',
'subgroup' => 'transport-air',
],
'created_at' => now(),
]);
Share::factory(Share::class)
->create([
'type' => 'folder',
'item_id' => $shared_folder->id,
'user_id' => $user->id,
'permission' => 'editor',
'type' => 'folder',
'item_id' => $shared_folder->id,
'user_id' => $user->id,
'permission' => 'editor',
'is_protected' => false,
'password' => null,
'expire_in' => null,
'password' => null,
'expire_in' => null,
]);
$peters_files = Folder::factory(Folder::class)
->create([
'user_id' => $user->id,
'user_id' => $user->id,
'parent_id' => $shared_folder->id,
'author' => 'visitor',
'name' => "Peter's Files",
'author' => 'visitor',
'name' => "Peter's Files",
]);
// 2.
$random_pics = Folder::factory(Folder::class)
->create([
'user_id' => $user->id,
'author' => 'user',
'name' => 'Random Pics',
'emoji' => [
'codes' => '1F4F7',
'char' => '📷',
'name' => 'camera',
'user_id' => $user->id,
'author' => 'user',
'name' => 'Random Pics',
'emoji' => [
'codes' => '1F4F7',
'char' => '📷',
'name' => 'camera',
'category' => 'Objects (light & video)',
'group' => 'Objects',
'group' => 'Objects',
'subgroup' => 'light & video',
],
'created_at' => now()->subMinutes(1),
@@ -217,32 +215,32 @@ class SetupDevEnvironment extends Command
$nature = Folder::factory(Folder::class)
->create([
'user_id' => $user->id,
'user_id' => $user->id,
'parent_id' => $random_pics->id,
'author' => 'user',
'name' => "Nature",
'emoji' => [
'codes' => '26F0',
'char' => '⛰',
'name' => 'mountain',
'author' => 'user',
'name' => 'Nature',
'emoji' => [
'codes' => '26F0',
'char' => '⛰',
'name' => 'mountain',
'category' => 'Travel & Places (place-geographic)',
'group' => 'Travel & Places',
'group' => 'Travel & Places',
'subgroup' => 'place-geographic',
],
]);
$apartments = Folder::factory(Folder::class)
->create([
'user_id' => $user->id,
'user_id' => $user->id,
'parent_id' => $random_pics->id,
'author' => 'user',
'name' => "Apartments",
'emoji' => [
'codes' => '1F3E0',
'char' => '🏠',
'name' => 'house',
'author' => 'user',
'name' => 'Apartments',
'emoji' => [
'codes' => '1F3E0',
'char' => '🏠',
'name' => 'house',
'category' => 'Travel & Places (place-building)',
'group' => 'Travel & Places',
'group' => 'Travel & Places',
'subgroup' => 'place-building',
],
]);
@@ -250,87 +248,87 @@ class SetupDevEnvironment extends Command
// 3.
$playable_media = Folder::factory(Folder::class)
->create([
'user_id' => $user->id,
'author' => 'user',
'name' => 'Playable Media',
'user_id' => $user->id,
'author' => 'user',
'name' => 'Playable Media',
'created_at' => now()->subMinutes(2),
]);
$video = Folder::factory(Folder::class)
->create([
'user_id' => $user->id,
'user_id' => $user->id,
'parent_id' => $playable_media->id,
'author' => 'user',
'name' => "Video",
'author' => 'user',
'name' => 'Video',
]);
$audio = Folder::factory(Folder::class)
->create([
'user_id' => $user->id,
'user_id' => $user->id,
'parent_id' => $playable_media->id,
'author' => 'user',
'name' => "Audio",
'author' => 'user',
'name' => 'Audio',
]);
// 4.
$multi_level = Folder::factory(Folder::class)
->create([
'user_id' => $user->id,
'author' => 'user',
'name' => 'Multi Level Folder',
'user_id' => $user->id,
'author' => 'user',
'name' => 'Multi Level Folder',
'created_at' => now()->subMinutes(3),
]);
$first_level = Folder::factory(Folder::class)
->create([
'user_id' => $user->id,
'user_id' => $user->id,
'parent_id' => $multi_level->id,
'author' => 'user',
'name' => "First Level",
'author' => 'user',
'name' => 'First Level',
]);
$second_level = Folder::factory(Folder::class)
->create([
'user_id' => $user->id,
'user_id' => $user->id,
'parent_id' => $first_level->id,
'author' => 'user',
'name' => "Second Level",
'author' => 'user',
'name' => 'Second Level',
]);
$third_level = Folder::factory(Folder::class)
->create([
'user_id' => $user->id,
'user_id' => $user->id,
'parent_id' => $second_level->id,
'author' => 'user',
'name' => "Third Level",
'author' => 'user',
'name' => 'Third Level',
]);
// 5.
$documents = Folder::factory(Folder::class)
->create([
'user_id' => $user->id,
'author' => 'user',
'name' => 'Documents',
'user_id' => $user->id,
'author' => 'user',
'name' => 'Documents',
'created_at' => now()->subMinutes(4),
]);
Share::factory(Share::class)
->create([
'type' => 'folder',
'item_id' => $documents->id,
'user_id' => $user->id,
'permission' => 'editor',
'type' => 'folder',
'item_id' => $documents->id,
'user_id' => $user->id,
'permission' => 'editor',
'is_protected' => false,
'password' => null,
'expire_in' => null,
'password' => null,
'expire_in' => null,
]);
// 6.
$videohive = Folder::factory(Folder::class)
->create([
'user_id' => $user->id,
'author' => 'user',
'name' => 'Videohive by MakingCG',
'user_id' => $user->id,
'author' => 'user',
'name' => 'Videohive by MakingCG',
'created_at' => now()->subMinutes(5),
]);
@@ -346,43 +344,42 @@ class SetupDevEnvironment extends Command
// Get documents to root directory
collect([
[
'name' => 'Random Document',
'name' => 'Random Document',
'basename' => 'Licence.pdf',
'mimetype' => 'pdf',
],
[
'name' => 'School Report',
'name' => 'School Report',
'basename' => 'Project Notes.pdf',
'mimetype' => 'pdf',
],
[
'name' => 'Personal Savings',
'name' => 'Personal Savings',
'basename' => 'School Report.pages',
'mimetype' => 'pages',
],
[
'name' => 'Top Secret Files',
'name' => 'Top Secret Files',
'basename' => 'Stories of the Night Skies.pages',
'mimetype' => 'pages',
],
])
->each(function ($file) use ($user) {
$basename = Str::random(12) . '-' . $file['basename'];
// Copy file into app storage
Storage::putFileAs("files/$user->id", storage_path("demo/documents/{$file['basename']}"), $basename, "private");
Storage::putFileAs("files/$user->id", storage_path("demo/documents/{$file['basename']}"), $basename, 'private');
// Create file record
File::create([
'folder_id' => null,
'user_id' => $user->id,
'name' => $file['name'],
'basename' => $basename,
'type' => 'file',
'author' => 'user',
'mimetype' => $file['mimetype'],
'filesize' => rand(1000000, 4000000),
'folder_id' => null,
'user_id' => $user->id,
'name' => $file['name'],
'basename' => $basename,
'type' => 'file',
'author' => 'user',
'mimetype' => $file['mimetype'],
'filesize' => rand(1000000, 4000000),
'created_at' => now()->subMinutes(rand(1, 5)),
]);
});
@@ -390,7 +387,7 @@ class SetupDevEnvironment extends Command
// Get documents to documents folder
collect([
[
'name' => 'Home Improvement',
'name' => 'Home Improvement',
'basename' => 'Licence.pdf',
'mimetype' => 'pdf',
],

View File

@@ -1,9 +1,8 @@
<?php
namespace App\Console\Commands;
use App\Models\Setting;
use App\Models\User;
use App\Models\Setting;
use App\Services\SetupService;
use Illuminate\Console\Command;
@@ -17,7 +16,6 @@ class SetupProdEnvironment extends Command
protected $signature = 'setup:prod';
protected $license = 'Extended';
/**
* The console command description.
*
@@ -71,105 +69,105 @@ class SetupProdEnvironment extends Command
// Get options
collect([
[
'name' => 'setup_wizard_database',
'name' => 'setup_wizard_database',
'value' => 1,
],
[
'name' => 'app_title',
'name' => 'app_title',
'value' => 'VueFileManager',
],
[
'name' => 'app_description',
'name' => 'app_description',
'value' => 'Your self-hosted storage cloud software powered by Laravel and Vue',
],
[
'name' => 'app_logo',
'name' => 'app_logo',
'value' => null,
],
[
'name' => 'app_logo_horizontal',
'name' => 'app_logo_horizontal',
'value' => null,
],
[
'name' => 'app_favicon',
'name' => 'app_favicon',
'value' => null,
],
[
'name' => 'app_og_image',
'name' => 'app_og_image',
'value' => null,
],
[
'name' => 'app_touch_icon',
'name' => 'app_touch_icon',
'value' => null,
],
[
'name' => 'google_analytics',
'name' => 'google_analytics',
'value' => null,
],
[
'name' => 'contact_email',
'name' => 'contact_email',
'value' => null,
],
[
'name' => 'registration',
'name' => 'registration',
'value' => 0,
],
[
'name' => 'storage_limitation',
'name' => 'storage_limitation',
'value' => 1,
],
[
'name' => 'storage_default',
'name' => 'storage_default',
'value' => 5,
],
[
'name' => 'setup_wizard_success',
'name' => 'setup_wizard_success',
'value' => 1,
],
[
'name' => 'license',
'name' => 'license',
'value' => $this->license,
],
[
'name' => 'purchase_code',
'name' => 'purchase_code',
'value' => '26b889eb-3602-4bf2-beb3-3sc378fcf484',
],
[
'name' => 'billing_address',
'name' => 'billing_address',
'value' => null,
],
[
'name' => 'billing_city',
'name' => 'billing_city',
'value' => null,
],
[
'name' => 'billing_country',
'name' => 'billing_country',
'value' => null,
],
[
'name' => 'billing_name',
'name' => 'billing_name',
'value' => null,
],
[
'name' => 'billing_phone_number',
'name' => 'billing_phone_number',
'value' => null,
],
[
'name' => 'billing_postal_code',
'name' => 'billing_postal_code',
'value' => null,
],
[
'name' => 'billing_state',
'name' => 'billing_state',
'value' => null,
],
[
'name' => 'billing_vat_number',
'name' => 'billing_vat_number',
'value' => null,
]
],
])->each(function ($col) {
Setting::forceCreate([
'name' => $col['name'],
'value' => $col['value']
'name' => $col['name'],
'value' => $col['value'],
]);
});
}
@@ -180,8 +178,8 @@ class SetupProdEnvironment extends Command
private function create_admin(): void
{
$user = User::forceCreate([
'role' => 'admin',
'email' => 'admin@vuefilemanager.com',
'role' => 'admin',
'email' => 'admin@vuefilemanager.com',
'password' => bcrypt('vuefilemanager'),
]);
@@ -189,7 +187,7 @@ class SetupProdEnvironment extends Command
->settings()
->create([
'storage_capacity' => 5,
'name' => 'Admin',
'name' => 'Admin',
]);
// Show user credentials
@@ -203,12 +201,12 @@ class SetupProdEnvironment extends Command
{
// Migrate database
$this->call('migrate:fresh', [
'--force' => true
'--force' => true,
]);
// Generate app key
$this->call('key:generate', [
'--force' => true
'--force' => true,
]);
}

View File

@@ -1,13 +1,12 @@
<?php
namespace App\Console;
use App\Console\Commands\SetupDevEnvironment;
use App\Console\Commands\SetupOasisEnvironment;
use App\Services\Oasis\OasisService;
use App\Console\Commands\SetupProdEnvironment;
use App\Services\SchedulerService;
use App\Services\Oasis\OasisService;
use Illuminate\Console\Scheduling\Schedule;
use App\Console\Commands\SetupDevEnvironment;
use App\Console\Commands\SetupProdEnvironment;
use App\Console\Commands\SetupOasisEnvironment;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel
@@ -40,7 +39,7 @@ class Kernel extends ConsoleKernel
$schedule->call(function () use ($scheduler) {
$scheduler->delete_old_zips();
if (!is_storage_driver(['local'])) {
if (! is_storage_driver(['local'])) {
$scheduler->delete_failed_files();
}
})->everySixHours();