- API routes refactoring

- setup:dev artisan command
This commit is contained in:
Peter Papp
2021-02-25 21:32:32 +01:00
parent 2f332197e6
commit 55ba82442a
24 changed files with 559 additions and 366 deletions
+7 -1
View File
@@ -32,10 +32,16 @@ class CreateNewUser implements CreatesNewUsers
'password' => $this->passwordRules(),
])->validate();
return User::create([
$user = User::create([
'name' => $input['name'],
'email' => $input['email'],
'password' => Hash::make($input['password']),
]);
$user->settings()->create([
'name' => $input['name']
]);
return $user;
}
}
-66
View File
@@ -1,66 +0,0 @@
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
class Deploy extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'deploy:production';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Automatic deployment for production';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
// Start deployment
$this->info('Running auto deployment');
$this->call('down');
// Exec commands
exec('git pull origin ' . config('app.deploy_branch'));
//exec('composer update --no-interaction --prefer-dist');
$this->migrateDatabase();
// Stop deployment
$this->call('up');
$this->info('Everything is done, congratulations! 🥳🥳🥳');
Log::info('Application was updated!');
}
/**
* Migrate database
*/
public function migrateDatabase()
{
$this->call('migrate', [
'--force' => true,
]);
}
}
@@ -0,0 +1,199 @@
<?php
namespace App\Console\Commands;
use App\Page;
use App\Setting;
use App\User;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Hash;
use Faker;
class SetupDevEnvironment extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'setup:dev';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Set up development environment';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
$this->faker = Faker\Factory::create();
}
/**
* Execute the console command.
*
* @return int
*/
public function handle()
{
$this->info('Setting up development environment');
$this->migrate_and_generate();
$this->store_data();
$this->seed_default_content();
$this->create_admin();
$this->clear_cache();
$this->info('Everything is done, congratulations! 🥳🥳🥳');
}
/**
* Create default admin account
*/
private function create_admin(): void
{
$user = User::forceCreate([
'role' => 'admin',
'name' => 'John Doe',
'email' => 'john@doe.com',
'password' => Hash::make('secret'),
]);
$user
->settings()
->create([
'storage_capacity' => 5,
'name' => 'John 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']),
]);
// Show user credentials
$this->info('Default admin account created. Email: john@doe.com and Password: secret');
}
/**
* Seed default content to database
*/
private function seed_default_content(): void
{
collect(config('content.content'))
->each(function ($content) {
Setting::updateOrCreate($content);
});
collect(config('content.pages'))
->each(function ($page) {
Page::updateOrCreate($page);
});
}
/**
* Store main app settings into database
*/
private function store_data(): void
{
// Get options
$settings = collect([
[
'name' => 'setup_wizard_database',
'value' => 1,
],
[
'name' => 'app_title',
'value' => 'VueFileManager',
],
[
'name' => 'app_description',
'value' => 'Your self-hosted storage cloud software powered by Laravel and Vue',
],
[
'name' => 'app_logo',
'value' => null,
],
[
'name' => 'app_logo_horizontal',
'value' => null,
],
[
'name' => 'app_favicon',
'value' => null,
],
[
'name' => 'google_analytics',
'value' => '',
],
[
'name' => 'contact_email',
'value' => '',
],
[
'name' => 'registration',
'value' => 1,
],
[
'name' => 'storage_limitation',
'value' => 1,
],
[
'name' => 'storage_default',
'value' => 5,
],
[
'name' => 'setup_wizard_success',
'value' => 1,
],
[
'name' => 'license',
'value' => 'Extended',
],
[
'name' => 'purchase_code',
'value' => '26b889eb-3602-4bf2-beb3-3sc378fcf484',
]
]);
// Store options
$settings->each(function ($col) {
Setting::updateOrCreate(['name' => $col['name']], $col);
});
}
/**
* Migrate database and generate application keys
*/
private function migrate_and_generate(): void
{
// Generate app key
$this->call('key:generate', [
'--force' => true
]);
// Migrate database
$this->call('migrate:fresh', [
'--force' => true
]);
}
/**
* Clear app cache
*/
private function clear_cache(): void
{
$this->call('cache:clear');
$this->call('config:clear');
$this->call('view:clear');
}
}
+1 -7
View File
@@ -2,12 +2,7 @@
namespace App\Console;
use App\Console\Commands\Deploy;
// use App\Console\Commands\SetupDevelopmentEnvironment;
use App\Console\Commands\SetupDevEnvironment;
use App\Console\Commands\SetupProductionEnvironment;
use App\Console\Commands\UpgradeApp;
use App\Share;
use App\Zip;
use Carbon\Carbon;
@@ -22,8 +17,7 @@ class Kernel extends ConsoleKernel
* @var array
*/
protected $commands = [
Deploy::class,
// SetupDevelopmentEnvironment::class,
SetupDevEnvironment::class,
];
/**
@@ -39,69 +39,7 @@ class UpgradeAppController extends Controller
*/
public function upgrade()
{
/*
* Upgrade user_settings & file_manager_folders table
*
* @since v1.8.1
*/
if (! Schema::hasColumn('user_settings', 'timezone') && ! Schema::hasColumn('file_manager_folders', 'icon_color')) {
$this->upgrade_database();
// Create legal pages and index content for regular license
if (get_setting('license') === 'Regular') {
$pages = collect(config('content.pages'));
$content = collect(config('content.content_regular'));
$content->each(function ($content) {
Setting::updateOrCreate($content);
});
$pages->each(function ($page) {
Page::updateOrCreate($page);
});
}
}
/*
* Upgrade expire_in in shares table
*
* @since v1.8
*/
if (! Schema::hasTable('traffic') && ! Schema::hasTable('zips') && ! Schema::hasTable('jobs')) {
$this->upgrade_database();
}
/*
* Upgrade expire_in in shares table
*
* @since v1.8
*/
if (! Schema::hasTable('traffic') && ! Schema::hasTable('zips') && ! Schema::hasTable('jobs')) {
$this->upgrade_database();
}
/*
* Upgrade expire_in in shares table
*
* @since v1.7.9
*/
if (! Schema::hasColumn('shares', 'expire_in')) {
$this->upgrade_database();
}
/*
* Upgrade expire_in in shares table
*
* @since v1.7.11
*/
if (! Schema::hasColumn('file_manager_files', 'metadata')) {
$this->upgrade_database();
}
$this->upgrade_database();
}
/**
@@ -125,7 +125,11 @@ class AccountController extends Controller
}
// Update text data
$user->settings->update(make_single_input($request));
$user
->settings()
->update(
make_single_input($request)
);
return response('Saved!', 204);
}
+4 -4
View File
@@ -1,9 +1,10 @@
<?php
namespace App;
namespace App\Models;
use App\Notifications\ResetPassword;
use App\Notifications\ResetUserPasswordNotification;
use App\UserSettings;
use ByteUnits\Metric;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Factories\HasFactory;
@@ -12,13 +13,12 @@ use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
use Laravel\Cashier\Billable;
use Laravel\Passport\HasApiTokens;
use Kyslik\ColumnSortable\Sortable;
use Rinvex\Subscriptions\Traits\HasSubscriptions;
use Laravel\Sanctum\HasApiTokens;
class User extends Authenticatable
{
use Notifiable, Billable, Sortable, HasFactory, \Laravel\Sanctum\HasApiTokens;
use Notifiable, Billable, Sortable, HasFactory, HasApiTokens;
protected $guarded = ['id', 'role'];