mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-05 18:23:48 +00:00
controller refactoring part 11
This commit is contained in:
@@ -61,10 +61,10 @@
|
||||
"/chunks/profile~chunks/settings-password.js": "/chunks/profile~chunks/settings-password.js?id=fd25990d1ccec0294602",
|
||||
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=b35e751cdc1946a4fb60",
|
||||
"/chunks/settings.js": "/chunks/settings.js?id=7070921d97a2510445ac",
|
||||
"/chunks/settings-create-payment-methods.js": "/chunks/settings-create-payment-methods.js?id=0e818baec7f92c7fa542",
|
||||
"/chunks/settings-invoices.js": "/chunks/settings-invoices.js?id=eab2781e9935230c6971",
|
||||
"/chunks/settings-create-payment-methods.js": "/chunks/settings-create-payment-methods.js?id=1e6beb962430641f4671",
|
||||
"/chunks/settings-invoices.js": "/chunks/settings-invoices.js?id=148da32ea779f084f4bd",
|
||||
"/chunks/settings-password.js": "/chunks/settings-password.js?id=9258c6edb9815296b976",
|
||||
"/chunks/settings-payment-methods.js": "/chunks/settings-payment-methods.js?id=fc84aad90497e1ae99f9",
|
||||
"/chunks/settings-payment-methods.js": "/chunks/settings-payment-methods.js?id=323729734ffc814a48d2",
|
||||
"/chunks/settings-storage.js": "/chunks/settings-storage.js?id=682f4f690ac252a78a3a",
|
||||
"/chunks/settings-subscription.js": "/chunks/settings-subscription.js?id=4f1793d53633a2c4cc18",
|
||||
"/chunks/settings~chunks/settings-password.js": "/chunks/settings~chunks/settings-password.js?id=f5aaffe3aa073cb2ee19",
|
||||
@@ -73,12 +73,12 @@
|
||||
"/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=bfdf9bb904d354bdcbd1",
|
||||
"/chunks/shared/file-browser.js": "/chunks/shared/file-browser.js?id=0f6c34512740fca7e007",
|
||||
"/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=7886247bb35deada28a2",
|
||||
"/chunks/sign-in.js": "/chunks/sign-in.js?id=799cae3044c4c56debf8",
|
||||
"/chunks/sign-in.js": "/chunks/sign-in.js?id=0709543b76769c50a873",
|
||||
"/chunks/sign-up.js": "/chunks/sign-up.js?id=b30b10ca09b115efc6ca",
|
||||
"/chunks/stripe-credentials.js": "/chunks/stripe-credentials.js?id=3beb031ba99961e8c51c",
|
||||
"/chunks/subscription-plans.js": "/chunks/subscription-plans.js?id=4ae406cdb5805d9c4a45",
|
||||
"/chunks/subscription-service.js": "/chunks/subscription-service.js?id=a09dc140a3914fb64a1a",
|
||||
"/chunks/upgrade-billing.js": "/chunks/upgrade-billing.js?id=2ae7d7c13fee27b4edff",
|
||||
"/chunks/upgrade-billing.js": "/chunks/upgrade-billing.js?id=10416cb784a62f3c8fd7",
|
||||
"/chunks/upgrade-billing~chunks/upgrade-plan.js": "/chunks/upgrade-billing~chunks/upgrade-plan.js?id=43888143d0a6afe67d7a",
|
||||
"/chunks/upgrade-plan.js": "/chunks/upgrade-plan.js?id=5979a154f760a992e617",
|
||||
"/chunks/user.js": "/chunks/user.js?id=41076be9126702330159",
|
||||
@@ -279,5 +279,10 @@
|
||||
"/chunks/settings-payment-methods.8681aa04995d55912730.hot-update.js": "/chunks/settings-payment-methods.8681aa04995d55912730.hot-update.js",
|
||||
"/chunks/upgrade-billing.8681aa04995d55912730.hot-update.js": "/chunks/upgrade-billing.8681aa04995d55912730.hot-update.js",
|
||||
"/chunks/settings.38169fdae69094598f31.hot-update.js": "/chunks/settings.38169fdae69094598f31.hot-update.js",
|
||||
"/chunks/settings-password.38169fdae69094598f31.hot-update.js": "/chunks/settings-password.38169fdae69094598f31.hot-update.js"
|
||||
"/chunks/settings-password.38169fdae69094598f31.hot-update.js": "/chunks/settings-password.38169fdae69094598f31.hot-update.js",
|
||||
"/chunks/sign-in.5fd48bc3e49b7cb7e5e7.hot-update.js": "/chunks/sign-in.5fd48bc3e49b7cb7e5e7.hot-update.js",
|
||||
"/chunks/settings-create-payment-methods.3c553438a1090569af54.hot-update.js": "/chunks/settings-create-payment-methods.3c553438a1090569af54.hot-update.js",
|
||||
"/chunks/settings-payment-methods.3c553438a1090569af54.hot-update.js": "/chunks/settings-payment-methods.3c553438a1090569af54.hot-update.js",
|
||||
"/chunks/upgrade-billing.3c553438a1090569af54.hot-update.js": "/chunks/upgrade-billing.3c553438a1090569af54.hot-update.js",
|
||||
"/chunks/settings-invoices.4ab4d27b8447516929d2.hot-update.js": "/chunks/settings-invoices.4ab4d27b8447516929d2.hot-update.js"
|
||||
}
|
||||
|
||||
@@ -202,7 +202,7 @@
|
||||
},
|
||||
resendEmail() {
|
||||
axios.
|
||||
post('/api/user/email/resend/verify', {
|
||||
post('/api/user/email/verify/resend', {
|
||||
email: this.loginEmail
|
||||
})
|
||||
.then(
|
||||
|
||||
@@ -490,7 +490,7 @@
|
||||
this.$isSomethingWrong()
|
||||
})
|
||||
|
||||
axios.get('/api/user/payment-cards')
|
||||
axios.get('/api/user/subscription/payment-cards')
|
||||
.then(response => {
|
||||
|
||||
this.defaultPaymentMethod = response.data.default
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
if (setupIntent) {
|
||||
|
||||
axios
|
||||
.post('/api/user/payment-cards', {
|
||||
.post('/api/user/subscription/payment-cards', {
|
||||
token: setupIntent.payment_method,
|
||||
default: this.defaultPaymentMethod,
|
||||
})
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<PageTab :is-loading="isLoading">
|
||||
<PageTabGroup v-show="! isLoading">
|
||||
<FormLabel>{{ $t('user_invoices.title') }}</FormLabel>
|
||||
<DatatableWrapper @init="isLoading = false" api="/api/user/invoices" :paginator="false" :columns="columns" class="table">
|
||||
<DatatableWrapper @init="isLoading = false" api="/api/user/subscription/invoices" :paginator="false" :columns="columns" class="table">
|
||||
|
||||
<!--Table data content-->
|
||||
<template slot-scope="{ row }">
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
})
|
||||
},
|
||||
fetchPaymentMethods() {
|
||||
axios.get('/api/user/payment-cards')
|
||||
axios.get('/api/user/subscription/payment-cards')
|
||||
.then(response => {
|
||||
|
||||
if (response.status == 204) {
|
||||
@@ -182,7 +182,7 @@
|
||||
|
||||
this.deletingID = data.id
|
||||
|
||||
axios.post('/api/user/payment-cards/' + data.id, {
|
||||
axios.post('/api/user/subscription/payment-cards/' + data.id, {
|
||||
_method: 'delete'
|
||||
})
|
||||
.then(() => {
|
||||
@@ -206,7 +206,7 @@
|
||||
|
||||
if (data.operation === 'set-as-default-credit-card') {
|
||||
|
||||
axios.post('/api/user/payment-cards/' + data.id, {
|
||||
axios.post('/api/user/subscription/payment-cards/' + data.id, {
|
||||
default: 1,
|
||||
_method: 'patch'
|
||||
})
|
||||
|
||||
@@ -1,39 +1,49 @@
|
||||
<?php
|
||||
|
||||
use App\Users\Controllers\AccessTokenController;
|
||||
use App\Users\Controllers\Account\AccountDetailsController;
|
||||
use App\Users\Controllers\Account\StorageCapacityController;
|
||||
use App\Users\Controllers\Account\UpdatePasswordController;
|
||||
use App\Users\Controllers\Account\UpdateProfileSettingsController;
|
||||
use App\Users\Controllers\AuthController;
|
||||
use App\Users\Controllers\AccountController;
|
||||
use App\Users\Controllers\Authentication\AccountAccessTokenController;
|
||||
use App\Users\Controllers\Authentication\CheckAccountController;
|
||||
use App\Users\Controllers\Verification\ResendVerificationEmail;
|
||||
use App\Users\Controllers\Verification\VerifyEmailController;
|
||||
use Domain\Invoices\Controllers\UserInvoicesController;
|
||||
use Domain\Payments\Controllers\PaymentMethodsController;
|
||||
use Domain\Subscriptions\Controllers\GetSetupIntentController;
|
||||
use Domain\Subscriptions\Controllers\SubscriptionCancelController;
|
||||
use Domain\Subscriptions\Controllers\SubscriptionController;
|
||||
use Domain\Subscriptions\Controllers\SubscriptionDetailsController;
|
||||
use Domain\Subscriptions\Controllers\SubscriptionResumeController;
|
||||
use Domain\Subscriptions\Controllers\SubscriptionUpgradeController;
|
||||
|
||||
Route::post('/check', [AuthController::class, 'check_account']);
|
||||
Route::post('/check', CheckAccountController::class);
|
||||
|
||||
// Email verification
|
||||
Route::get('/email/verify/{id}', [AccountController::class, 'email_verification'])->name('verification.verify');
|
||||
Route::post('/email/resend/verify', [AccountController::class, 'resend_verification_email'])->name('verification.send');
|
||||
Route::get('/email/verify/{id}', VerifyEmailController::class)
|
||||
->name('verification.verify');
|
||||
|
||||
Route::post('/email/verify/resend', ResendVerificationEmail::class)
|
||||
->name('verification.send');
|
||||
|
||||
Route::group(['middleware' => ['auth:sanctum']], function () {
|
||||
// Account
|
||||
Route::patch('/relationships/settings', [AccountController::class, 'update_user_settings']);
|
||||
Route::post('/password', [AccountController::class, 'change_password']);
|
||||
Route::get('/subscription', [SubscriptionController::class, 'show']);
|
||||
Route::get('/invoices', [AccountController::class, 'invoices']);
|
||||
Route::get('/storage', [AccountController::class, 'storage']);
|
||||
Route::get('/', [AccountController::class, 'user']);
|
||||
Route::patch('/relationships/settings', UpdateProfileSettingsController::class);
|
||||
Route::post('/password', UpdatePasswordController::class);
|
||||
Route::get('/storage', StorageCapacityController::class);
|
||||
Route::get('/', AccountDetailsController::class);
|
||||
|
||||
// User Access Token
|
||||
Route::apiResource('/tokens', AccessTokenController::class);
|
||||
|
||||
// Payment cards
|
||||
Route::apiResource('/payment-cards', PaymentMethodsController::class);
|
||||
Route::apiResource('/tokens', AccountAccessTokenController::class);
|
||||
|
||||
// Subscription
|
||||
Route::group(['prefix' => 'subscription'], function () {
|
||||
Route::get('/setup-intent', GetSetupIntentController::class);
|
||||
|
||||
Route::apiResource('/payment-cards', PaymentMethodsController::class);
|
||||
Route::get('/invoices', UserInvoicesController::class);
|
||||
Route::get('/', SubscriptionDetailsController::class);
|
||||
|
||||
Route::post('/upgrade', SubscriptionUpgradeController::class);
|
||||
Route::post('/cancel', SubscriptionCancelController::class);
|
||||
Route::post('/resume', SubscriptionResumeController::class);
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
namespace App\Users\Controllers\Account;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\Users\Resources\UserResource;
|
||||
|
||||
class AccountDetailsController extends Controller
|
||||
{
|
||||
/**
|
||||
* Get all user data for frontend
|
||||
*/
|
||||
public function __invoke(): UserResource
|
||||
{
|
||||
return new UserResource(
|
||||
Auth::user()
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace App\Users\Controllers\Account;
|
||||
|
||||
|
||||
use App\Users\Resources\UserStorageResource;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class StorageCapacityController
|
||||
{
|
||||
public function __invoke(): UserStorageResource
|
||||
{
|
||||
return new UserStorageResource(
|
||||
Auth::user()
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace App\Users\Controllers\Account;
|
||||
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Users\Requests\UpdateUserPasswordRequest;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class UpdatePasswordController extends Controller
|
||||
{
|
||||
public function __invoke(
|
||||
UpdateUserPasswordRequest $request
|
||||
): Response{
|
||||
$user = Auth::user();
|
||||
|
||||
// Check if is demo
|
||||
abort_if(is_demo_account($user->email), 204, 'Changed!');
|
||||
|
||||
// Store new password
|
||||
$user->update([
|
||||
'password' => bcrypt($request->input('password')),
|
||||
]);
|
||||
|
||||
return response('Changed!', 204);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace App\Users\Controllers\Account;
|
||||
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
|
||||
class UpdateProfileSettingsController extends Controller
|
||||
{
|
||||
/**
|
||||
* Update user settings
|
||||
*/
|
||||
public function __invoke(Request $request): Response
|
||||
{
|
||||
// Validate request
|
||||
// TODO: pridat validator do requestu
|
||||
$validator = Validator::make($request->all(), [
|
||||
'avatar' => 'sometimes|file',
|
||||
'name' => 'string',
|
||||
'value' => 'string',
|
||||
]);
|
||||
|
||||
// Return error
|
||||
if ($validator->fails()) {
|
||||
abort(400, 'Bad input');
|
||||
}
|
||||
|
||||
// Get user
|
||||
$user = Auth::user();
|
||||
|
||||
// Check if is demo
|
||||
abort_if(is_demo_account($user->email), 204, 'Done.');
|
||||
|
||||
// Update avatar
|
||||
if ($request->hasFile('avatar')) {
|
||||
$user
|
||||
->settings()
|
||||
->update([
|
||||
'avatar' => store_avatar($request, 'avatar'),
|
||||
]);
|
||||
|
||||
return response('Saved!', 204);
|
||||
}
|
||||
|
||||
$user
|
||||
->settings()
|
||||
->update(
|
||||
make_single_input($request)
|
||||
);
|
||||
|
||||
return response('Saved!', 204);
|
||||
}
|
||||
}
|
||||
@@ -1,159 +0,0 @@
|
||||
<?php
|
||||
namespace App\Users\Controllers;
|
||||
|
||||
use App\Users\Models\User;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use App\Users\Resources\UserResource;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Support\Demo\Actions\DemoService;
|
||||
use Laravel\Sanctum\PersonalAccessToken;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use App\Users\Resources\UserStorageResource;
|
||||
use Domain\Invoices\Resources\InvoiceCollection;
|
||||
use App\Users\Requests\UpdateUserPasswordRequest;
|
||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||
use App\Users\Requests\UserCreateAccessTokenRequest;
|
||||
|
||||
class AccountController extends Controller
|
||||
{
|
||||
public function __construct(
|
||||
public DemoService $demo,
|
||||
) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all user data to frontend
|
||||
*
|
||||
* @return UserResource
|
||||
*/
|
||||
public function user()
|
||||
{
|
||||
return new UserResource(
|
||||
Auth::user()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get storage details
|
||||
*
|
||||
* @return UserStorageResource
|
||||
*/
|
||||
public function storage()
|
||||
{
|
||||
return new UserStorageResource(
|
||||
Auth::user()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get user invoices
|
||||
*
|
||||
* @return InvoiceCollection
|
||||
*/
|
||||
public function invoices()
|
||||
{
|
||||
return new InvoiceCollection(
|
||||
Auth::user()->invoices()
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Update user settings relationship
|
||||
*
|
||||
* @param Request $request
|
||||
* @return ResponseFactory|\Illuminate\Http\Response
|
||||
*/
|
||||
public function update_user_settings(Request $request)
|
||||
{
|
||||
// Validate request
|
||||
// TODO: pridat validator do requestu
|
||||
$validator = Validator::make($request->all(), [
|
||||
'avatar' => 'sometimes|file',
|
||||
'name' => 'string',
|
||||
'value' => 'string',
|
||||
]);
|
||||
|
||||
// Return error
|
||||
if ($validator->fails()) {
|
||||
abort(400, 'Bad input');
|
||||
}
|
||||
|
||||
// Get user
|
||||
$user = Auth::user();
|
||||
|
||||
// Check if is demo
|
||||
abort_if(is_demo_account('howdy@hi5ve.digital'), 204, 'Done.');
|
||||
|
||||
// Update avatar
|
||||
if ($request->hasFile('avatar')) {
|
||||
$user
|
||||
->settings()
|
||||
->update([
|
||||
'avatar' => store_avatar($request, 'avatar'),
|
||||
]);
|
||||
|
||||
return response('Saved!', 204);
|
||||
}
|
||||
|
||||
$user
|
||||
->settings()
|
||||
->update(
|
||||
make_single_input($request)
|
||||
);
|
||||
|
||||
return response('Saved!', 204);
|
||||
}
|
||||
|
||||
/**
|
||||
* Change user password
|
||||
*
|
||||
* @param Request $request
|
||||
* @return ResponseFactory|\Illuminate\Http\Response
|
||||
*/
|
||||
public function change_password(UpdateUserPasswordRequest $request)
|
||||
{
|
||||
// Get user
|
||||
$user = Auth::user();
|
||||
|
||||
// Check if is demo
|
||||
abort_if(is_demo_account('howdy@hi5ve.digital'), 204, 'Done.');
|
||||
|
||||
// Change and store new password
|
||||
$user->password = bcrypt($request->input('password'));
|
||||
$user->save();
|
||||
|
||||
return response('Changed!', 204);
|
||||
}
|
||||
|
||||
public function email_verification(string $id, Request $request): RedirectResponse | Response
|
||||
{
|
||||
if (! $request->hasValidSignature()) {
|
||||
return response('Invalid or expired url provided.', 401);
|
||||
}
|
||||
|
||||
$user = User::find($id);
|
||||
|
||||
if (! $user->hasVerifiedEmail()) {
|
||||
$user->markEmailAsVerified();
|
||||
}
|
||||
|
||||
return redirect()->to('/successfully-verified');
|
||||
}
|
||||
|
||||
public function resend_verification_email(Request $request): Response
|
||||
{
|
||||
$user = User::whereEmail($request->input('email'))->first();
|
||||
|
||||
if ($user->hasVerifiedEmail()) {
|
||||
return response('Email was already verified.', 204);
|
||||
}
|
||||
|
||||
$user->sendEmailVerificationNotification();
|
||||
|
||||
return response('Email verification link sent to your email', 204);
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace App\Users\Controllers;
|
||||
namespace App\Users\Controllers\Authentication;
|
||||
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
@@ -11,7 +11,7 @@ use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Str;
|
||||
use Laravel\Sanctum\PersonalAccessToken;
|
||||
|
||||
class AccessTokenController extends Controller
|
||||
class AccountAccessTokenController extends Controller
|
||||
{
|
||||
/**
|
||||
* Get all user tokens
|
||||
@@ -1,22 +1,21 @@
|
||||
<?php
|
||||
namespace App\Users\Controllers;
|
||||
namespace App\Users\Controllers\Authentication;
|
||||
|
||||
use App\Users\Models\User;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Users\Requests\CheckAccountRequest;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class AuthController extends Controller
|
||||
class CheckAccountController extends Controller
|
||||
{
|
||||
/**
|
||||
* Check if user account exist
|
||||
*
|
||||
* @param CheckAccountRequest $request
|
||||
* @return mixed
|
||||
*/
|
||||
public function check_account(CheckAccountRequest $request)
|
||||
{
|
||||
// Get User
|
||||
$user = User::whereEmail($request->email)
|
||||
public function __invoke(
|
||||
CheckAccountRequest $request
|
||||
): array|Response {
|
||||
|
||||
$user = User::whereEmail($request->input('email'))
|
||||
->first();
|
||||
|
||||
if (! $user) {
|
||||
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace App\Users\Controllers\Verification;
|
||||
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Users\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class ResendVerificationEmail extends Controller
|
||||
{
|
||||
public function __invoke(
|
||||
Request $request
|
||||
): Response {
|
||||
|
||||
$user = User::where('email', $request->input('email'))
|
||||
->first();
|
||||
|
||||
if ($user->hasVerifiedEmail()) {
|
||||
return response('Email was already verified.', 204);
|
||||
}
|
||||
|
||||
$user->sendEmailVerificationNotification();
|
||||
|
||||
return response('Email verification link sent to your email', 204);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace App\Users\Controllers\Verification;
|
||||
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Users\Models\User;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class VerifyEmailController extends Controller
|
||||
{
|
||||
public function __invoke(
|
||||
string $id,
|
||||
Request $request,
|
||||
): RedirectResponse|Response {
|
||||
|
||||
if (! $request->hasValidSignature()) {
|
||||
return response('Invalid or expired url provided.', 401);
|
||||
}
|
||||
|
||||
$user = User::find($id);
|
||||
|
||||
if (! $user->hasVerifiedEmail()) {
|
||||
$user->markEmailAsVerified();
|
||||
}
|
||||
|
||||
return redirect()->to('/successfully-verified');
|
||||
}
|
||||
}
|
||||
22
src/Domain/Invoices/Controllers/UserInvoicesController.php
Normal file
22
src/Domain/Invoices/Controllers/UserInvoicesController.php
Normal file
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Domain\Invoices\Controllers;
|
||||
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Domain\Invoices\Resources\InvoiceCollection;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class UserInvoicesController extends Controller
|
||||
{
|
||||
/**
|
||||
* Get user invoices
|
||||
*/
|
||||
public function __invoke(): InvoiceCollection
|
||||
{
|
||||
return new InvoiceCollection(
|
||||
Auth::user()->invoices()
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
<?php
|
||||
namespace Domain\Subscriptions\Controllers;
|
||||
|
||||
use Auth;
|
||||
use Stripe\SetupIntent;
|
||||
use App\Users\Models\User;
|
||||
use Illuminate\Http\Response;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Support\Demo\Actions\DemoService;
|
||||
use App\Users\Resources\UserSubscription;
|
||||
use Domain\Subscriptions\Services\StripeService;
|
||||
use Illuminate\Contracts\Foundation\Application;
|
||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||
use Domain\Subscriptions\Requests\StoreUpgradeAccountRequest;
|
||||
|
||||
class SubscriptionController extends Controller
|
||||
{
|
||||
public function __construct(
|
||||
private StripeService $stripe,
|
||||
private DemoService $demo,
|
||||
) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get user subscription detail
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function show()
|
||||
{
|
||||
$user = User::find(Auth::id());
|
||||
|
||||
if (! $user->subscription('main')) {
|
||||
return abort(204, 'User don\'t have any subscription');
|
||||
}
|
||||
|
||||
$slug = 'subscription-user-' . $user->id;
|
||||
|
||||
if (Cache::has($slug)) {
|
||||
return Cache::get($slug);
|
||||
}
|
||||
|
||||
return Cache::rememberForever($slug, function () use ($user) {
|
||||
return new UserSubscription(
|
||||
$user
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace Domain\Subscriptions\Controllers;
|
||||
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Users\Resources\UserSubscription;
|
||||
use Auth;
|
||||
|
||||
class SubscriptionDetailsController extends Controller
|
||||
{
|
||||
public function __invoke(): mixed
|
||||
{
|
||||
$user = Auth::user();
|
||||
|
||||
if (!$user->subscription('main')) {
|
||||
return abort(204, "User don't have any subscription");
|
||||
}
|
||||
|
||||
$slug = "subscription-user-{$user->id}";
|
||||
|
||||
if (cache()->has($slug)) {
|
||||
return cache()->get($slug);
|
||||
}
|
||||
|
||||
return cache()->rememberForever(
|
||||
$slug, fn() => new UserSubscription($user)
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -199,7 +199,7 @@ class UserAccountTest extends TestCase
|
||||
'email_verified_at' => null,
|
||||
]);
|
||||
|
||||
$this->postJson('/api/user/email/resend/verify', [
|
||||
$this->postJson('/api/user/email/verify/resend', [
|
||||
'email' => $user->email,
|
||||
])
|
||||
->assertStatus(204);
|
||||
|
||||
@@ -25,7 +25,7 @@ class UserInvoicesTest extends TestCase
|
||||
],
|
||||
])->assertStatus(204);
|
||||
|
||||
$this->getJson('/api/user/invoices')
|
||||
$this->getJson('/api/user/subscription/invoices')
|
||||
->assertStatus(200)
|
||||
->assertJsonFragment([
|
||||
'customer' => $this->user['stripe_id'],
|
||||
|
||||
@@ -135,7 +135,7 @@ class AdminPlansTest extends TestCase
|
||||
|
||||
$invoices = $this
|
||||
->actingAs($user)
|
||||
->getJson('/api/user/invoices')
|
||||
->getJson('/api/user/subscription/invoices')
|
||||
->assertStatus(200)
|
||||
->assertJsonFragment([
|
||||
'customer' => $this->user['stripe_id'],
|
||||
|
||||
Reference in New Issue
Block a user