mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-28 19:10:40 +00:00
controller refactoring part 9
This commit is contained in:
@@ -490,7 +490,7 @@
|
|||||||
this.$isSomethingWrong()
|
this.$isSomethingWrong()
|
||||||
})
|
})
|
||||||
|
|
||||||
axios.get('/api/user/payments')
|
axios.get('/api/user/payment-cards')
|
||||||
.then(response => {
|
.then(response => {
|
||||||
|
|
||||||
this.defaultPaymentMethod = response.data.default
|
this.defaultPaymentMethod = response.data.default
|
||||||
|
|||||||
@@ -151,7 +151,7 @@
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
fetchPaymentMethods() {
|
fetchPaymentMethods() {
|
||||||
axios.get('/api/user/payments')
|
axios.get('/api/user/payment-cards')
|
||||||
.then(response => {
|
.then(response => {
|
||||||
|
|
||||||
if (response.status == 204) {
|
if (response.status == 204) {
|
||||||
|
|||||||
+9
-8
@@ -3,7 +3,11 @@
|
|||||||
use App\Users\Controllers\AuthController;
|
use App\Users\Controllers\AuthController;
|
||||||
use App\Users\Controllers\AccountController;
|
use App\Users\Controllers\AccountController;
|
||||||
use Domain\Payments\Controllers\PaymentMethodsController;
|
use Domain\Payments\Controllers\PaymentMethodsController;
|
||||||
|
use Domain\Subscriptions\Controllers\GetSetupIntentController;
|
||||||
|
use Domain\Subscriptions\Controllers\SubscriptionCancelController;
|
||||||
use Domain\Subscriptions\Controllers\SubscriptionController;
|
use Domain\Subscriptions\Controllers\SubscriptionController;
|
||||||
|
use Domain\Subscriptions\Controllers\SubscriptionResumeController;
|
||||||
|
use Domain\Subscriptions\Controllers\SubscriptionUpgradeController;
|
||||||
|
|
||||||
Route::post('/check', [AuthController::class, 'check_account']);
|
Route::post('/check', [AuthController::class, 'check_account']);
|
||||||
|
|
||||||
@@ -24,16 +28,13 @@ Route::group(['middleware' => ['auth:sanctum']], function () {
|
|||||||
Route::get('/', [AccountController::class, 'user']);
|
Route::get('/', [AccountController::class, 'user']);
|
||||||
|
|
||||||
// Payment cards
|
// Payment cards
|
||||||
Route::delete('/payment-cards/{id}', [PaymentMethodsController::class, 'delete']);
|
Route::apiResource('/payment-cards', PaymentMethodsController::class);
|
||||||
Route::patch('/payment-cards/{id}', [PaymentMethodsController::class, 'update']);
|
|
||||||
Route::post('/payment-cards', [PaymentMethodsController::class, 'store']);
|
|
||||||
Route::get('/payments', [PaymentMethodsController::class, 'index']);
|
|
||||||
|
|
||||||
// Subscription
|
// Subscription
|
||||||
Route::group(['prefix' => 'subscription'], function () {
|
Route::group(['prefix' => 'subscription'], function () {
|
||||||
Route::get('/setup-intent', [SubscriptionController::class, 'setup_intent']);
|
Route::get('/setup-intent', GetSetupIntentController::class);
|
||||||
Route::post('/upgrade', [SubscriptionController::class, 'upgrade']);
|
Route::post('/upgrade', SubscriptionUpgradeController::class);
|
||||||
Route::post('/cancel', [SubscriptionController::class, 'cancel']);
|
Route::post('/cancel', SubscriptionCancelController::class);
|
||||||
Route::post('/resume', [SubscriptionController::class, 'resume']);
|
Route::post('/resume', SubscriptionResumeController::class);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
+8
-5
@@ -8,14 +8,17 @@ use Domain\Subscriptions\Controllers\StripeWebhookController;
|
|||||||
use Domain\SetupWizard\Controllers\CreateAdminAccountController;
|
use Domain\SetupWizard\Controllers\CreateAdminAccountController;
|
||||||
use Domain\Localization\Controllers\CurrentLocalizationController;
|
use Domain\Localization\Controllers\CurrentLocalizationController;
|
||||||
|
|
||||||
Route::post('/stripe/webhook', [StripeWebhookController::class, 'handleWebhook']);
|
|
||||||
|
// Setup Wizard
|
||||||
Route::post('/admin-setup', CreateAdminAccountController::class);
|
Route::post('/admin-setup', CreateAdminAccountController::class);
|
||||||
|
|
||||||
Route::get('/translations/{lang}', CurrentLocalizationController::class);
|
// Subscription Services
|
||||||
|
Route::post('/stripe/webhook', [StripeWebhookController::class, 'handleWebhook']);
|
||||||
// Get user invoice from stripe service
|
|
||||||
Route::get('/invoice/{customer}/{token}', [InvoiceController::class, 'show'])->middleware(['auth:sanctum']);
|
Route::get('/invoice/{customer}/{token}', [InvoiceController::class, 'show'])->middleware(['auth:sanctum']);
|
||||||
|
|
||||||
|
// Translations
|
||||||
|
Route::get('/translations/{lang}', CurrentLocalizationController::class);
|
||||||
|
|
||||||
// Get og site for web crawlers
|
// Get og site for web crawlers
|
||||||
if (Crawler::isCrawler()) {
|
if (Crawler::isCrawler()) {
|
||||||
Route::get('/share/{shared}', OGSiteController::class);
|
Route::get('/share/{shared}', OGSiteController::class);
|
||||||
@@ -23,6 +26,6 @@ if (Crawler::isCrawler()) {
|
|||||||
Route::get('/share/{shared}', SharePublicIndexController::class);
|
Route::get('/share/{shared}', SharePublicIndexController::class);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show index.blade
|
// Index
|
||||||
Route::get('/{any?}', IndexController::class)
|
Route::get('/{any?}', IndexController::class)
|
||||||
->where('any', '.*');
|
->where('any', '.*');
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ namespace Domain\Payments\Controllers;
|
|||||||
|
|
||||||
use Auth;
|
use Auth;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
use Laravel\Cashier\PaymentMethod;
|
use Laravel\Cashier\PaymentMethod;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
use Support\Demo\Actions\DemoService;
|
|
||||||
use Domain\Subscriptions\Services\StripeService;
|
use Domain\Subscriptions\Services\StripeService;
|
||||||
use Domain\Payments\Resources\PaymentCardResource;
|
use Domain\Payments\Resources\PaymentCardResource;
|
||||||
use Domain\Payments\Resources\PaymentCardCollection;
|
use Domain\Payments\Resources\PaymentCardCollection;
|
||||||
@@ -17,16 +17,12 @@ class PaymentMethodsController extends Controller
|
|||||||
{
|
{
|
||||||
public function __construct(
|
public function __construct(
|
||||||
private StripeService $stripe,
|
private StripeService $stripe,
|
||||||
private DemoService $demo,
|
) {}
|
||||||
) {
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get user payment methods grouped by default and others
|
* Get user payment methods grouped by default and others
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
*/
|
||||||
public function index()
|
public function index(): array
|
||||||
{
|
{
|
||||||
$user = Auth::user();
|
$user = Auth::user();
|
||||||
|
|
||||||
@@ -80,12 +76,8 @@ class PaymentMethodsController extends Controller
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Update default payment method
|
* Update default payment method
|
||||||
*
|
|
||||||
* @param Request $request
|
|
||||||
* @param $id
|
|
||||||
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
|
|
||||||
*/
|
*/
|
||||||
public function update($id)
|
public function update(string $id): Response
|
||||||
{
|
{
|
||||||
$user = Auth::user();
|
$user = Auth::user();
|
||||||
|
|
||||||
@@ -100,8 +92,8 @@ class PaymentMethodsController extends Controller
|
|||||||
|
|
||||||
// Clear cached payment methods
|
// Clear cached payment methods
|
||||||
cache_forget_many([
|
cache_forget_many([
|
||||||
'payment-methods-user-' . $user->id,
|
"payment-methods-user-{$user->id}",
|
||||||
'default-payment-methods-user-' . $user->id,
|
"default-payment-methods-user-{$user->id}",
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return response('Done', 204);
|
return response('Done', 204);
|
||||||
@@ -109,17 +101,14 @@ class PaymentMethodsController extends Controller
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Register new payment method for user
|
* Register new payment method for user
|
||||||
*
|
|
||||||
* @param Request $request
|
|
||||||
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
|
|
||||||
*/
|
*/
|
||||||
public function store(RegisterNewPaymentMethodRequest $request)
|
public function store(RegisterNewPaymentMethodRequest $request): Response
|
||||||
{
|
{
|
||||||
// Get user
|
// Get user
|
||||||
$user = Auth::user();
|
$user = Auth::user();
|
||||||
|
|
||||||
// Check if is demo
|
// Check if is demo
|
||||||
if (is_demo($user->id)) {
|
if (is_demo_account($user->email)) {
|
||||||
return response('Done', 201);
|
return response('Done', 201);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -131,14 +120,13 @@ class PaymentMethodsController extends Controller
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete user payment method
|
* Delete user payment method
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public function delete($id)
|
public function delete($id): Response
|
||||||
{
|
{
|
||||||
$user = Auth::user();
|
$user = Auth::user();
|
||||||
|
|
||||||
// Check if is demo
|
// Check if is demo
|
||||||
abort_if(is_demo_account('howdy@hi5ve.digital'), 204, 'Done.');
|
abort_if(is_demo_account($user->email), 204, 'Done.');
|
||||||
|
|
||||||
// Get payment method
|
// Get payment method
|
||||||
$paymentMethod = $user->findPaymentMethod($id);
|
$paymentMethod = $user->findPaymentMethod($id);
|
||||||
@@ -151,8 +139,8 @@ class PaymentMethodsController extends Controller
|
|||||||
|
|
||||||
// Clear cached payment methods
|
// Clear cached payment methods
|
||||||
cache_forget_many([
|
cache_forget_many([
|
||||||
'payment-methods-user-' . $user->id,
|
"payment-methods-user-{$user->id}",
|
||||||
'default-payment-methods-user-' . $user->id,
|
"default-payment-methods-user-{$user->id}",
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return response('Done!', 204);
|
return response('Done!', 204);
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace Domain\Subscriptions\Controllers;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Auth;
|
||||||
|
use Domain\Subscriptions\Services\StripeService;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate setup intent
|
||||||
|
*/
|
||||||
|
class GetSetupIntentController extends Controller
|
||||||
|
{
|
||||||
|
public function __construct(
|
||||||
|
public StripeService $stripe,
|
||||||
|
) {}
|
||||||
|
|
||||||
|
public function setup_intent(): Response
|
||||||
|
{
|
||||||
|
return response(
|
||||||
|
$this->stripe->getSetupIntent(Auth::user()), 201
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace Domain\Subscriptions\Controllers;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Auth;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
|
||||||
|
class SubscriptionCancelController extends Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Cancel Subscription
|
||||||
|
*/
|
||||||
|
public function __invoke(): Response
|
||||||
|
{
|
||||||
|
$user = Auth::user();
|
||||||
|
|
||||||
|
// Check if is demo
|
||||||
|
if (is_demo_account($user->email)) {
|
||||||
|
return response('Done!', 204);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cancel subscription
|
||||||
|
$user->subscription('main')->cancel();
|
||||||
|
|
||||||
|
// Forget user subscription
|
||||||
|
Cache::forget("subscription-user-{$user->id}");
|
||||||
|
|
||||||
|
return response('Done!', 204);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -22,19 +22,6 @@ class SubscriptionController extends Controller
|
|||||||
) {
|
) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Generate setup intent
|
|
||||||
*
|
|
||||||
* @return Application|ResponseFactory|Response|SetupIntent
|
|
||||||
*/
|
|
||||||
public function setup_intent()
|
|
||||||
{
|
|
||||||
return response(
|
|
||||||
$this->stripe->getSetupIntent(Auth::user()),
|
|
||||||
201
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get user subscription detail
|
* Get user subscription detail
|
||||||
*
|
*
|
||||||
@@ -60,89 +47,4 @@ class SubscriptionController extends Controller
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Upgrade account to subscription
|
|
||||||
*
|
|
||||||
* @param StoreUpgradeAccountRequest $request
|
|
||||||
* @return ResponseFactory|Response
|
|
||||||
*/
|
|
||||||
public function upgrade(StoreUpgradeAccountRequest $request)
|
|
||||||
{
|
|
||||||
// Get user
|
|
||||||
$user = Auth::user();
|
|
||||||
|
|
||||||
// Check if is demo
|
|
||||||
if (is_demo($user->id)) {
|
|
||||||
return $this->demo->response_204();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Forget user subscription
|
|
||||||
Cache::forget('subscription-user-' . $user->id);
|
|
||||||
|
|
||||||
// Get requested plan
|
|
||||||
$plan = $this->stripe->getPlan($request->input('plan.data.id'));
|
|
||||||
|
|
||||||
// Set user billing
|
|
||||||
$user->setBilling($request->input('billing'));
|
|
||||||
|
|
||||||
// Update stripe customer billing info
|
|
||||||
$this->stripe->updateCustomerDetails($user);
|
|
||||||
|
|
||||||
// Make subscription
|
|
||||||
$this->stripe->createOrReplaceSubscription($request, $user);
|
|
||||||
|
|
||||||
// Update user storage limit
|
|
||||||
$user->settings()->update([
|
|
||||||
'storage_capacity' => $plan['product']['metadata']['capacity'],
|
|
||||||
]);
|
|
||||||
|
|
||||||
return response('Done!', 204);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Cancel Subscription
|
|
||||||
*
|
|
||||||
* @return ResponseFactory|Response
|
|
||||||
*/
|
|
||||||
public function cancel()
|
|
||||||
{
|
|
||||||
$user = User::find(Auth::id());
|
|
||||||
|
|
||||||
// Check if is demo
|
|
||||||
if (is_demo($user->id)) {
|
|
||||||
return $this->demo->response_204();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Cancel subscription
|
|
||||||
$user->subscription('main')->cancel();
|
|
||||||
|
|
||||||
// Forget user subscription
|
|
||||||
Cache::forget('subscription-user-' . $user->id);
|
|
||||||
|
|
||||||
return response('Done!', 204);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resume Subscription
|
|
||||||
*
|
|
||||||
* @return ResponseFactory|Response
|
|
||||||
*/
|
|
||||||
public function resume()
|
|
||||||
{
|
|
||||||
$user = User::find(Auth::id());
|
|
||||||
|
|
||||||
// Check if is demo
|
|
||||||
if (is_demo($user->id)) {
|
|
||||||
return $this->demo->response_204();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Resume subscription
|
|
||||||
$user->subscription('main')->resume();
|
|
||||||
|
|
||||||
// Forget user subscription
|
|
||||||
Cache::forget('subscription-user-' . $user->id);
|
|
||||||
|
|
||||||
return response('Done!', 204);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace Domain\Subscriptions\Controllers;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Auth;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
|
||||||
|
class SubscriptionResumeController extends Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Resume Subscription
|
||||||
|
*/
|
||||||
|
public function __invoke(): Response
|
||||||
|
{
|
||||||
|
$user = Auth::user();
|
||||||
|
|
||||||
|
// Check if is demo
|
||||||
|
if (is_demo_account($user->email)) {
|
||||||
|
return response('Done!', 204);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Resume subscription
|
||||||
|
$user->subscription('main')->resume();
|
||||||
|
|
||||||
|
// Forget user subscription
|
||||||
|
Cache::forget("subscription-user-{$user->id}");
|
||||||
|
|
||||||
|
return response('Done!', 204);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
|
||||||
|
namespace Domain\Subscriptions\Controllers;
|
||||||
|
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use Auth;
|
||||||
|
use Domain\Subscriptions\Requests\StoreUpgradeAccountRequest;
|
||||||
|
use Domain\Subscriptions\Services\StripeService;
|
||||||
|
use Illuminate\Http\Response;
|
||||||
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Upgrade account to subscription
|
||||||
|
*/
|
||||||
|
class SubscriptionUpgradeController extends Controller
|
||||||
|
{
|
||||||
|
public function __construct(
|
||||||
|
public StripeService $stripe,
|
||||||
|
) {}
|
||||||
|
|
||||||
|
public function __invoke(StoreUpgradeAccountRequest $request): Response
|
||||||
|
{
|
||||||
|
$user = Auth::user();
|
||||||
|
|
||||||
|
// Check if is demo
|
||||||
|
if (is_demo_account($user->email)) {
|
||||||
|
return response('Done!', 204);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Forget user subscription
|
||||||
|
Cache::forget("subscription-user-{$user->id}");
|
||||||
|
|
||||||
|
// Get requested plan
|
||||||
|
$plan = $this->stripe->getPlan(
|
||||||
|
$request->input('plan.data.id')
|
||||||
|
);
|
||||||
|
|
||||||
|
// Set user billing
|
||||||
|
$user->setBilling(
|
||||||
|
$request->input('billing')
|
||||||
|
);
|
||||||
|
|
||||||
|
// Update stripe customer billing info
|
||||||
|
$this->stripe->updateCustomerDetails($user);
|
||||||
|
|
||||||
|
// Make subscription
|
||||||
|
$this->stripe->createOrReplaceSubscription($request, $user);
|
||||||
|
|
||||||
|
// Update user storage limit
|
||||||
|
$user
|
||||||
|
->settings()
|
||||||
|
->update([
|
||||||
|
'storage_capacity' => $plan['product']['metadata']['capacity'],
|
||||||
|
]);
|
||||||
|
|
||||||
|
return response('Done!', 204);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user