refactoring part 1

This commit is contained in:
Peter Papp
2021-03-14 12:23:14 +01:00
parent c5e9d29362
commit d0bd866354
26 changed files with 168 additions and 312 deletions
@@ -14,7 +14,7 @@ use Laravel\Cashier\Subscription;
class DashboardController extends Controller
{
/**
* DashboardController constructor.
* @param StripeService $stripe
*/
public function __construct(StripeService $stripe)
{
@@ -13,7 +13,7 @@ use Illuminate\Http\Request;
class InvoiceController extends Controller
{
/**
* PlanController constructor.
* @param StripeService $stripe
*/
public function __construct(StripeService $stripe)
{
@@ -33,7 +33,7 @@ class InvoiceController extends Controller
}
/**
* Get single invoice by $token
* Get single invoice by invoice $token
*
* @param $customer
* @param $token
@@ -41,12 +41,8 @@ class InvoiceController extends Controller
*/
public function show($customer, $token)
{
$settings = json_decode(Setting::all()->pluck('value', 'name')->toJson());
$invoice = $this->stripe->getUserInvoice($customer, $token);
return view('vuefilemanager.invoice')
->with('settings', $settings)
->with('invoice', $invoice);
->with('settings', get_settings_in_json())
->with('invoice', $this->stripe->getUserInvoice($customer, $token));
}
}
@@ -21,12 +21,13 @@ class PagesController extends Controller
public function index()
{
return new PageCollection(
Page::sortable()->paginate(10)
Page::sortable()
->paginate(10)
);
}
/**
* Get page resource
* Get single page resource
*
* @param $page
* @return PageResource
+12 -8
View File
@@ -11,7 +11,10 @@ use App\Http\Tools\Demo;
use App\Models\Plan;
use App\Services\StripeService;
use App\Models\User;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\Routing\ResponseFactory;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Cache;
use Laravel\Cashier\Subscription;
use Rinvex\Subscriptions\Models\PlanFeature;
@@ -19,7 +22,7 @@ use Rinvex\Subscriptions\Models\PlanFeature;
class PlanController extends Controller
{
/**
* PlanController constructor.
* @param StripeService $stripe
*/
public function __construct(StripeService $stripe)
{
@@ -29,7 +32,7 @@ class PlanController extends Controller
/**
* Get all plans
*
* @return PlanCollection|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
* @return PlanCollection|Application|ResponseFactory|Response
*/
public function index()
{
@@ -49,7 +52,7 @@ class PlanController extends Controller
* Get plan record
*
* @param $id
* @return PlanResource|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
* @return PlanResource|Application|ResponseFactory|Response
*/
public function show($id)
{
@@ -69,7 +72,7 @@ class PlanController extends Controller
* Create new plan
*
* @param Request $request
* @return PlanResource|\Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
* @return PlanResource|Application|ResponseFactory|Response
*/
public function store(Request $request)
{
@@ -102,7 +105,7 @@ class PlanController extends Controller
*
* @param Request $request
* @param $id
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
* @return ResponseFactory|Response
*/
public function update(Request $request, $id)
{
@@ -123,7 +126,7 @@ class PlanController extends Controller
* Delete plan
*
* @param $id
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
* @return ResponseFactory|Response
*/
public function delete($id)
{
@@ -148,11 +151,12 @@ class PlanController extends Controller
*/
public function subscribers($id)
{
$subscribers = Subscription::where('stripe_plan', $id)
$subscribers = Subscription::whereStripePlan($id)
->pluck('user_id');
return new UsersCollection(
User::sortable()->findMany($subscribers)
User::sortable()
->findMany($subscribers)
);
}
}
@@ -1,7 +1,8 @@
<?php
namespace App\Http\Controllers;
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Tools\Demo;
use App\Models\Setting;
use Artisan;
@@ -20,16 +21,16 @@ class SettingController extends Controller
*/
public function show(Request $request)
{
$column = $request->get('column');
if (strpos($request->column, '|') !== false) {
if (strpos($column, '|') !== false) {
$columns = explode('|', $request->column);
$columns = explode('|', $column);
return Setting::whereIn('name', $columns)->pluck('value', 'name');
return Setting::whereIn('name', $columns)
->pluck('value', 'name');
}
return Setting::where('name', $column)->pluck('value', 'name');
return Setting::where('name', $request->column)
->pluck('value', 'name');
}
/**
@@ -82,12 +83,12 @@ class SettingController extends Controller
if (!app()->runningUnitTests()) {
setEnvironmentValue([
'MAIL_DRIVER' => $request->input('driver'),
'MAIL_HOST' => $request->input('host'),
'MAIL_PORT' => $request->input('port'),
'MAIL_USERNAME' => $request->input('username'),
'MAIL_PASSWORD' => $request->input('password'),
'MAIL_ENCRYPTION' => $request->input('encryption'),
'MAIL_DRIVER' => $request->driver,
'MAIL_HOST' => $request->host,
'MAIL_PORT' => $request->port,
'MAIL_USERNAME' => $request->username,
'MAIL_PASSWORD' => $request->password,
'MAIL_ENCRYPTION' => $request->encryption,
]);
// Clear config cache
@@ -163,4 +164,22 @@ class SettingController extends Controller
return response('Done', 204);
}
/**
* Clear application cache
*/
public function flush_cache()
{
if (env('APP_DEMO')) {
return Demo::response_204();
}
if (!app()->runningUnitTests()) {
Artisan::call('cache:clear');
Artisan::call('config:clear');
Artisan::call('config:cache');
}
return response('Done', 204);
}
}
+5 -10
View File
@@ -68,9 +68,9 @@ class UserController extends Controller
public function invoices(User $user)
{
return new InvoiceCollection(
$this->stripe->getUserInvoices(
$user
)
$this
->stripe
->getUserInvoices($user)
);
}
@@ -114,7 +114,7 @@ class UserController extends Controller
public function change_role(ChangeRoleRequest $request, User $user)
{
// Demo preview
if (env('APP_DEMO') && $user->id == 1) {
if (env('APP_DEMO') && $user->email === 'howdy@hi5ve.digial') {
return new UserResource($user);
}
@@ -178,11 +178,6 @@ class UserController extends Controller
*/
public function create_user(CreateUserByAdmin $request)
{
// Store avatar
if ($request->hasFile('avatar')) {
$avatar = store_avatar($request, 'avatar');
}
// Create user
$user = User::forceCreate([
'role' => $request->role,
@@ -195,7 +190,7 @@ class UserController extends Controller
->settings()
->create([
'name' => $request->name,
'avatar' => $avatar ?? null,
'avatar' => store_avatar($request, 'avatar'),
'storage_capacity' => $request->storage_capacity,
]);
+29 -13
View File
@@ -3,17 +3,17 @@
namespace App\Http\Controllers;
use App\Http\Mail\SendContactMessage;
use App\Models\Content;
use App\Http\Resources\PricingCollection;
use App\Http\Requests\PublicPages\SendContactMessageRequest;
use App\Http\Resources\PageResource;
use App\Http\Tools\Demo;
use App\Models\Setting;
use App\Models\Page;
use Artisan;
use App\Services\StripeService;
use Doctrine\DBAL\Driver\PDOException;
use Illuminate\Contracts\Routing\ResponseFactory;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Mail;
class AppFunctionsController extends Controller
@@ -29,6 +29,11 @@ class AppFunctionsController extends Controller
'license',
];
public function __construct(StripeService $stripe)
{
$this->stripe = $stripe;
}
/**
* Show index page
*
@@ -151,20 +156,31 @@ class AppFunctionsController extends Controller
}
/**
* Clear application cache
* Get all active storage plans
*
* @return PricingCollection
*/
public function flush_cache()
public function get_storage_plans()
{
if (env('APP_DEMO')) {
return Demo::response_204();
if (Cache::has('pricing')) {
// Get pricing from cache
$pricing = Cache::get('pricing');
} else {
// Store pricing to cache
$pricing = Cache::rememberForever('pricing', function () {
return $this->stripe->getActivePlans();
});
}
if (!app()->runningUnitTests()) {
Artisan::call('cache:clear');
Artisan::call('config:clear');
Artisan::call('config:cache');
}
// Format pricing to collection
$collection = new PricingCollection($pricing);
return response('Done', 204);
// Sort and return pricing
return $collection
->sortBy('product.metadata.capacity')
->values()
->all();
}
}
+1 -1
View File
@@ -18,7 +18,7 @@ class AuthController extends Controller
/**
* Check if user account exist
*
* @param Request $request
* @param CheckAccountRequest $request
* @return mixed
*/
public function check_account(CheckAccountRequest $request)
@@ -1,73 +0,0 @@
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use App\Models\User;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
class RegisterController extends Controller
{
/*
|--------------------------------------------------------------------------
| Register Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users as well as their
| validation and creation. By default this controller uses a trait to
| provide this functionality without requiring any additional code.
|
*/
use RegistersUsers;
/**
* Where to redirect users after registration.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
]);
}
}
-44
View File
@@ -1,44 +0,0 @@
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Artisan;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\UnauthorizedException;
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
class DeployController extends Controller
{
/**
* Get web hook payload and verify request
*
* @param Request $request
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
*/
public function github(Request $request) {
if (($signature = $request->headers->get('X-Hub-Signature')) == null) {
throw new BadRequestHttpException('Header not set');
}
$signature_parts = explode('=', $signature);
if (count($signature_parts) != 2) {
throw new BadRequestHttpException('signature has invalid format');
}
$known_signature = hash_hmac('sha1', $request->getContent(), config('app.deploy_secret'));
if (! hash_equals($known_signature, $signature_parts[1])) {
throw new UnauthorizedException('Could not verify request signature ' . $signature_parts[1]);
}
// Run deploying
Artisan::call('deploy:production');
Log::info('The GitHub webhook was accepted');
return response('The GitHub webhook was accepted', 202);
}
}
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers\FileBrowser;
namespace App\Http\Controllers\FileManager;
use App\Http\Requests\FileBrowser\SearchRequest;
use App\Models\User;
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers\FileFunctions;
namespace App\Http\Controllers\FileManager;
use App\Http\Requests\FileFunctions\CreateFolderRequest;
use App\Http\Requests\FileFunctions\DeleteItemRequest;
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers\FileFunctions;
namespace App\Http\Controllers\FileManager;
use App\Http\Tools\Demo;
use App\Models\Folder;
@@ -21,7 +21,7 @@ class FavouriteController extends Controller
{
// todo: pridat validator ako AddToFavouritesRequest
foreach ($request->input('folders') as $id) {
foreach ($request->folders as $id) {
// Get user & folder
$user = Auth::user();
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers\FileFunctions;
namespace App\Http\Controllers\FileManager;
use App\Http\Requests\Share\CreateShareRequest;
use App\Http\Requests\Share\UpdateShareRequest;
@@ -93,10 +93,10 @@ class ShareController extends Controller
// Update sharing record
$shared->update([
'permission' => $request->permission,
'is_protected' => $request->protected,
'expire_in' => $request->expiration,
'password' => $request->password ? Hash::make($request->password) : $shared->password,
'permission' => $request->permission,
'is_protected' => $request->protected,
'expire_in' => $request->expiration,
'password' => $request->password ? Hash::make($request->password) : $shared->password,
]);
// Return shared record
@@ -112,7 +112,7 @@ class ShareController extends Controller
*/
public function destroy(Request $request)
{
foreach ($request->input('tokens') as $token) {
foreach ($request->tokens as $token) {
// Get sharing record
Share::where('token', $token)
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers\FileFunctions;
namespace App\Http\Controllers\FileManager;
use App\Http\Tools\Demo;
use Illuminate\Contracts\Routing\ResponseFactory;
@@ -14,51 +14,10 @@ use App\Models\File;
class TrashController extends Controller
{
/**
* Empty user trash
*
* @return ResponseFactory|\Illuminate\Http\Response
*/
public function clear()
{
// Get user id
$user_id = Auth::id();
if (is_demo($user_id)) {
return Demo::response_204();
}
// Get files and folders
$folders = Folder::onlyTrashed()->where('user_id', $user_id)->get();
$files = File::onlyTrashed()->where('user_id', $user_id)->get();
// Force delete folder
$folders->each->forceDelete();
// Force delete files
foreach ($files as $file) {
// Delete file
Storage::delete("/files/$user_id/{$file->basename}");
// Delete thumbnail if exist
if ($file->thumbnail) {
Storage::delete("/files/$user_id/{$file->getRawOriginal('thumbnail')}");
}
// Delete file permanently
$file->forceDelete();
}
// Return response
return response('Done!', 204);
}
/**
* Restore item from trash
*
* @param Request $request
* @param $id
* @return ResponseFactory|\Illuminate\Http\Response
*/
public function restore(Request $request)
@@ -118,4 +77,44 @@ class TrashController extends Controller
// Return response
return response('Done!', 204);
}
/**
* Empty user trash
*
* @return ResponseFactory|\Illuminate\Http\Response
*/
public function dump()
{
// Get user id
$user_id = Auth::id();
if (is_demo($user_id)) {
return Demo::response_204();
}
// Get files and folders
$folders = Folder::onlyTrashed()->where('user_id', $user_id)->get();
$files = File::onlyTrashed()->where('user_id', $user_id)->get();
// Force delete folder
$folders->each->forceDelete();
// Force delete files
foreach ($files as $file) {
// Delete file
Storage::delete("/files/$user_id/{$file->basename}");
// Delete thumbnail if exist
if ($file->thumbnail) {
Storage::delete("/files/$user_id/{$file->getRawOriginal('thumbnail')}");
}
// Delete file permanently
$file->forceDelete();
}
// Return response
return response('Done!', 204);
}
}
@@ -1,49 +0,0 @@
<?php
namespace App\Http\Controllers\General;
use App\Http\Controllers\Controller;
use App\Http\Resources\PricingCollection;
use App\Services\StripeService;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
class PricingController extends Controller
{
/**
* PlanController constructor.
*/
public function __construct(StripeService $stripe)
{
$this->stripe = $stripe;
}
/**
* Get all active plans
*
* @return PricingCollection
*/
public function index()
{
if (Cache::has('pricing')) {
// Get pricing from cache
$pricing = Cache::get('pricing');
} else {
// Store pricing to cache
$pricing = Cache::rememberForever('pricing', function () {
return $this->stripe->getActivePlans();
});
}
// Format pricing to collection
$collection = new PricingCollection($pricing);
// Sort and return pricing
return $collection
->sortBy('product.metadata.capacity')
->values()
->all();
}
}
@@ -1,10 +1,8 @@
<?php
namespace App\Http\Controllers\General;
namespace App\Http\Controllers\Setup;
use App\Http\Controllers\Controller;
use App\Page;
use App\Setting;
use Artisan;
use Illuminate\Http\Request;
use Schema;
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers\General;
namespace App\Http\Controllers\Setup;
use App\Http\Controllers\Controller;
use App\Http\Requests\SetupWizard\CreateAdminRequest;
@@ -1,6 +1,6 @@
<?php
namespace App\Http\Controllers;
namespace App\Http\Controllers\Subscription;
use App\Services\StripeService;
use App\Models\Setting;
@@ -8,11 +8,11 @@ use App\Models\User;
use Laravel\Cashier\Http\Controllers\WebhookController as CashierController;
class WebhookController extends CashierController
class StripeWebhookController extends CashierController
{
public function __construct(StripeService $stripe)
public function __construct()
{
$this->stripe = $stripe;
$this->stripe = resolve(StripeService::class);
}
/**
@@ -32,18 +32,14 @@ class WebhookController extends CashierController
}
// Get user
$user = User::where('stripe_id', $payload['data']['object']['customer'])
$user = User::whereStripeId($payload['data']['object']['customer'])
->firstOrFail();
// Get default storage capacity
$default_storage = Setting::where('name', 'storage_default')
->first();
// Update storage capacity
$user
->settings()
->update([
'storage_capacity' => $default_storage->value
'storage_capacity' => get_setting('storage_default')
]);
return $this->successMethod();
@@ -58,7 +54,7 @@ class WebhookController extends CashierController
public function handleInvoicePaymentSucceeded($payload)
{
// Get user
$user = User::where('stripe_id', $payload['data']['object']['customer'])
$user = User::whereStripeId($payload['data']['object']['customer'])
->firstOrFail();
// Get requested plan