mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-17 15:52:15 +00:00
- redirect after sign in/up to payment page
- extended /api/oasis/subscribe function - setup:dev extended data
This commit is contained in:
@@ -805,6 +805,10 @@ class SetupDevEnvironment extends Command
|
||||
'name' => 'registration',
|
||||
'value' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'app_payments_active',
|
||||
'value' => 1,
|
||||
],
|
||||
[
|
||||
'name' => 'storage_limitation',
|
||||
'value' => 1,
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace App\Http\Controllers\Oasis;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Admin\CreateUserByAdmin;
|
||||
use App\Http\Resources\UserResource;
|
||||
use App\Models\User;
|
||||
use App\Models\UserSettings;
|
||||
@@ -45,7 +46,7 @@ class AdminController extends Controller
|
||||
* @param Request $request
|
||||
* @return Application|ResponseFactory|Response
|
||||
*/
|
||||
public function register_new_client(Request $request)
|
||||
public function create_order(Request $request)
|
||||
{
|
||||
// Create user
|
||||
$newbie = User::create([
|
||||
@@ -91,4 +92,33 @@ class AdminController extends Controller
|
||||
new UserResource($newbie), 201
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new user by admin
|
||||
*
|
||||
* @param CreateUserByAdmin $request
|
||||
* @return UserResource|Application|ResponseFactory|Response
|
||||
*/
|
||||
public function create_user(CreateUserByAdmin $request)
|
||||
{
|
||||
// Create user
|
||||
$user = User::forceCreate([
|
||||
'role' => $request->role,
|
||||
'email' => $request->email,
|
||||
'password' => \Illuminate\Support\Facades\Hash::make($request->password),
|
||||
]);
|
||||
|
||||
UserSettings::unguard();
|
||||
|
||||
$user
|
||||
->settings()
|
||||
->create([
|
||||
'name' => $request->name,
|
||||
'avatar' => store_avatar($request, 'avatar'),
|
||||
'storage_capacity' => $request->storage_capacity,
|
||||
'payment_activation' => 1,
|
||||
]);
|
||||
|
||||
return response(new UserResource($user), 201);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,24 +60,43 @@ class SubscriptionController extends Controller
|
||||
*/
|
||||
public function subscribe(Request $request, SubscriptionRequest $order)
|
||||
{
|
||||
// Create subscription
|
||||
$order->user
|
||||
->newSubscription('main', $order->requested_plan)
|
||||
->create(
|
||||
$this->stripe->getOrSetDefaultPaymentMethod($request, $order->user)
|
||||
);
|
||||
// Make subscription from subscription request
|
||||
if ($order->exists) {
|
||||
|
||||
// Get requested plan
|
||||
$plan = $this->stripe
|
||||
->getPlan($order->requested_plan);
|
||||
// Create subscription
|
||||
$order->user
|
||||
->newSubscription('main', $order->requested_plan)
|
||||
->create(
|
||||
$this->stripe->getOrSetDefaultPaymentMethod($request, $order->user)
|
||||
);
|
||||
|
||||
// Update Subscription request
|
||||
$order->update([
|
||||
'status' => 'payed'
|
||||
]);
|
||||
// Update Subscription request
|
||||
$order->update(['status' => 'payed']);
|
||||
|
||||
$user = $order->user;
|
||||
}
|
||||
|
||||
// Make subscription after user sign up and pay for the plan
|
||||
if (!$order->exists) {
|
||||
$user = Auth::user();
|
||||
|
||||
// Set user billing
|
||||
$user->setBilling($request->billing);
|
||||
|
||||
// Update stripe customer billing info
|
||||
$this->stripe->updateCustomerDetails($user);
|
||||
|
||||
// Make subscription
|
||||
$this->stripe->createOrReplaceSubscription($request, $user);
|
||||
}
|
||||
|
||||
// Get plan
|
||||
$plan = $this->stripe->getPlan(
|
||||
$order->requested_plan ?? $request->input('plan.data.id')
|
||||
);
|
||||
|
||||
// Update user storage limit
|
||||
$order->user
|
||||
$user
|
||||
->settings()
|
||||
->update([
|
||||
'storage_capacity' => $plan['product']['metadata']['capacity'],
|
||||
|
||||
@@ -42,15 +42,18 @@ class UserResource extends JsonResource
|
||||
'id' => $this->id,
|
||||
'type' => 'settings',
|
||||
'attributes' => [
|
||||
'avatar' => $this->settings->avatar,
|
||||
'name' => $this->settings->name,
|
||||
'address' => $this->settings->address,
|
||||
'state' => $this->settings->state,
|
||||
'city' => $this->settings->city,
|
||||
'postal_code' => $this->settings->postal_code,
|
||||
'country' => $this->settings->country,
|
||||
'phone_number' => $this->settings->phone_number,
|
||||
'timezone' => $this->settings->timezone
|
||||
'avatar' => $this->settings->avatar,
|
||||
'name' => $this->settings->name,
|
||||
'address' => $this->settings->address,
|
||||
'state' => $this->settings->state,
|
||||
'city' => $this->settings->city,
|
||||
'postal_code' => $this->settings->postal_code,
|
||||
'country' => $this->settings->country,
|
||||
'phone_number' => $this->settings->phone_number,
|
||||
'timezone' => $this->settings->timezone,
|
||||
|
||||
// OasisDrive
|
||||
'payment_activation' => $this->settings->payment_activation
|
||||
]
|
||||
]
|
||||
],
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
"/css/app.css": "/css/app.css",
|
||||
"/chunks/admin.js": "/chunks/admin.js?id=7875b08fc6fb75a7ad1f",
|
||||
"/chunks/admin-account.js": "/chunks/admin-account.js?id=b1d2758e439eb303f5ee",
|
||||
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~9fa266bc.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~9fa266bc.js?id=81dea7680f4bfde55278",
|
||||
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~74bf0fcb.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~74bf0fcb.js?id=6b6737a58e371fc4434b",
|
||||
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~c7a13fb0.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~c7a13fb0.js?id=62b552a0492fe95b2223",
|
||||
"/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~a001bb84.js": "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~a001bb84.js?id=0cad8279d29d79cd0e82",
|
||||
"/chunks/admin~chunks/files~chunks/settings~chunks/shared-files~chunks/shared/file-browser.js": "/chunks/admin~chunks/files~chunks/settings~chunks/shared-files~chunks/shared/file-browser.js?id=f1e1597205ff30d4fa4a",
|
||||
@@ -31,10 +31,10 @@
|
||||
"/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=6dccc2158cc6278f683d",
|
||||
"/chunks/environment-setup.js": "/chunks/environment-setup.js?id=123776e4ad431b2af406",
|
||||
"/chunks/files.js": "/chunks/files.js?id=40b4464ce393cb112111",
|
||||
"/chunks/files~chunks/oasis/platba~chunks/settings-subscription~chunks/shared-files~chunks/shared/file~9d1352fd.js": "/chunks/files~chunks/oasis/platba~chunks/settings-subscription~chunks/shared-files~chunks/shared/file~9d1352fd.js?id=4030b241faac6b31341f",
|
||||
"/chunks/files~chunks/platform~chunks/shared-files~chunks/shared/file-browser.js": "/chunks/files~chunks/platform~chunks/shared-files~chunks/shared/file-browser.js?id=c2c86f2168e863fbd49e",
|
||||
"/chunks/files~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/file-browser.js": "/chunks/files~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/file-browser.js?id=885dd88f0e8d5c499a48",
|
||||
"/chunks/files~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/file-browser~chunks/sha~8510f6c9.js": "/chunks/files~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/file-browser~chunks/sha~8510f6c9.js?id=02131dc9a3e5fb2ccfcc",
|
||||
"/chunks/files~chunks/settings-subscription~chunks/shared-files~chunks/shared/file-browser~chunks/user~9058a49f.js": "/chunks/files~chunks/settings-subscription~chunks/shared-files~chunks/shared/file-browser~chunks/user~9058a49f.js?id=31a17ad1d2536342abbe",
|
||||
"/chunks/files~chunks/shared-files~chunks/shared/file-browser.js": "/chunks/files~chunks/shared-files~chunks/shared/file-browser.js?id=07de5a0fc9944e819154",
|
||||
"/chunks/files~chunks/shared-files~chunks/shared/file-browser~chunks/shared/single-file.js": "/chunks/files~chunks/shared-files~chunks/shared/file-browser~chunks/shared/single-file.js?id=150772c0920d1a8694cc",
|
||||
"/chunks/files~chunks/shared/file-browser.js": "/chunks/files~chunks/shared/file-browser.js?id=b2a355bb27f40ee0e386",
|
||||
@@ -43,6 +43,8 @@
|
||||
"/chunks/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=7543bc0ebd67a282779a",
|
||||
"/chunks/invoices.js": "/chunks/invoices.js?id=98c2b0d4a83f4e0cc6d9",
|
||||
"/chunks/not-found-shared.js": "/chunks/not-found-shared.js?id=7fc7f9b6f10bdfac770e",
|
||||
"/chunks/oasis/platba.js": "/chunks/oasis/platba.js?id=e92773ec90d60d1cd788",
|
||||
"/chunks/oasis/platba~chunks/upgrade-billing~chunks/upgrade-plan.js": "/chunks/oasis/platba~chunks/upgrade-billing~chunks/upgrade-plan.js?id=443cc6055897091f6676",
|
||||
"/chunks/page-edit.js": "/chunks/page-edit.js?id=234551fa36d21e29606e",
|
||||
"/chunks/pages.js": "/chunks/pages.js?id=eddb0354939e959cea11",
|
||||
"/chunks/plan.js": "/chunks/plan.js?id=56ff26197c3ddab55605",
|
||||
@@ -57,7 +59,7 @@
|
||||
"/chunks/profile~chunks/settings-password.js": "/chunks/profile~chunks/settings-password.js?id=9202f2cff7c80a561718",
|
||||
"/chunks/purchase-code.js": "/chunks/purchase-code.js?id=01dafc8397bda91a47f5",
|
||||
"/chunks/settings.js": "/chunks/settings.js?id=713564bcdbe44aa66df1",
|
||||
"/chunks/settings-create-payment-methods.js": "/chunks/settings-create-payment-methods.js?id=9c088cb1b14836d13648",
|
||||
"/chunks/settings-create-payment-methods.js": "/chunks/settings-create-payment-methods.js?id=25a7e5e91b236debdae9",
|
||||
"/chunks/settings-invoices.js": "/chunks/settings-invoices.js?id=c765f8563393c27bc6a6",
|
||||
"/chunks/settings-password.js": "/chunks/settings-password.js?id=201b3cbada273dacd46e",
|
||||
"/chunks/settings-payment-methods.js": "/chunks/settings-payment-methods.js?id=535472f0e43f64ec0ccc",
|
||||
@@ -69,278 +71,67 @@
|
||||
"/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=3d5c7754d438830a4204",
|
||||
"/chunks/shared/file-browser.js": "/chunks/shared/file-browser.js?id=3127fab4cfd3d5f00a72",
|
||||
"/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=e8aedb75df7fe227d693",
|
||||
"/chunks/sign-in.js": "/chunks/sign-in.js?id=92a1de80f254cfc9ac91",
|
||||
"/chunks/sign-up.js": "/chunks/sign-up.js?id=a51dd0f046981790d60c",
|
||||
"/chunks/sign-in.js": "/chunks/sign-in.js?id=96596a96b8c810d752e2",
|
||||
"/chunks/sign-up.js": "/chunks/sign-up.js?id=2d6782121f7dde627401",
|
||||
"/chunks/stripe-credentials.js": "/chunks/stripe-credentials.js?id=6eb1bdf3942d7b2dd06f",
|
||||
"/chunks/subscription-plans.js": "/chunks/subscription-plans.js?id=8048188a201c41f248c6",
|
||||
"/chunks/subscription-service.js": "/chunks/subscription-service.js?id=90c1aa9431689a89eb3d",
|
||||
"/chunks/upgrade-billing.js": "/chunks/upgrade-billing.js?id=830456726847f435144e",
|
||||
"/chunks/upgrade-billing~chunks/upgrade-plan.js": "/chunks/upgrade-billing~chunks/upgrade-plan.js?id=2b555924c945cbcd23f5",
|
||||
"/chunks/upgrade-plan.js": "/chunks/upgrade-plan.js?id=9c61721d5e30ef544377",
|
||||
"/chunks/upgrade-billing.js": "/chunks/upgrade-billing.js?id=db93044d81a1e1b75cf2",
|
||||
"/chunks/upgrade-plan.js": "/chunks/upgrade-plan.js?id=35939b91f0dd6357b9c2",
|
||||
"/chunks/user.js": "/chunks/user.js?id=8e96e769d9df5c5f7364",
|
||||
"/chunks/user-create.js": "/chunks/user-create.js?id=421558158a756e7f87b0",
|
||||
"/chunks/user-create.js": "/chunks/user-create.js?id=15fa75e2184472b203ef",
|
||||
"/chunks/user-delete.js": "/chunks/user-delete.js?id=78a10edafd58a4abad26",
|
||||
"/chunks/user-detail.js": "/chunks/user-detail.js?id=039a3d421f7d8b8b3ce3",
|
||||
"/chunks/user-invoices.js": "/chunks/user-invoices.js?id=8da7b23dc11d9e2e6c99",
|
||||
"/chunks/user-password.js": "/chunks/user-password.js?id=31bcde6d4cfb29b1c894",
|
||||
"/chunks/user-storage.js": "/chunks/user-storage.js?id=f1d8f104599fa982991e",
|
||||
"/chunks/user-subscription.js": "/chunks/user-subscription.js?id=3b8974eb8af615d517f4",
|
||||
"/chunks/users.js": "/chunks/users.js?id=5a137097e3c880c7c73d",
|
||||
"/vendors~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-i~68e3c6cf.js": "/vendors~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-i~68e3c6cf.js?id=b490efdc8470a6c2f625",
|
||||
"/vendors~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-i~a4a4a595.js": "/vendors~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-i~a4a4a595.js?id=be99c10088b00578891b",
|
||||
"/vendors~chunks/files~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/file-browser~ch~52c14f2e.js": "/vendors~chunks/files~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/file-browser~ch~52c14f2e.js?id=66afa0e341251a68c3d3",
|
||||
"/js/main.15462e4af4d55df66973.hot-update.js": "/js/main.15462e4af4d55df66973.hot-update.js",
|
||||
"/js/main.cbbb4b7ba2d3799084b1.hot-update.js": "/js/main.cbbb4b7ba2d3799084b1.hot-update.js",
|
||||
"/chunks/user-create.cbbb4b7ba2d3799084b1.hot-update.js": "/chunks/user-create.cbbb4b7ba2d3799084b1.hot-update.js",
|
||||
"/chunks/user-create.54a4449fe2276fba9662.hot-update.js": "/chunks/user-create.54a4449fe2276fba9662.hot-update.js",
|
||||
"/js/main.8aa438d501df2f11f4fb.hot-update.js": "/js/main.8aa438d501df2f11f4fb.hot-update.js",
|
||||
"/js/main.c819f952ef8d64da2c7f.hot-update.js": "/js/main.c819f952ef8d64da2c7f.hot-update.js",
|
||||
"/chunks/user-create.c819f952ef8d64da2c7f.hot-update.js": "/chunks/user-create.c819f952ef8d64da2c7f.hot-update.js",
|
||||
"/js/main.3fa488b1ce9a72e510d9.hot-update.js": "/js/main.3fa488b1ce9a72e510d9.hot-update.js",
|
||||
"/chunks/user-create.3fa488b1ce9a72e510d9.hot-update.js": "/chunks/user-create.3fa488b1ce9a72e510d9.hot-update.js",
|
||||
"/chunks/user-create.a5516d3706d718944d86.hot-update.js": "/chunks/user-create.a5516d3706d718944d86.hot-update.js",
|
||||
"/chunks/user-create.e3b89a488b7f5d464cb6.hot-update.js": "/chunks/user-create.e3b89a488b7f5d464cb6.hot-update.js",
|
||||
"/js/main.2e41c3c6d72ca60cdfa5.hot-update.js": "/js/main.2e41c3c6d72ca60cdfa5.hot-update.js",
|
||||
"/chunks/user-create.a71b18b949a40aa877db.hot-update.js": "/chunks/user-create.a71b18b949a40aa877db.hot-update.js",
|
||||
"/chunks/user-create.919c3693ad6edad72622.hot-update.js": "/chunks/user-create.919c3693ad6edad72622.hot-update.js",
|
||||
"/chunks/user-create.ff44a8c6547514b0555e.hot-update.js": "/chunks/user-create.ff44a8c6547514b0555e.hot-update.js",
|
||||
"/chunks/user-create.f71649c0af0138fd392a.hot-update.js": "/chunks/user-create.f71649c0af0138fd392a.hot-update.js",
|
||||
"/chunks/user-create.a0975461a82aa011ae08.hot-update.js": "/chunks/user-create.a0975461a82aa011ae08.hot-update.js",
|
||||
"/chunks/user-create.22963a8eb879a70de8e8.hot-update.js": "/chunks/user-create.22963a8eb879a70de8e8.hot-update.js",
|
||||
"/chunks/user-create.00fae37c8caaf9c4116c.hot-update.js": "/chunks/user-create.00fae37c8caaf9c4116c.hot-update.js",
|
||||
"/chunks/user-create.bd8ce06e31babb0d83bf.hot-update.js": "/chunks/user-create.bd8ce06e31babb0d83bf.hot-update.js",
|
||||
"/chunks/user-create.533a9769278591f0a35f.hot-update.js": "/chunks/user-create.533a9769278591f0a35f.hot-update.js",
|
||||
"/chunks/user-create.4de58d114340c037c334.hot-update.js": "/chunks/user-create.4de58d114340c037c334.hot-update.js",
|
||||
"/chunks/user-create.bc5c6db3b1f40958cee6.hot-update.js": "/chunks/user-create.bc5c6db3b1f40958cee6.hot-update.js",
|
||||
"/chunks/user-create.61c4327d1b8cc3882ca3.hot-update.js": "/chunks/user-create.61c4327d1b8cc3882ca3.hot-update.js",
|
||||
"/chunks/user-create.c7a824a1651301799e6f.hot-update.js": "/chunks/user-create.c7a824a1651301799e6f.hot-update.js",
|
||||
"/chunks/user-create.a5037bab9efc816329c2.hot-update.js": "/chunks/user-create.a5037bab9efc816329c2.hot-update.js",
|
||||
"/chunks/user-create.872040ca690570f5940a.hot-update.js": "/chunks/user-create.872040ca690570f5940a.hot-update.js",
|
||||
"/chunks/user-create.ed26b4426b06a08c6c6f.hot-update.js": "/chunks/user-create.ed26b4426b06a08c6c6f.hot-update.js",
|
||||
"/chunks/user-create.925215955f57702fc155.hot-update.js": "/chunks/user-create.925215955f57702fc155.hot-update.js",
|
||||
"/chunks/user-create.a91d2252b68a6c00ef00.hot-update.js": "/chunks/user-create.a91d2252b68a6c00ef00.hot-update.js",
|
||||
"/chunks/user-create.8d5c86849f2e3abbaa16.hot-update.js": "/chunks/user-create.8d5c86849f2e3abbaa16.hot-update.js",
|
||||
"/chunks/user-create.d393a841297e7b3b49bc.hot-update.js": "/chunks/user-create.d393a841297e7b3b49bc.hot-update.js",
|
||||
"/chunks/user-create.fe44ba1ff26e3a796548.hot-update.js": "/chunks/user-create.fe44ba1ff26e3a796548.hot-update.js",
|
||||
"/chunks/user-create.b84bc5bf54478d757615.hot-update.js": "/chunks/user-create.b84bc5bf54478d757615.hot-update.js",
|
||||
"/chunks/user-create.858d43e043ecfbf1f34e.hot-update.js": "/chunks/user-create.858d43e043ecfbf1f34e.hot-update.js",
|
||||
"/chunks/user-create.ebf58013ad50ee56a3c9.hot-update.js": "/chunks/user-create.ebf58013ad50ee56a3c9.hot-update.js",
|
||||
"/chunks/user-create.522c330a0f5f932859b6.hot-update.js": "/chunks/user-create.522c330a0f5f932859b6.hot-update.js",
|
||||
"/chunks/user-create.d84da8c0b8db7571999d.hot-update.js": "/chunks/user-create.d84da8c0b8db7571999d.hot-update.js",
|
||||
"/chunks/user-create.0a7c147f41bbd509a7bb.hot-update.js": "/chunks/user-create.0a7c147f41bbd509a7bb.hot-update.js",
|
||||
"/chunks/user-create.a74b6607e7cdac972430.hot-update.js": "/chunks/user-create.a74b6607e7cdac972430.hot-update.js",
|
||||
"/chunks/user-create.2f4fb0da79ad0e978ccb.hot-update.js": "/chunks/user-create.2f4fb0da79ad0e978ccb.hot-update.js",
|
||||
"/chunks/user-create.5c5c4eca7bf7386f694d.hot-update.js": "/chunks/user-create.5c5c4eca7bf7386f694d.hot-update.js",
|
||||
"/chunks/user-create.90b8d2a51502ba505aa0.hot-update.js": "/chunks/user-create.90b8d2a51502ba505aa0.hot-update.js",
|
||||
"/chunks/user-create.375793ace33f5a7418dc.hot-update.js": "/chunks/user-create.375793ace33f5a7418dc.hot-update.js",
|
||||
"/chunks/user-create.dc4df3471eeb2ed2b3d1.hot-update.js": "/chunks/user-create.dc4df3471eeb2ed2b3d1.hot-update.js",
|
||||
"/chunks/user-create.0f84d6d095759bce0dbd.hot-update.js": "/chunks/user-create.0f84d6d095759bce0dbd.hot-update.js",
|
||||
"/chunks/user-create.242c21dfba3203d52ef2.hot-update.js": "/chunks/user-create.242c21dfba3203d52ef2.hot-update.js",
|
||||
"/chunks/user-create.266c0ca93a6735ef3a84.hot-update.js": "/chunks/user-create.266c0ca93a6735ef3a84.hot-update.js",
|
||||
"/chunks/user-create.1acc9e0da68e66d210a4.hot-update.js": "/chunks/user-create.1acc9e0da68e66d210a4.hot-update.js",
|
||||
"/chunks/user-create.dcb0117f4b7d769dc082.hot-update.js": "/chunks/user-create.dcb0117f4b7d769dc082.hot-update.js",
|
||||
"/chunks/user-create.5dfbd0729d493c839a29.hot-update.js": "/chunks/user-create.5dfbd0729d493c839a29.hot-update.js",
|
||||
"/chunks/user-create.73770f0976d9d5a25b8c.hot-update.js": "/chunks/user-create.73770f0976d9d5a25b8c.hot-update.js",
|
||||
"/chunks/user-create.54ae66ab0f6535ab88fd.hot-update.js": "/chunks/user-create.54ae66ab0f6535ab88fd.hot-update.js",
|
||||
"/chunks/user-create.71d6353646d0b450dc3a.hot-update.js": "/chunks/user-create.71d6353646d0b450dc3a.hot-update.js",
|
||||
"/chunks/user-create.4eb624ae9661c486f5e9.hot-update.js": "/chunks/user-create.4eb624ae9661c486f5e9.hot-update.js",
|
||||
"/chunks/user-create.f23c32bee25bc81f6689.hot-update.js": "/chunks/user-create.f23c32bee25bc81f6689.hot-update.js",
|
||||
"/chunks/user-create.85fe12a3027d6207f6f2.hot-update.js": "/chunks/user-create.85fe12a3027d6207f6f2.hot-update.js",
|
||||
"/chunks/user-create.c02151f6030597407506.hot-update.js": "/chunks/user-create.c02151f6030597407506.hot-update.js",
|
||||
"/chunks/user-create.17b4bfca823d5896046d.hot-update.js": "/chunks/user-create.17b4bfca823d5896046d.hot-update.js",
|
||||
"/chunks/user-create.adf62e112c213ee53ae5.hot-update.js": "/chunks/user-create.adf62e112c213ee53ae5.hot-update.js",
|
||||
"/chunks/user-create.9f42e3864e1b8da68fba.hot-update.js": "/chunks/user-create.9f42e3864e1b8da68fba.hot-update.js",
|
||||
"/chunks/user-create.10bb5e47f31788c3c76b.hot-update.js": "/chunks/user-create.10bb5e47f31788c3c76b.hot-update.js",
|
||||
"/chunks/user-create.7d2b032edb567a50bcd8.hot-update.js": "/chunks/user-create.7d2b032edb567a50bcd8.hot-update.js",
|
||||
"/chunks/user-create.8006779f958f7169e9d5.hot-update.js": "/chunks/user-create.8006779f958f7169e9d5.hot-update.js",
|
||||
"/js/main.69efc639b7a35270363d.hot-update.js": "/js/main.69efc639b7a35270363d.hot-update.js",
|
||||
"/chunks/user-create.69efc639b7a35270363d.hot-update.js": "/chunks/user-create.69efc639b7a35270363d.hot-update.js",
|
||||
"/chunks/users.1643485e962ee8d6de38.hot-update.js": "/chunks/users.1643485e962ee8d6de38.hot-update.js",
|
||||
"/chunks/users.c5edaed550eebf8241ec.hot-update.js": "/chunks/users.c5edaed550eebf8241ec.hot-update.js",
|
||||
"/chunks/users.1d23b81f37ced25c5000.hot-update.js": "/chunks/users.1d23b81f37ced25c5000.hot-update.js",
|
||||
"/chunks/users.95851214144197354979.hot-update.js": "/chunks/users.95851214144197354979.hot-update.js",
|
||||
"/chunks/users.ebf3344fcab1a32d2b99.hot-update.js": "/chunks/users.ebf3344fcab1a32d2b99.hot-update.js",
|
||||
"/chunks/user-create.c89e2097ceac3e5394d5.hot-update.js": "/chunks/user-create.c89e2097ceac3e5394d5.hot-update.js",
|
||||
"/js/main.41c24977104696892944.hot-update.js": "/js/main.41c24977104696892944.hot-update.js",
|
||||
"/chunks/user-create.41c24977104696892944.hot-update.js": "/chunks/user-create.41c24977104696892944.hot-update.js",
|
||||
"/chunks/users.41c24977104696892944.hot-update.js": "/chunks/users.41c24977104696892944.hot-update.js",
|
||||
"/chunks/users.94c5a3524848fcd48ce3.hot-update.js": "/chunks/users.94c5a3524848fcd48ce3.hot-update.js",
|
||||
"/js/main.c37139a7ae727fbb4c02.hot-update.js": "/js/main.c37139a7ae727fbb4c02.hot-update.js",
|
||||
"/js/main.75a7330f169a31271b4c.hot-update.js": "/js/main.75a7330f169a31271b4c.hot-update.js",
|
||||
"/chunks/users.75a7330f169a31271b4c.hot-update.js": "/chunks/users.75a7330f169a31271b4c.hot-update.js",
|
||||
"/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.cec600408276af5260fe.hot-update.js": "/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.cec600408276af5260fe.hot-update.js",
|
||||
"/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.dbdbf80723e41e072d01.hot-update.js": "/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.dbdbf80723e41e072d01.hot-update.js",
|
||||
"/chunks/users.2b4b9dbd972d7a9d7c83.hot-update.js": "/chunks/users.2b4b9dbd972d7a9d7c83.hot-update.js",
|
||||
"/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.d4f9806caf6c6d5f1344.hot-update.js": "/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.d4f9806caf6c6d5f1344.hot-update.js",
|
||||
"/js/main.55cf4e9bc02bec922581.hot-update.js": "/js/main.55cf4e9bc02bec922581.hot-update.js",
|
||||
"/js/main.b52ecb4afdc47584e38f.hot-update.js": "/js/main.b52ecb4afdc47584e38f.hot-update.js",
|
||||
"/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~74bf0fcb.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-index~chu~74bf0fcb.js?id=6b6737a58e371fc4434b",
|
||||
"/chunks/oasis/platba.js": "/chunks/oasis/platba.js?id=7805c58cc0a244525e88",
|
||||
"/chunks/oasis/platba~chunks/upgrade-billing~chunks/upgrade-plan.js": "/chunks/oasis/platba~chunks/upgrade-billing~chunks/upgrade-plan.js?id=4781f8460c7f0f8b21a5",
|
||||
"/chunks/users.js": "/chunks/users.js?id=12b2b13cacbe991481bb",
|
||||
"/vendors~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-i~0a9c5e33.js": "/vendors~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-i~0a9c5e33.js?id=b28978d3c8aae9b949a5",
|
||||
"/vendors~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-i~8394cf85.js": "/vendors~chunks/admin-account~chunks/app-appearance~chunks/app-billings~chunks/app-email~chunks/app-i~8394cf85.js?id=d25da0762af813ea588c",
|
||||
"/chunks/oasis/platba.f2d7a060bf88fd2d9403.hot-update.js": "/chunks/oasis/platba.f2d7a060bf88fd2d9403.hot-update.js",
|
||||
"/chunks/oasis/platba.79f86d9923a5b3d8f77b.hot-update.js": "/chunks/oasis/platba.79f86d9923a5b3d8f77b.hot-update.js",
|
||||
"/chunks/oasis/platba.960030e55311860adad8.hot-update.js": "/chunks/oasis/platba.960030e55311860adad8.hot-update.js",
|
||||
"/js/main.b089e299b2beda8c4435.hot-update.js": "/js/main.b089e299b2beda8c4435.hot-update.js",
|
||||
"/chunks/oasis/platba.0975d1f12bf7fcd32825.hot-update.js": "/chunks/oasis/platba.0975d1f12bf7fcd32825.hot-update.js",
|
||||
"/chunks/oasis/platba.b1513de9a1f782c9fcf9.hot-update.js": "/chunks/oasis/platba.b1513de9a1f782c9fcf9.hot-update.js",
|
||||
"/chunks/oasis/platba.6101685137fe4c159b2f.hot-update.js": "/chunks/oasis/platba.6101685137fe4c159b2f.hot-update.js",
|
||||
"/js/main.4e81e4ea624ef84cb166.hot-update.js": "/js/main.4e81e4ea624ef84cb166.hot-update.js",
|
||||
"/chunks/oasis/platba.4e81e4ea624ef84cb166.hot-update.js": "/chunks/oasis/platba.4e81e4ea624ef84cb166.hot-update.js",
|
||||
"/js/main.9d41d45200d1397f7d1f.hot-update.js": "/js/main.9d41d45200d1397f7d1f.hot-update.js",
|
||||
"/chunks/oasis/platba.9d41d45200d1397f7d1f.hot-update.js": "/chunks/oasis/platba.9d41d45200d1397f7d1f.hot-update.js",
|
||||
"/chunks/oasis/platba.7295a36fd456e216edb5.hot-update.js": "/chunks/oasis/platba.7295a36fd456e216edb5.hot-update.js",
|
||||
"/chunks/oasis/platba.42cfd9642e72806e1d73.hot-update.js": "/chunks/oasis/platba.42cfd9642e72806e1d73.hot-update.js",
|
||||
"/chunks/oasis/platba.eb85a1eef45f79ca4c3e.hot-update.js": "/chunks/oasis/platba.eb85a1eef45f79ca4c3e.hot-update.js",
|
||||
"/chunks/admin-account.9b07cca19b41d1b68e00.hot-update.js": "/chunks/admin-account.9b07cca19b41d1b68e00.hot-update.js",
|
||||
"/chunks/app-setup.9b07cca19b41d1b68e00.hot-update.js": "/chunks/app-setup.9b07cca19b41d1b68e00.hot-update.js",
|
||||
"/chunks/billings-detail.9b07cca19b41d1b68e00.hot-update.js": "/chunks/billings-detail.9b07cca19b41d1b68e00.hot-update.js",
|
||||
"/chunks/database.9b07cca19b41d1b68e00.hot-update.js": "/chunks/database.9b07cca19b41d1b68e00.hot-update.js",
|
||||
"/chunks/environment-setup.9b07cca19b41d1b68e00.hot-update.js": "/chunks/environment-setup.9b07cca19b41d1b68e00.hot-update.js",
|
||||
"/chunks/installation-disclaimer.9b07cca19b41d1b68e00.hot-update.js": "/chunks/installation-disclaimer.9b07cca19b41d1b68e00.hot-update.js",
|
||||
"/chunks/purchase-code.9b07cca19b41d1b68e00.hot-update.js": "/chunks/purchase-code.9b07cca19b41d1b68e00.hot-update.js",
|
||||
"/chunks/stripe-credentials.9b07cca19b41d1b68e00.hot-update.js": "/chunks/stripe-credentials.9b07cca19b41d1b68e00.hot-update.js",
|
||||
"/chunks/subscription-plans.9b07cca19b41d1b68e00.hot-update.js": "/chunks/subscription-plans.9b07cca19b41d1b68e00.hot-update.js",
|
||||
"/chunks/subscription-service.9b07cca19b41d1b68e00.hot-update.js": "/chunks/subscription-service.9b07cca19b41d1b68e00.hot-update.js",
|
||||
"/chunks/oasis/platba.cba2f2943cb866639e8c.hot-update.js": "/chunks/oasis/platba.cba2f2943cb866639e8c.hot-update.js",
|
||||
"/js/main.031a4600b295390c58e8.hot-update.js": "/js/main.031a4600b295390c58e8.hot-update.js",
|
||||
"/chunks/admin-account.031a4600b295390c58e8.hot-update.js": "/chunks/admin-account.031a4600b295390c58e8.hot-update.js",
|
||||
"/chunks/app-setup.031a4600b295390c58e8.hot-update.js": "/chunks/app-setup.031a4600b295390c58e8.hot-update.js",
|
||||
"/chunks/billings-detail.031a4600b295390c58e8.hot-update.js": "/chunks/billings-detail.031a4600b295390c58e8.hot-update.js",
|
||||
"/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.031a4600b295390c58e8.hot-update.js": "/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.031a4600b295390c58e8.hot-update.js",
|
||||
"/chunks/database.031a4600b295390c58e8.hot-update.js": "/chunks/database.031a4600b295390c58e8.hot-update.js",
|
||||
"/chunks/environment-setup.031a4600b295390c58e8.hot-update.js": "/chunks/environment-setup.031a4600b295390c58e8.hot-update.js",
|
||||
"/chunks/installation-disclaimer.031a4600b295390c58e8.hot-update.js": "/chunks/installation-disclaimer.031a4600b295390c58e8.hot-update.js",
|
||||
"/chunks/purchase-code.031a4600b295390c58e8.hot-update.js": "/chunks/purchase-code.031a4600b295390c58e8.hot-update.js",
|
||||
"/chunks/stripe-credentials.031a4600b295390c58e8.hot-update.js": "/chunks/stripe-credentials.031a4600b295390c58e8.hot-update.js",
|
||||
"/chunks/subscription-plans.031a4600b295390c58e8.hot-update.js": "/chunks/subscription-plans.031a4600b295390c58e8.hot-update.js",
|
||||
"/chunks/subscription-service.031a4600b295390c58e8.hot-update.js": "/chunks/subscription-service.031a4600b295390c58e8.hot-update.js",
|
||||
"/chunks/user-create.031a4600b295390c58e8.hot-update.js": "/chunks/user-create.031a4600b295390c58e8.hot-update.js",
|
||||
"/chunks/users.031a4600b295390c58e8.hot-update.js": "/chunks/users.031a4600b295390c58e8.hot-update.js",
|
||||
"/js/main.e09be2a3c6f157576cd1.hot-update.js": "/js/main.e09be2a3c6f157576cd1.hot-update.js",
|
||||
"/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.e09be2a3c6f157576cd1.hot-update.js": "/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.e09be2a3c6f157576cd1.hot-update.js",
|
||||
"/chunks/user-create.e09be2a3c6f157576cd1.hot-update.js": "/chunks/user-create.e09be2a3c6f157576cd1.hot-update.js",
|
||||
"/chunks/users.e09be2a3c6f157576cd1.hot-update.js": "/chunks/users.e09be2a3c6f157576cd1.hot-update.js",
|
||||
"/js/main.0f9a8ae65e8eef72679b.hot-update.js": "/js/main.0f9a8ae65e8eef72679b.hot-update.js",
|
||||
"/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.0f9a8ae65e8eef72679b.hot-update.js": "/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.0f9a8ae65e8eef72679b.hot-update.js",
|
||||
"/chunks/user-create.0f9a8ae65e8eef72679b.hot-update.js": "/chunks/user-create.0f9a8ae65e8eef72679b.hot-update.js",
|
||||
"/chunks/users.0f9a8ae65e8eef72679b.hot-update.js": "/chunks/users.0f9a8ae65e8eef72679b.hot-update.js",
|
||||
"/js/main.71290e1b9d55d97cdb77.hot-update.js": "/js/main.71290e1b9d55d97cdb77.hot-update.js",
|
||||
"/js/main.7bea7c94a5a2ebfec4aa.hot-update.js": "/js/main.7bea7c94a5a2ebfec4aa.hot-update.js",
|
||||
"/js/main.b35488f9ab66392c897e.hot-update.js": "/js/main.b35488f9ab66392c897e.hot-update.js",
|
||||
"/chunks/user-create.b35488f9ab66392c897e.hot-update.js": "/chunks/user-create.b35488f9ab66392c897e.hot-update.js",
|
||||
"/chunks/users.b35488f9ab66392c897e.hot-update.js": "/chunks/users.b35488f9ab66392c897e.hot-update.js",
|
||||
"/js/main.7e1fd694df45763849ec.hot-update.js": "/js/main.7e1fd694df45763849ec.hot-update.js",
|
||||
"/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.7e1fd694df45763849ec.hot-update.js": "/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.7e1fd694df45763849ec.hot-update.js",
|
||||
"/chunks/user-create.7e1fd694df45763849ec.hot-update.js": "/chunks/user-create.7e1fd694df45763849ec.hot-update.js",
|
||||
"/chunks/users.7e1fd694df45763849ec.hot-update.js": "/chunks/users.7e1fd694df45763849ec.hot-update.js",
|
||||
"/chunks/oasis/platba.42fd0177e215d3516bfe.hot-update.js": "/chunks/oasis/platba.42fd0177e215d3516bfe.hot-update.js",
|
||||
"/chunks/oasis/platba.2bfe3d5044285222d2a5.hot-update.js": "/chunks/oasis/platba.2bfe3d5044285222d2a5.hot-update.js",
|
||||
"/chunks/oasis/platba.f0e5d3accb7dbdddb2a1.hot-update.js": "/chunks/oasis/platba.f0e5d3accb7dbdddb2a1.hot-update.js",
|
||||
"/chunks/oasis/platba.53d1b1594090e41edee0.hot-update.js": "/chunks/oasis/platba.53d1b1594090e41edee0.hot-update.js",
|
||||
"/chunks/oasis/platba.88046b64ea7a1ecadc41.hot-update.js": "/chunks/oasis/platba.88046b64ea7a1ecadc41.hot-update.js",
|
||||
"/chunks/oasis/platba.8470878c9420955d827c.hot-update.js": "/chunks/oasis/platba.8470878c9420955d827c.hot-update.js",
|
||||
"/chunks/oasis/platba.f770bc9c5f7ce1baf7bd.hot-update.js": "/chunks/oasis/platba.f770bc9c5f7ce1baf7bd.hot-update.js",
|
||||
"/chunks/oasis/platba.c22211f85d4e9c4f0187.hot-update.js": "/chunks/oasis/platba.c22211f85d4e9c4f0187.hot-update.js",
|
||||
"/chunks/oasis/platba.c6784090b07e1acea3a4.hot-update.js": "/chunks/oasis/platba.c6784090b07e1acea3a4.hot-update.js",
|
||||
"/chunks/oasis/platba.6dca55ec338a4adf73d5.hot-update.js": "/chunks/oasis/platba.6dca55ec338a4adf73d5.hot-update.js",
|
||||
"/chunks/oasis/platba.c179b9444a3c304bd743.hot-update.js": "/chunks/oasis/platba.c179b9444a3c304bd743.hot-update.js",
|
||||
"/chunks/oasis/platba.e64577edb6db58c5ce89.hot-update.js": "/chunks/oasis/platba.e64577edb6db58c5ce89.hot-update.js",
|
||||
"/chunks/oasis/platba.752087d6897e8437d5fd.hot-update.js": "/chunks/oasis/platba.752087d6897e8437d5fd.hot-update.js",
|
||||
"/chunks/oasis/platba.4a0d0bb38b403c4f63dc.hot-update.js": "/chunks/oasis/platba.4a0d0bb38b403c4f63dc.hot-update.js",
|
||||
"/chunks/oasis/platba.677433c80d5c448beadb.hot-update.js": "/chunks/oasis/platba.677433c80d5c448beadb.hot-update.js",
|
||||
"/chunks/oasis/platba.2a47eb5d8bdf839e007c.hot-update.js": "/chunks/oasis/platba.2a47eb5d8bdf839e007c.hot-update.js",
|
||||
"/chunks/oasis/platba.d722b95e88e73ea2eb8f.hot-update.js": "/chunks/oasis/platba.d722b95e88e73ea2eb8f.hot-update.js",
|
||||
"/chunks/oasis/platba.c854da135da3e531f267.hot-update.js": "/chunks/oasis/platba.c854da135da3e531f267.hot-update.js",
|
||||
"/chunks/oasis/platba.15eb2d0c40be7dab8890.hot-update.js": "/chunks/oasis/platba.15eb2d0c40be7dab8890.hot-update.js",
|
||||
"/chunks/oasis/platba.fe7c9541b5daa645c34b.hot-update.js": "/chunks/oasis/platba.fe7c9541b5daa645c34b.hot-update.js",
|
||||
"/chunks/oasis/platba.17abba54e59018b56c20.hot-update.js": "/chunks/oasis/platba.17abba54e59018b56c20.hot-update.js",
|
||||
"/chunks/oasis/platba.3433a1392fa4859957a5.hot-update.js": "/chunks/oasis/platba.3433a1392fa4859957a5.hot-update.js",
|
||||
"/chunks/oasis/platba.46173a77ba5029b94428.hot-update.js": "/chunks/oasis/platba.46173a77ba5029b94428.hot-update.js",
|
||||
"/js/main.8665af5c4b5bb3b34562.hot-update.js": "/js/main.8665af5c4b5bb3b34562.hot-update.js",
|
||||
"/chunks/files~chunks/oasis/platba~chunks/settings-subscription~chunks/shared-files~chunks/shared/file~9d1352fd.js": "/chunks/files~chunks/oasis/platba~chunks/settings-subscription~chunks/shared-files~chunks/shared/file~9d1352fd.js?id=4030b241faac6b31341f",
|
||||
"/chunks/oasis/platba.8665af5c4b5bb3b34562.hot-update.js": "/chunks/oasis/platba.8665af5c4b5bb3b34562.hot-update.js",
|
||||
"/chunks/oasis/platba.80793d2faf022b06bc1b.hot-update.js": "/chunks/oasis/platba.80793d2faf022b06bc1b.hot-update.js",
|
||||
"/chunks/oasis/platba.7e7c5b2678cf3b582143.hot-update.js": "/chunks/oasis/platba.7e7c5b2678cf3b582143.hot-update.js",
|
||||
"/chunks/oasis/platba.faec9574fd98fd673669.hot-update.js": "/chunks/oasis/platba.faec9574fd98fd673669.hot-update.js",
|
||||
"/chunks/oasis/platba.38cb9664a00c8d666200.hot-update.js": "/chunks/oasis/platba.38cb9664a00c8d666200.hot-update.js",
|
||||
"/js/main.936a7e143e3f61eb3914.hot-update.js": "/js/main.936a7e143e3f61eb3914.hot-update.js",
|
||||
"/chunks/oasis/platba.1808d1c8a24374407483.hot-update.js": "/chunks/oasis/platba.1808d1c8a24374407483.hot-update.js",
|
||||
"/chunks/oasis/platba.1a91b409bac6643cd1ea.hot-update.js": "/chunks/oasis/platba.1a91b409bac6643cd1ea.hot-update.js",
|
||||
"/js/main.95d371bd6f737548111d.hot-update.js": "/js/main.95d371bd6f737548111d.hot-update.js",
|
||||
"/chunks/oasis/platba.95d371bd6f737548111d.hot-update.js": "/chunks/oasis/platba.95d371bd6f737548111d.hot-update.js",
|
||||
"/js/main.f95f311e9ef928cbdb24.hot-update.js": "/js/main.f95f311e9ef928cbdb24.hot-update.js",
|
||||
"/chunks/oasis/platba.f95f311e9ef928cbdb24.hot-update.js": "/chunks/oasis/platba.f95f311e9ef928cbdb24.hot-update.js",
|
||||
"/chunks/oasis/platba.f70ad75ee7d8391c7ee9.hot-update.js": "/chunks/oasis/platba.f70ad75ee7d8391c7ee9.hot-update.js",
|
||||
"/chunks/oasis/platba.311873ae6c05a6ed334c.hot-update.js": "/chunks/oasis/platba.311873ae6c05a6ed334c.hot-update.js",
|
||||
"/chunks/oasis/platba.ab3e0239345bccbd7ceb.hot-update.js": "/chunks/oasis/platba.ab3e0239345bccbd7ceb.hot-update.js",
|
||||
"/chunks/oasis/platba.549be1f1e9c63457b0b3.hot-update.js": "/chunks/oasis/platba.549be1f1e9c63457b0b3.hot-update.js",
|
||||
"/chunks/oasis/platba.3e92922e3734893c7f75.hot-update.js": "/chunks/oasis/platba.3e92922e3734893c7f75.hot-update.js",
|
||||
"/chunks/oasis/platba.a313317565ce32b43ea2.hot-update.js": "/chunks/oasis/platba.a313317565ce32b43ea2.hot-update.js",
|
||||
"/chunks/oasis/platba.533a4dfdf46a35484a36.hot-update.js": "/chunks/oasis/platba.533a4dfdf46a35484a36.hot-update.js",
|
||||
"/chunks/oasis/platba.f009c76893caadff04e9.hot-update.js": "/chunks/oasis/platba.f009c76893caadff04e9.hot-update.js",
|
||||
"/chunks/oasis/platba.a611d3444f94bfdce48a.hot-update.js": "/chunks/oasis/platba.a611d3444f94bfdce48a.hot-update.js",
|
||||
"/chunks/oasis/platba.da13b9373a1e8b01b6be.hot-update.js": "/chunks/oasis/platba.da13b9373a1e8b01b6be.hot-update.js",
|
||||
"/chunks/oasis/platba.94b702f11bbb84b2a26a.hot-update.js": "/chunks/oasis/platba.94b702f11bbb84b2a26a.hot-update.js",
|
||||
"/chunks/oasis/platba.7f2261220d4558187716.hot-update.js": "/chunks/oasis/platba.7f2261220d4558187716.hot-update.js",
|
||||
"/chunks/oasis/platba.0cc8322034321a3f07a5.hot-update.js": "/chunks/oasis/platba.0cc8322034321a3f07a5.hot-update.js",
|
||||
"/chunks/oasis/platba.097292fe9503aae25f5c.hot-update.js": "/chunks/oasis/platba.097292fe9503aae25f5c.hot-update.js",
|
||||
"/chunks/oasis/platba.e13e95a4c77c1e976d93.hot-update.js": "/chunks/oasis/platba.e13e95a4c77c1e976d93.hot-update.js",
|
||||
"/chunks/oasis/platba.0b778201954aeee92d9e.hot-update.js": "/chunks/oasis/platba.0b778201954aeee92d9e.hot-update.js",
|
||||
"/chunks/oasis/platba.f1ff98bc8e156ba0717a.hot-update.js": "/chunks/oasis/platba.f1ff98bc8e156ba0717a.hot-update.js",
|
||||
"/chunks/oasis/platba.fce89888954988c4aa4a.hot-update.js": "/chunks/oasis/platba.fce89888954988c4aa4a.hot-update.js",
|
||||
"/chunks/oasis/platba.1ce9cba436d1432e1e7b.hot-update.js": "/chunks/oasis/platba.1ce9cba436d1432e1e7b.hot-update.js",
|
||||
"/chunks/oasis/platba.088494b6c1bcac641ea8.hot-update.js": "/chunks/oasis/platba.088494b6c1bcac641ea8.hot-update.js",
|
||||
"/chunks/oasis/platba.3047a4259cf8eced1123.hot-update.js": "/chunks/oasis/platba.3047a4259cf8eced1123.hot-update.js",
|
||||
"/chunks/oasis/platba.7bd73539c1fa196e533a.hot-update.js": "/chunks/oasis/platba.7bd73539c1fa196e533a.hot-update.js",
|
||||
"/chunks/oasis/platba.83349d896d0f64bf6b61.hot-update.js": "/chunks/oasis/platba.83349d896d0f64bf6b61.hot-update.js",
|
||||
"/chunks/oasis/platba.36d8bb78dffde4b370ac.hot-update.js": "/chunks/oasis/platba.36d8bb78dffde4b370ac.hot-update.js",
|
||||
"/chunks/oasis/platba.e14b1782f40a456176f6.hot-update.js": "/chunks/oasis/platba.e14b1782f40a456176f6.hot-update.js",
|
||||
"/chunks/oasis/platba.0079b4d40fea3603cb73.hot-update.js": "/chunks/oasis/platba.0079b4d40fea3603cb73.hot-update.js",
|
||||
"/chunks/oasis/platba.f24075402b37513bd698.hot-update.js": "/chunks/oasis/platba.f24075402b37513bd698.hot-update.js",
|
||||
"/chunks/oasis/platba.97687a998911e67890ea.hot-update.js": "/chunks/oasis/platba.97687a998911e67890ea.hot-update.js",
|
||||
"/chunks/oasis/platba.3b905c02d19f06f61235.hot-update.js": "/chunks/oasis/platba.3b905c02d19f06f61235.hot-update.js",
|
||||
"/chunks/oasis/platba.d010b9f954f6daafb11f.hot-update.js": "/chunks/oasis/platba.d010b9f954f6daafb11f.hot-update.js",
|
||||
"/chunks/oasis/platba.6a9e275749c1e5c79937.hot-update.js": "/chunks/oasis/platba.6a9e275749c1e5c79937.hot-update.js",
|
||||
"/chunks/oasis/platba.7b807076b0666c4cd619.hot-update.js": "/chunks/oasis/platba.7b807076b0666c4cd619.hot-update.js",
|
||||
"/chunks/oasis/platba.56b15fbaf67d621e3e83.hot-update.js": "/chunks/oasis/platba.56b15fbaf67d621e3e83.hot-update.js",
|
||||
"/chunks/oasis/platba.66260c70f44ceeabfa27.hot-update.js": "/chunks/oasis/platba.66260c70f44ceeabfa27.hot-update.js",
|
||||
"/chunks/oasis/platba.387fbc7cc613892f7f4d.hot-update.js": "/chunks/oasis/platba.387fbc7cc613892f7f4d.hot-update.js",
|
||||
"/chunks/oasis/platba.d7b9c7357f63d3a5b75d.hot-update.js": "/chunks/oasis/platba.d7b9c7357f63d3a5b75d.hot-update.js",
|
||||
"/chunks/oasis/platba.a22fd03d833229ca8765.hot-update.js": "/chunks/oasis/platba.a22fd03d833229ca8765.hot-update.js",
|
||||
"/chunks/oasis/platba.1586fec26eed41a695d2.hot-update.js": "/chunks/oasis/platba.1586fec26eed41a695d2.hot-update.js",
|
||||
"/chunks/oasis/platba.9a79174527f191ff0b5e.hot-update.js": "/chunks/oasis/platba.9a79174527f191ff0b5e.hot-update.js",
|
||||
"/chunks/oasis/platba.e5077bc37cb72c3edd7e.hot-update.js": "/chunks/oasis/platba.e5077bc37cb72c3edd7e.hot-update.js",
|
||||
"/chunks/oasis/platba.986e6b3c9af7ed074912.hot-update.js": "/chunks/oasis/platba.986e6b3c9af7ed074912.hot-update.js",
|
||||
"/chunks/oasis/platba.b1719d99dc48ed7f5077.hot-update.js": "/chunks/oasis/platba.b1719d99dc48ed7f5077.hot-update.js",
|
||||
"/chunks/oasis/platba.6724e6452a635403e038.hot-update.js": "/chunks/oasis/platba.6724e6452a635403e038.hot-update.js",
|
||||
"/js/main.bfcc51c8cbe19d02e689.hot-update.js": "/js/main.bfcc51c8cbe19d02e689.hot-update.js",
|
||||
"/chunks/oasis/platba.bfcc51c8cbe19d02e689.hot-update.js": "/chunks/oasis/platba.bfcc51c8cbe19d02e689.hot-update.js",
|
||||
"/chunks/oasis/platba.24a6a7a972761fae8ba1.hot-update.js": "/chunks/oasis/platba.24a6a7a972761fae8ba1.hot-update.js",
|
||||
"/chunks/oasis/platba.a2302361e8c18757ed61.hot-update.js": "/chunks/oasis/platba.a2302361e8c18757ed61.hot-update.js",
|
||||
"/chunks/oasis/platba.59c33cfbcba62481c77a.hot-update.js": "/chunks/oasis/platba.59c33cfbcba62481c77a.hot-update.js",
|
||||
"/chunks/oasis/platba.2654656e07f9c3d6b517.hot-update.js": "/chunks/oasis/platba.2654656e07f9c3d6b517.hot-update.js",
|
||||
"/chunks/oasis/platba.343235256283a5425feb.hot-update.js": "/chunks/oasis/platba.343235256283a5425feb.hot-update.js",
|
||||
"/chunks/oasis/platba.d91711ab4e599d95ac40.hot-update.js": "/chunks/oasis/platba.d91711ab4e599d95ac40.hot-update.js",
|
||||
"/chunks/oasis/platba.7c440bd5167b5f691bc1.hot-update.js": "/chunks/oasis/platba.7c440bd5167b5f691bc1.hot-update.js",
|
||||
"/chunks/oasis/platba.f78f245efdfd2705115d.hot-update.js": "/chunks/oasis/platba.f78f245efdfd2705115d.hot-update.js",
|
||||
"/chunks/oasis/platba.520ba6d75a64d6f10fdc.hot-update.js": "/chunks/oasis/platba.520ba6d75a64d6f10fdc.hot-update.js",
|
||||
"/chunks/oasis/platba.06ace6b4690832e8d596.hot-update.js": "/chunks/oasis/platba.06ace6b4690832e8d596.hot-update.js",
|
||||
"/chunks/oasis/platba.38a0815c3b0389ce5797.hot-update.js": "/chunks/oasis/platba.38a0815c3b0389ce5797.hot-update.js",
|
||||
"/js/main.d67879825385082f0d36.hot-update.js": "/js/main.d67879825385082f0d36.hot-update.js",
|
||||
"/chunks/oasis/platba.40f4fdbfe7c883c81eec.hot-update.js": "/chunks/oasis/platba.40f4fdbfe7c883c81eec.hot-update.js",
|
||||
"/chunks/oasis/platba.9a1b581e7c8bf5a6e420.hot-update.js": "/chunks/oasis/platba.9a1b581e7c8bf5a6e420.hot-update.js",
|
||||
"/chunks/oasis/platba.a303b57f74a3b5c0e553.hot-update.js": "/chunks/oasis/platba.a303b57f74a3b5c0e553.hot-update.js",
|
||||
"/chunks/oasis/platba.73ec768e1fe32c114a28.hot-update.js": "/chunks/oasis/platba.73ec768e1fe32c114a28.hot-update.js",
|
||||
"/chunks/oasis/platba.3bc4d9afa4d0dc248145.hot-update.js": "/chunks/oasis/platba.3bc4d9afa4d0dc248145.hot-update.js",
|
||||
"/chunks/oasis/platba.7b31d89b8593042dbcbd.hot-update.js": "/chunks/oasis/platba.7b31d89b8593042dbcbd.hot-update.js",
|
||||
"/chunks/oasis/platba.5cb5e899ea459f99df6d.hot-update.js": "/chunks/oasis/platba.5cb5e899ea459f99df6d.hot-update.js",
|
||||
"/chunks/oasis/platba.52a9e7ecff39884a88b0.hot-update.js": "/chunks/oasis/platba.52a9e7ecff39884a88b0.hot-update.js",
|
||||
"/chunks/oasis/platba.585762ed0d7dc06714fd.hot-update.js": "/chunks/oasis/platba.585762ed0d7dc06714fd.hot-update.js",
|
||||
"/chunks/sign-up.f07bfc6e1ac48990d173.hot-update.js": "/chunks/sign-up.f07bfc6e1ac48990d173.hot-update.js",
|
||||
"/chunks/oasis/platba.7d9316390f22ac19e2d0.hot-update.js": "/chunks/oasis/platba.7d9316390f22ac19e2d0.hot-update.js",
|
||||
"/chunks/oasis/platba.c61378e3b0b6389cb731.hot-update.js": "/chunks/oasis/platba.c61378e3b0b6389cb731.hot-update.js",
|
||||
"/chunks/oasis/platba.54736d5bf911a2179219.hot-update.js": "/chunks/oasis/platba.54736d5bf911a2179219.hot-update.js",
|
||||
"/chunks/oasis/platba.3012a18c6b196cc483bc.hot-update.js": "/chunks/oasis/platba.3012a18c6b196cc483bc.hot-update.js"
|
||||
"/vendors~chunks/files~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/file-browser~ch~52c14f2e.js": "/vendors~chunks/files~chunks/platform~chunks/shared~chunks/shared-files~chunks/shared/file-browser~ch~52c14f2e.js?id=66afa0e341251a68c3d3",
|
||||
"/js/main.3b480391731f365a3f52.hot-update.js": "/js/main.3b480391731f365a3f52.hot-update.js",
|
||||
"/chunks/sign-up.3b480391731f365a3f52.hot-update.js": "/chunks/sign-up.3b480391731f365a3f52.hot-update.js",
|
||||
"/js/main.b99919a59e160ee65c8a.hot-update.js": "/js/main.b99919a59e160ee65c8a.hot-update.js",
|
||||
"/js/main.45d1c61bb2e9e8cf0302.hot-update.js": "/js/main.45d1c61bb2e9e8cf0302.hot-update.js",
|
||||
"/chunks/oasis/platba~chunks/upgrade-billing~chunks/upgrade-plan.21f7553d47cd910da71f.hot-update.js": "/chunks/oasis/platba~chunks/upgrade-billing~chunks/upgrade-plan.21f7553d47cd910da71f.hot-update.js",
|
||||
"/chunks/oasis/platba~chunks/upgrade-billing~chunks/upgrade-plan.8fe37df7d20aae5efa18.hot-update.js": "/chunks/oasis/platba~chunks/upgrade-billing~chunks/upgrade-plan.8fe37df7d20aae5efa18.hot-update.js",
|
||||
"/js/main.3965bf7a3c03b257c027.hot-update.js": "/js/main.3965bf7a3c03b257c027.hot-update.js",
|
||||
"/chunks/upgrade-billing.3965bf7a3c03b257c027.hot-update.js": "/chunks/upgrade-billing.3965bf7a3c03b257c027.hot-update.js",
|
||||
"/chunks/upgrade-plan.3965bf7a3c03b257c027.hot-update.js": "/chunks/upgrade-plan.3965bf7a3c03b257c027.hot-update.js",
|
||||
"/chunks/upgrade-plan.15d252c8c555b127c42b.hot-update.js": "/chunks/upgrade-plan.15d252c8c555b127c42b.hot-update.js",
|
||||
"/chunks/oasis/platba~chunks/upgrade-billing~chunks/upgrade-plan.3a539ad9e2ef806281f8.hot-update.js": "/chunks/oasis/platba~chunks/upgrade-billing~chunks/upgrade-plan.3a539ad9e2ef806281f8.hot-update.js",
|
||||
"/chunks/upgrade-plan.9a9ce5e9b7e36469f74e.hot-update.js": "/chunks/upgrade-plan.9a9ce5e9b7e36469f74e.hot-update.js",
|
||||
"/chunks/upgrade-plan.ede8c9e527137d31a622.hot-update.js": "/chunks/upgrade-plan.ede8c9e527137d31a622.hot-update.js",
|
||||
"/chunks/sign-up.f3d31da706b7dcb3a4ba.hot-update.js": "/chunks/sign-up.f3d31da706b7dcb3a4ba.hot-update.js",
|
||||
"/chunks/sign-up.f745f46af4eead0393c7.hot-update.js": "/chunks/sign-up.f745f46af4eead0393c7.hot-update.js",
|
||||
"/chunks/upgrade-billing.401f6b87c092047810c0.hot-update.js": "/chunks/upgrade-billing.401f6b87c092047810c0.hot-update.js",
|
||||
"/js/main.c80c8fc3f6218d5e6816.hot-update.js": "/js/main.c80c8fc3f6218d5e6816.hot-update.js",
|
||||
"/js/main.eb0461bd5943997e26af.hot-update.js": "/js/main.eb0461bd5943997e26af.hot-update.js",
|
||||
"/js/main.758ad421dd696a61c775.hot-update.js": "/js/main.758ad421dd696a61c775.hot-update.js",
|
||||
"/js/main.ab71c889f8d1e54b5b98.hot-update.js": "/js/main.ab71c889f8d1e54b5b98.hot-update.js",
|
||||
"/js/main.229d883586f78d0e6d3c.hot-update.js": "/js/main.229d883586f78d0e6d3c.hot-update.js",
|
||||
"/js/main.a61c752fd4acec546d0c.hot-update.js": "/js/main.a61c752fd4acec546d0c.hot-update.js",
|
||||
"/js/main.bab802281f4e57253350.hot-update.js": "/js/main.bab802281f4e57253350.hot-update.js",
|
||||
"/js/main.d0d5a027ce7a2506cd84.hot-update.js": "/js/main.d0d5a027ce7a2506cd84.hot-update.js",
|
||||
"/chunks/upgrade-plan.c1f75fabde65df187895.hot-update.js": "/chunks/upgrade-plan.c1f75fabde65df187895.hot-update.js",
|
||||
"/chunks/upgrade-billing.1f9bf9b4bc3242ba97d4.hot-update.js": "/chunks/upgrade-billing.1f9bf9b4bc3242ba97d4.hot-update.js",
|
||||
"/js/main.c021f4f05b81201d60ea.hot-update.js": "/js/main.c021f4f05b81201d60ea.hot-update.js",
|
||||
"/chunks/upgrade-billing.c021f4f05b81201d60ea.hot-update.js": "/chunks/upgrade-billing.c021f4f05b81201d60ea.hot-update.js",
|
||||
"/chunks/upgrade-plan.c021f4f05b81201d60ea.hot-update.js": "/chunks/upgrade-plan.c021f4f05b81201d60ea.hot-update.js",
|
||||
"/chunks/upgrade-billing.5b3d4d331b634d87c44d.hot-update.js": "/chunks/upgrade-billing.5b3d4d331b634d87c44d.hot-update.js",
|
||||
"/chunks/upgrade-billing.5547ab6008a5996a98b6.hot-update.js": "/chunks/upgrade-billing.5547ab6008a5996a98b6.hot-update.js",
|
||||
"/chunks/upgrade-billing.b26f4786a324bbd9cbd4.hot-update.js": "/chunks/upgrade-billing.b26f4786a324bbd9cbd4.hot-update.js",
|
||||
"/chunks/upgrade-billing.ad94563aa4b2181888c5.hot-update.js": "/chunks/upgrade-billing.ad94563aa4b2181888c5.hot-update.js",
|
||||
"/chunks/sign-up.e8a4dab23ad7f21529fa.hot-update.js": "/chunks/sign-up.e8a4dab23ad7f21529fa.hot-update.js",
|
||||
"/chunks/sign-in.f1bd5c8d04bcb5c18126.hot-update.js": "/chunks/sign-in.f1bd5c8d04bcb5c18126.hot-update.js",
|
||||
"/js/main.ffc459445ac0b65eb2e3.hot-update.js": "/js/main.ffc459445ac0b65eb2e3.hot-update.js",
|
||||
"/chunks/sign-up.ffc459445ac0b65eb2e3.hot-update.js": "/chunks/sign-up.ffc459445ac0b65eb2e3.hot-update.js",
|
||||
"/js/main.f2c6c4eca35dbea2b7e9.hot-update.js": "/js/main.f2c6c4eca35dbea2b7e9.hot-update.js",
|
||||
"/chunks/user-create.6515bf69d96cf308f3bf.hot-update.js": "/chunks/user-create.6515bf69d96cf308f3bf.hot-update.js",
|
||||
"/js/main.f067e231445340555f56.hot-update.js": "/js/main.f067e231445340555f56.hot-update.js",
|
||||
"/chunks/user-create.f067e231445340555f56.hot-update.js": "/chunks/user-create.f067e231445340555f56.hot-update.js",
|
||||
"/js/main.640c17e6e068fed6dedf.hot-update.js": "/js/main.640c17e6e068fed6dedf.hot-update.js",
|
||||
"/js/main.ad221a56a771ab3db438.hot-update.js": "/js/main.ad221a56a771ab3db438.hot-update.js",
|
||||
"/js/main.59227361266169b6d123.hot-update.js": "/js/main.59227361266169b6d123.hot-update.js"
|
||||
}
|
||||
|
||||
232
resources/js/Oasis/Admin/UserCreate.vue
Normal file
232
resources/js/Oasis/Admin/UserCreate.vue
Normal file
@@ -0,0 +1,232 @@
|
||||
<template>
|
||||
<div id="single-page">
|
||||
<div id="page-content" class="small-width">
|
||||
<MobileHeader :title="$router.currentRoute.meta.title"/>
|
||||
<PageHeader :can-back="true" :title="$router.currentRoute.meta.title"/>
|
||||
|
||||
<div class="content-page">
|
||||
<ValidationObserver @submit.prevent="createUser" ref="createUser" v-slot="{ invalid }" tag="form" class="form block-form">
|
||||
|
||||
<div class="form-group">
|
||||
<FormLabel>{{ $t('admin_page_user.create_user.group_details') }}</FormLabel>
|
||||
|
||||
<!--Avatar-->
|
||||
<div class="block-wrapper">
|
||||
<label>{{ $t('admin_page_user.create_user.avatar') }}</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="avatar" v-slot="{ errors }">
|
||||
<ImageInput v-model="user.avatar" :error="errors[0]" />
|
||||
</ValidationProvider>
|
||||
</div>
|
||||
|
||||
<!--Email-->
|
||||
<div class="block-wrapper">
|
||||
<label>{{ $t('page_registration.label_email') }}</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="email" rules="required" v-slot="{ errors }">
|
||||
<input v-model="user.email" :placeholder="$t('admin_page_user.create_user.label_email')" type="email" class="focus-border-theme" :class="{'is-error': errors[0]}"/>
|
||||
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
|
||||
</ValidationProvider>
|
||||
</div>
|
||||
|
||||
<!--Name-->
|
||||
<div class="block-wrapper">
|
||||
<label>{{ $t('page_registration.label_name') }}</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="user name" rules="required" v-slot="{ errors }">
|
||||
<input v-model="user.name" :placeholder="$t('admin_page_user.create_user.label_name')" type="text" class="focus-border-theme" :class="{'is-error': errors[0]}"/>
|
||||
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
|
||||
</ValidationProvider>
|
||||
</div>
|
||||
|
||||
<!--Password-->
|
||||
<div class="wrapper-inline">
|
||||
<div class="block-wrapper">
|
||||
<label>{{ $t('page_registration.label_pass') }}</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="password" rules="required" v-slot="{ errors }">
|
||||
<input v-model="user.password" :placeholder="$t('page_registration.placeholder_pass')" type="password" class="focus-border-theme" :class="{'is-error': errors[0]}"/>
|
||||
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
|
||||
</ValidationProvider>
|
||||
</div>
|
||||
|
||||
<div class="block-wrapper">
|
||||
<label>{{ $t('page_registration.label_confirm_pass') }}</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="password confirm" rules="required" v-slot="{ errors }">
|
||||
<input v-model="user.password_confirmation" :placeholder="$t('admin_page_user.create_user.label_conf_pass')" type="password" class="focus-border-theme" :class="{'is-error': errors[0]}"/>
|
||||
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
|
||||
</ValidationProvider>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<FormLabel>{{ $t('admin_page_user.create_user.group_settings') }}</FormLabel>
|
||||
|
||||
<!--User Role-->
|
||||
<div class="block-wrapper">
|
||||
<label>{{ $t('admin_page_user.select_role') }}:</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="permission" rules="required" v-slot="{ errors }">
|
||||
<SelectInput v-model="user.role" :options="roles" :placeholder="$t('admin_page_user.select_role')" :isError="errors[0]"/>
|
||||
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
|
||||
</ValidationProvider>
|
||||
</div>
|
||||
|
||||
<!--Storage Capacity-->
|
||||
<div class="block-wrapper">
|
||||
<label>{{ $t('admin_page_user.label_change_capacity') }}</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="storage capacity" rules="required" v-slot="{ errors }">
|
||||
<input v-model="user.storage_capacity" min="1" max="999999999" :placeholder="$t('admin_page_user.label_change_capacity')" type="number" class="focus-border-theme" :class="{'is-error': errors[0]}"/>
|
||||
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
|
||||
</ValidationProvider>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<ButtonBase :disabled="isLoading" :loading="isLoading" button-style="theme" type="submit">
|
||||
{{ $t('admin_page_user.create_user.submit') }}
|
||||
</ButtonBase>
|
||||
</div>
|
||||
</ValidationObserver>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {ValidationProvider, ValidationObserver} from 'vee-validate/dist/vee-validate.full'
|
||||
import SelectInput from '@/components/Others/Forms/SelectInput'
|
||||
import ImageInput from '@/components/Others/Forms/ImageInput'
|
||||
import FormLabel from '@/components/Others/Forms/FormLabel'
|
||||
import MobileHeader from '@/components/Mobile/MobileHeader'
|
||||
import SectionTitle from '@/components/Others/SectionTitle'
|
||||
import ButtonBase from '@/components/FilesView/ButtonBase'
|
||||
import PageHeader from '@/components/Others/PageHeader'
|
||||
import {required} from 'vee-validate/dist/rules'
|
||||
import { mapGetters } from 'vuex'
|
||||
import {events} from "@/bus"
|
||||
import axios from 'axios'
|
||||
|
||||
export default {
|
||||
name: 'Profile',
|
||||
components: {
|
||||
ValidationProvider,
|
||||
ValidationObserver,
|
||||
SectionTitle,
|
||||
MobileHeader,
|
||||
SelectInput,
|
||||
ButtonBase,
|
||||
ImageInput,
|
||||
PageHeader,
|
||||
FormLabel,
|
||||
required,
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['roles']),
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isLoading: false,
|
||||
user: {
|
||||
role: '',
|
||||
avatar: undefined,
|
||||
name: '',
|
||||
email: '',
|
||||
password: '',
|
||||
password_confirmation: '',
|
||||
storage_capacity: 5,
|
||||
},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async createUser() {
|
||||
|
||||
// Validate fields
|
||||
const isValid = await this.$refs.createUser.validate();
|
||||
|
||||
if (!isValid) return;
|
||||
|
||||
// Start loading
|
||||
this.isLoading = true
|
||||
|
||||
// Create form
|
||||
let formData = new FormData()
|
||||
|
||||
// Add image to form
|
||||
formData.append('name', this.user.name)
|
||||
formData.append('role', this.user.role)
|
||||
formData.append('email', this.user.email)
|
||||
formData.append('password', this.user.password)
|
||||
formData.append('storage_capacity', this.user.storage_capacity)
|
||||
formData.append('password_confirmation', this.user.password_confirmation)
|
||||
|
||||
// Append avatar if exist
|
||||
if (this.user.avatar)
|
||||
formData.append('avatar', this.user.avatar)
|
||||
|
||||
// Send request to get user token
|
||||
axios
|
||||
.post('/api/oasis/admin/users/create-user', formData, {
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data',
|
||||
}
|
||||
})
|
||||
.then(response => {
|
||||
|
||||
// End loading
|
||||
this.isLoading = false
|
||||
|
||||
// Show toaster
|
||||
events.$emit('toaster', {
|
||||
type: 'success',
|
||||
message: this.$t('toaster.created_user'),
|
||||
})
|
||||
|
||||
// Go to User page
|
||||
this.$router.push({name: 'UserDetail', params: {id: response.data.data.id}})
|
||||
})
|
||||
.catch(error => {
|
||||
|
||||
// Validation errors
|
||||
if (error.response.status == 422) {
|
||||
|
||||
// Email validation error
|
||||
if (error.response.data.errors['email']) {
|
||||
|
||||
this.$refs.createUser.setErrors({
|
||||
'email': error.response.data.errors['email']
|
||||
});
|
||||
}
|
||||
|
||||
// Password validation error
|
||||
if (error.response.data.errors['password']) {
|
||||
|
||||
this.$refs.createUser.setErrors({
|
||||
'password': error.response.data.errors['password']
|
||||
});
|
||||
}
|
||||
|
||||
// Password validation error
|
||||
if (error.response.data.errors['storage_capacity']) {
|
||||
|
||||
this.$refs.createUser.setErrors({
|
||||
'storage capacity': this.$t('errors.capacity_digit')
|
||||
});
|
||||
}
|
||||
} else {
|
||||
|
||||
events.$emit('alert:open', {
|
||||
title: this.$t('popup_error.title'),
|
||||
message: this.$t('popup_error.message'),
|
||||
})
|
||||
}
|
||||
|
||||
// End loading
|
||||
this.isLoading = false
|
||||
})
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '@assets/vuefilemanager/_variables';
|
||||
@import '@assets/vuefilemanager/_mixins';
|
||||
@import '@assets/vuefilemanager/_forms';
|
||||
</style>
|
||||
@@ -212,7 +212,7 @@
|
||||
this.isLoading = true
|
||||
|
||||
axios
|
||||
.post('/api/oasis/admin/users/create', this.user)
|
||||
.post('/api/oasis/admin/users/create-order', this.user)
|
||||
.then(response => {
|
||||
|
||||
// Show toaster
|
||||
198
resources/js/Oasis/Auth/SignUp.vue
Normal file
198
resources/js/Oasis/Auth/SignUp.vue
Normal file
@@ -0,0 +1,198 @@
|
||||
<template>
|
||||
<AuthContentWrapper ref="auth">
|
||||
|
||||
<!--Registration-->
|
||||
<AuthContent name="sign-up" :visible="true">
|
||||
<img v-if="config.app_logo" class="logo" :src="$getImage(config.app_logo)" :alt="config.app_name">
|
||||
<b v-if="! config.app_logo" class="auth-logo-text">{{ config.app_name }}</b>
|
||||
|
||||
<h1>{{ $t('page_registration.title') }}</h1>
|
||||
<h2>{{ $t('page_registration.subtitle') }}</h2>
|
||||
|
||||
<ValidationObserver @submit.prevent="signUp" ref="sign_up" v-slot="{ invalid }" tag="form"
|
||||
class="form block-form">
|
||||
|
||||
<div class="block-wrapper">
|
||||
<label>{{ $t('page_registration.label_email') }}</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="E-Mail" rules="required"
|
||||
v-slot="{ errors }">
|
||||
<input v-model="register.email" :placeholder="$t('page_registration.placeholder_email')" type="email"
|
||||
class="focus-border-theme"
|
||||
:class="{'is-error': errors[0]}"/>
|
||||
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
|
||||
</ValidationProvider>
|
||||
</div>
|
||||
|
||||
<div class="block-wrapper">
|
||||
<label>{{ $t('page_registration.label_name') }}</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="Full Name" rules="required"
|
||||
v-slot="{ errors }">
|
||||
<input v-model="register.name" :placeholder="$t('page_registration.placeholder_name')" type="text"
|
||||
class="focus-border-theme"
|
||||
:class="{'is-error': errors[0]}"/>
|
||||
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
|
||||
</ValidationProvider>
|
||||
</div>
|
||||
|
||||
<div class="block-wrapper">
|
||||
<label>{{ $t('page_registration.label_pass') }}</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="Your New Password"
|
||||
rules="required" v-slot="{ errors }">
|
||||
<input v-model="register.password" :placeholder="$t('page_registration.placeholder_pass')" type="password"
|
||||
class="focus-border-theme"
|
||||
:class="{'is-error': errors[0]}"/>
|
||||
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
|
||||
</ValidationProvider>
|
||||
</div>
|
||||
|
||||
<div class="block-wrapper">
|
||||
<label>{{ $t('page_registration.label_confirm_pass') }}</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="Confirm Your Password"
|
||||
rules="required" v-slot="{ errors }">
|
||||
<input v-model="register.password_confirmation" :placeholder="$t('page_registration.placeholder_confirm_pass')"
|
||||
class="focus-border-theme"
|
||||
type="password" :class="{'is-error': errors[0]}"/>
|
||||
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
|
||||
</ValidationProvider>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<i18n path="page_registration.agreement" tag="p" class="legal-agreement">
|
||||
<router-link :to="{name: 'DynamicPage', params: {slug: 'terms-of-service'}}" target="_blank" class="text-theme">{{ termsOfService.title }}</router-link>
|
||||
<router-link :to="{name: 'DynamicPage', params: {slug: 'privacy-policy'}}" target="_blank" class="text-theme">{{ privacyPolicy.title }}</router-link>
|
||||
</i18n>
|
||||
<AuthButton icon="chevron-right" :text="$t('page_registration.button_create_account')" :loading="isLoading" :disabled="isLoading"/>
|
||||
</div>
|
||||
</ValidationObserver>
|
||||
|
||||
<span class="additional-link">{{ $t('page_registration.have_an_account') }}
|
||||
<router-link :to="{name: 'SignIn'}" class="text-theme">
|
||||
{{ $t('page_forgotten_password.password_remember_button') }}
|
||||
</router-link>
|
||||
</span>
|
||||
</AuthContent>
|
||||
|
||||
</AuthContentWrapper>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import AuthContentWrapper from '@/components/Auth/AuthContentWrapper'
|
||||
import {ValidationProvider, ValidationObserver} from 'vee-validate/dist/vee-validate.full'
|
||||
import AuthContent from '@/components/Auth/AuthContent'
|
||||
import AuthButton from '@/components/Auth/AuthButton'
|
||||
import {required} from 'vee-validate/dist/rules'
|
||||
import {mapGetters} from 'vuex'
|
||||
import {events} from "@/bus"
|
||||
import axios from 'axios'
|
||||
|
||||
export default {
|
||||
name: 'SignUp',
|
||||
components: {
|
||||
AuthContentWrapper,
|
||||
ValidationProvider,
|
||||
ValidationObserver,
|
||||
AuthContent,
|
||||
AuthButton,
|
||||
required,
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['config']),
|
||||
privacyPolicy() {
|
||||
return this.config.legal.find(legal => {
|
||||
return legal.slug === 'privacy-policy'
|
||||
})
|
||||
},
|
||||
termsOfService() {
|
||||
return this.config.legal.find(legal => {
|
||||
return legal.slug === 'terms-of-service'
|
||||
})
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isLoading: false,
|
||||
register: {
|
||||
name: 'Peter',
|
||||
email: 'john@doe.com',
|
||||
password: 'vuefilemanager',
|
||||
password_confirmation: 'vuefilemanager',
|
||||
},
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async signUp() {
|
||||
|
||||
// Validate fields
|
||||
const isValid = await this.$refs.sign_up.validate();
|
||||
|
||||
if (!isValid) return;
|
||||
|
||||
// Start loading
|
||||
this.isLoading = true
|
||||
|
||||
// Send request to get user token
|
||||
axios
|
||||
.post('/register', this.register)
|
||||
.then(() => {
|
||||
|
||||
// End loading
|
||||
this.isLoading = false
|
||||
|
||||
// Set login state
|
||||
this.$store.commit('SET_AUTHORIZED', true)
|
||||
|
||||
// Go to files page
|
||||
this.$router.push({name: 'SetUpPlan'})
|
||||
})
|
||||
.catch(error => {
|
||||
|
||||
if (error.response.status == 500) {
|
||||
|
||||
events.$emit('alert:open', {
|
||||
emoji: '🤔',
|
||||
title: this.$t('popup_signup_error.title'),
|
||||
message: this.$t('popup_signup_error.message')
|
||||
})
|
||||
}
|
||||
|
||||
if (error.response.status == 422) {
|
||||
|
||||
if (error.response.data.errors['email']) {
|
||||
|
||||
this.$refs.sign_up.setErrors({
|
||||
'E-Mail': error.response.data.errors['email']
|
||||
});
|
||||
}
|
||||
|
||||
if (error.response.data.errors['password']) {
|
||||
|
||||
this.$refs.sign_up.setErrors({
|
||||
'Your New Password': error.response.data.errors['password']
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// End loading
|
||||
this.isLoading = false
|
||||
})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.$scrollTop()
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
@import '@assets/vuefilemanager/_auth-form';
|
||||
@import '@assets/vuefilemanager/_auth';
|
||||
|
||||
.legal-agreement {
|
||||
@include font-size(16);
|
||||
padding: 55px 0 0;
|
||||
max-width: 400px;
|
||||
font-weight: 700;
|
||||
line-height: 1.6;
|
||||
margin: 0 auto;
|
||||
}
|
||||
</style>
|
||||
707
resources/js/Oasis/Onboarding/PayForPlan.vue
Normal file
707
resources/js/Oasis/Onboarding/PayForPlan.vue
Normal file
@@ -0,0 +1,707 @@
|
||||
<template>
|
||||
<div id="single-page">
|
||||
<div id="page-content" class="large-width center-page" v-show="! isLoading">
|
||||
<MobileHeader :title="$router.currentRoute.meta.title" />
|
||||
<div class="content-page">
|
||||
<div class="plan-title">
|
||||
<credit-card-icon size="42" class="title-icon"></credit-card-icon>
|
||||
<h1>{{ $t('page_upgrade_account.title') }}</h1>
|
||||
<h2>{{ $t('page_upgrade_account.desription') }}</h2>
|
||||
</div>
|
||||
<div class="order">
|
||||
<div class="steps">
|
||||
|
||||
<div class="payment-card">
|
||||
<FormLabel>{{ $t('page_upgrade_account.section_card') }}</FormLabel>
|
||||
|
||||
<!-- Pay by new credit card -->
|
||||
<div class="register-card">
|
||||
<InfoBox v-if="config.isDemo">
|
||||
<p>For test your payment please use <b>4242 4242 4242 4242</b> or <b>5555 5555 5555 4444</b> as a card number, <b>11/22</b>
|
||||
as the expiration date and <b>123</b> as CVC number and ZIP <b>12345</b>.</p>
|
||||
</InfoBox>
|
||||
|
||||
<div ref="stripeCard" class="stripe-card" :class="{'is-error': isError }"></div>
|
||||
|
||||
<div class="card-error-message" v-if="isError">
|
||||
<span>{{ errorMessage }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="billing" v-if="billing">
|
||||
<FormLabel>{{ $t('page_upgrade_account.section_billing') }}</FormLabel>
|
||||
|
||||
<ValidationObserver ref="order" v-slot="{ invalid }" tag="form" class="form block-form">
|
||||
<div class="form block-form">
|
||||
|
||||
<div class="block-wrapper">
|
||||
<label>{{ $t('user_settings.name') }}:</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper"
|
||||
rules="required"
|
||||
name="billing_name" v-slot="{ errors }">
|
||||
<input v-model="billing.name"
|
||||
:placeholder="$t('user_settings.name_plac')"
|
||||
type="text"
|
||||
:class="{'is-error': errors[0]}"
|
||||
/>
|
||||
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
|
||||
</ValidationProvider>
|
||||
</div>
|
||||
|
||||
<div class="block-wrapper">
|
||||
<label>{{ $t('user_settings.address') }}:</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper"
|
||||
rules="required"
|
||||
name="billing_address" v-slot="{ errors }">
|
||||
<input v-model="billing.address"
|
||||
:placeholder="$t('user_settings.address_plac')"
|
||||
type="text"
|
||||
:class="{'is-error': errors[0]}"
|
||||
/>
|
||||
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
|
||||
</ValidationProvider>
|
||||
</div>
|
||||
|
||||
<div class="wrapper-inline">
|
||||
<div class="block-wrapper">
|
||||
<label>{{ $t('user_settings.city') }}:</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper"
|
||||
rules="required" name="billing_city"
|
||||
v-slot="{ errors }">
|
||||
<input v-model="billing.city"
|
||||
:placeholder="$t('user_settings.city_plac')"
|
||||
type="text"
|
||||
:class="{'is-error': errors[0]}"
|
||||
/>
|
||||
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
|
||||
</ValidationProvider>
|
||||
</div>
|
||||
|
||||
<div class="block-wrapper">
|
||||
<label>{{ $t('user_settings.postal_code') }}:</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper"
|
||||
rules="required" name="billing_postal_code"
|
||||
v-slot="{ errors }">
|
||||
<input v-model="billing.postal_code"
|
||||
:placeholder="$t('user_settings.postal_code_plac')"
|
||||
type="text"
|
||||
:class="{'is-error': errors[0]}"
|
||||
/>
|
||||
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
|
||||
</ValidationProvider>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="block-wrapper">
|
||||
<label>{{ $t('user_settings.country') }}:</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper"
|
||||
rules="required"
|
||||
name="billing_country" v-slot="{ errors }">
|
||||
<SelectInput v-model="billing.country"
|
||||
:default="billing.country"
|
||||
:options="countries"
|
||||
:placeholder="$t('user_settings.country_plac')"
|
||||
:isError="errors[0]" />
|
||||
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
|
||||
</ValidationProvider>
|
||||
</div>
|
||||
|
||||
<div class="block-wrapper">
|
||||
<label>{{ $t('user_settings.state') }}:</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper"
|
||||
rules="required"
|
||||
name="billing_state" v-slot="{ errors }">
|
||||
<input v-model="billing.state"
|
||||
:placeholder="$t('user_settings.state_plac')"
|
||||
type="text"
|
||||
:class="{'is-error': errors[0]}"
|
||||
/>
|
||||
<small class="input-help">
|
||||
State, county, province, or region.
|
||||
</small>
|
||||
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
|
||||
</ValidationProvider>
|
||||
</div>
|
||||
|
||||
<div class="block-wrapper">
|
||||
<label>{{ $t('user_settings.phone_number') }}:</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper"
|
||||
rules="required"
|
||||
name="billing_phone_number" v-slot="{ errors }">
|
||||
<input v-model="billing.phone_number"
|
||||
:placeholder="$t('user_settings.phone_number_plac')"
|
||||
type="text"
|
||||
:class="{'is-error': errors[0]}"
|
||||
/>
|
||||
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
|
||||
</ValidationProvider>
|
||||
</div>
|
||||
</div>
|
||||
</ValidationObserver>
|
||||
</div>
|
||||
</div>
|
||||
<div class="summary">
|
||||
<FormLabel>{{ $t('page_upgrade_account.section_summary') }}</FormLabel>
|
||||
<div class="summary-list" :class="{'is-error': isError}" v-if="requestedPlan">
|
||||
<div class="row">
|
||||
<div class="cell">
|
||||
<b>{{ requestedPlan.data.attributes.name }}</b>
|
||||
<small>{{ $t('page_upgrade_account.summary.period') }}</small>
|
||||
</div>
|
||||
<div class="cell">
|
||||
<b>{{ requestedPlan.data.attributes.price }}</b>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" v-if="taxRates">
|
||||
<div class="cell">
|
||||
<b>{{ $t('page_upgrade_account.summary.vat') }} - ({{ taxRates.country }} {{ taxRates.percentage }}%)</b>
|
||||
</div>
|
||||
<div class="cell">
|
||||
<b>{{ taxRates.plan_price_formatted }}</b>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--Show total when tax rates is not specified-->
|
||||
<div class="row" v-if="! taxRates">
|
||||
<div class="cell">
|
||||
<b>{{ $t('global.total') }}</b>
|
||||
</div>
|
||||
<div class="cell">
|
||||
<b>{{ requestedPlan.data.attributes.price }}</b>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--Show total when is tax rates-->
|
||||
<div class="row" v-if="taxRates">
|
||||
<div class="cell">
|
||||
<b>{{ $t('page_upgrade_account.summary.total_with_vat') }}</b>
|
||||
</div>
|
||||
<div class="cell">
|
||||
<b>{{ taxRates.plan_price_formatted }}</b>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<ButtonBase :disabled="isSubmitted" :loading="isSubmitted" @click.native="submitOrder"
|
||||
type="submit" button-style="theme-solid" class="next-submit">
|
||||
{{ $t('page_upgrade_account.summary.submit_button') }}
|
||||
</ButtonBase>
|
||||
<p class="error-message" v-if="isError">{{ errorMessage }}</p>
|
||||
<small class="disclaimer">
|
||||
{{ $t('page_upgrade_account.summary.submit_disclaimer', {app: config.app_name}) }}
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="loader" v-if="isLoading">
|
||||
<Spinner></Spinner>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import {ValidationProvider, ValidationObserver} from 'vee-validate/dist/vee-validate.full'
|
||||
import PlanPricingTables from '@/components/Others/PlanPricingTables'
|
||||
import SelectInput from '@/components/Others/Forms/SelectInput'
|
||||
import FormLabel from '@/components/Others/Forms/FormLabel'
|
||||
import MobileHeader from '@/components/Mobile/MobileHeader'
|
||||
import ButtonBase from '@/components/FilesView/ButtonBase'
|
||||
import InfoBox from '@/components/Others/Forms/InfoBox'
|
||||
import ColorLabel from '@/components/Others/ColorLabel'
|
||||
import PageHeader from '@/components/Others/PageHeader'
|
||||
import Spinner from '@/components/FilesView/Spinner'
|
||||
import {CreditCardIcon} from 'vue-feather-icons'
|
||||
import {required} from 'vee-validate/dist/rules'
|
||||
import {mapGetters} from 'vuex'
|
||||
import {events} from "@/bus"
|
||||
import axios from 'axios'
|
||||
|
||||
let [stripe, card] = [undefined, undefined];
|
||||
|
||||
export default {
|
||||
name: 'SelectPlan',
|
||||
components: {
|
||||
ValidationProvider,
|
||||
ValidationObserver,
|
||||
PlanPricingTables,
|
||||
CreditCardIcon,
|
||||
MobileHeader,
|
||||
SelectInput,
|
||||
ButtonBase,
|
||||
PageHeader,
|
||||
ColorLabel,
|
||||
FormLabel,
|
||||
required,
|
||||
Spinner,
|
||||
InfoBox,
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['requestedPlan', 'config', 'countries']),
|
||||
billing() {
|
||||
return this.$store.getters.user.data.relationships.settings.data.attributes
|
||||
},
|
||||
taxRates() {
|
||||
return this.requestedPlan.data.attributes.tax_rates.find(taxRate => {
|
||||
return taxRate.country === this.billing.country
|
||||
})
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
complete: false,
|
||||
stripeOptions: {
|
||||
hidePostalCode: false
|
||||
},
|
||||
isLoading: true,
|
||||
isSubmitted: false,
|
||||
|
||||
errorMessage: undefined,
|
||||
isError: false,
|
||||
|
||||
clientSecret: undefined
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
initStripe() {
|
||||
stripe = Stripe(this.config.stripe_public_key)
|
||||
|
||||
let elements = stripe.elements();
|
||||
|
||||
card = elements.create('card');
|
||||
|
||||
card.mount(this.$refs.stripeCard);
|
||||
},
|
||||
successOrder() {
|
||||
// Update user data
|
||||
this.$store.dispatch('getAppData')
|
||||
|
||||
// Show toaster
|
||||
events.$emit('toaster', {
|
||||
type: 'success',
|
||||
message: this.$t('toaster.account_upgraded'),
|
||||
})
|
||||
|
||||
// Go to User page
|
||||
this.$router.push({name: 'Files'})
|
||||
},
|
||||
errorOrder(error) {
|
||||
|
||||
// Redirect user to confirmation payment page
|
||||
if (error.response.status === 402) {
|
||||
window.location.href = error.response.data.message;
|
||||
}
|
||||
|
||||
// Show user error message
|
||||
if (error.response.status === 400) {
|
||||
this.isError = true
|
||||
this.errorMessage = error.response.data.message
|
||||
}
|
||||
|
||||
// Show server error
|
||||
if (error.response.status === 500) {
|
||||
this.isError = true
|
||||
this.errorMessage = error.response.data.message
|
||||
|
||||
events.$emit('alert:open', {
|
||||
title: this.$t('popup_error.title'),
|
||||
message: this.$t('popup_error.message'),
|
||||
})
|
||||
}
|
||||
},
|
||||
async submitOrder() {
|
||||
|
||||
// Validate fields
|
||||
const isValid = await this.$refs.order.validate();
|
||||
|
||||
if (!isValid) return;
|
||||
|
||||
// Remove error
|
||||
this.isError = false
|
||||
|
||||
// Start loading
|
||||
this.isSubmitted = true
|
||||
|
||||
const {setupIntent, error} = await stripe.confirmCardSetup(this.clientSecret, {
|
||||
payment_method: {
|
||||
card: card,
|
||||
}
|
||||
})
|
||||
|
||||
if (error) {
|
||||
|
||||
// Set error on
|
||||
this.isError = true
|
||||
|
||||
// End button spinner
|
||||
this.isSubmitted = false
|
||||
|
||||
// Show error message
|
||||
this.errorMessage = error.message
|
||||
|
||||
} else {
|
||||
|
||||
axios
|
||||
.post('/api/oasis/subscribe', {
|
||||
billing: {
|
||||
billing_address: this.billing.address,
|
||||
billing_city: this.billing.city,
|
||||
billing_country: this.billing.country,
|
||||
billing_name: this.billing.name,
|
||||
billing_phone_number: this.billing.phone_number,
|
||||
billing_postal_code: this.billing.postal_code,
|
||||
billing_state: this.billing.state,
|
||||
},
|
||||
plan: this.requestedPlan,
|
||||
payment: {
|
||||
type: 'stripe',
|
||||
meta: {
|
||||
pm: setupIntent.payment_method,
|
||||
}
|
||||
}
|
||||
})
|
||||
.then(() => {
|
||||
this.successOrder()
|
||||
})
|
||||
.catch((error) => {
|
||||
this.errorOrder(error)
|
||||
})
|
||||
.finally(() => {
|
||||
this.isSubmitted = false
|
||||
})
|
||||
}
|
||||
},
|
||||
},
|
||||
mounted: function () {
|
||||
if (!this.requestedPlan) {
|
||||
this.$router.push({name: 'SetUpPlan'})
|
||||
} else {
|
||||
this.initStripe()
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
||||
// Get setup intent for stripe
|
||||
axios.get('/api/user/subscription/setup-intent')
|
||||
.then(response => {
|
||||
this.clientSecret = response.data.client_secret
|
||||
})
|
||||
.catch(() => {
|
||||
this.$isSomethingWrong()
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '@assets/vuefilemanager/_variables';
|
||||
@import '@assets/vuefilemanager/_mixins';
|
||||
@import '@assets/vuefilemanager/_forms';
|
||||
|
||||
.change-payment {
|
||||
padding-top: 10px;
|
||||
|
||||
span {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
a {
|
||||
cursor: pointer;
|
||||
font-weight: 700;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
span, a {
|
||||
color: $text-muted;
|
||||
@include font-size(14);
|
||||
}
|
||||
}
|
||||
|
||||
.card-error-message {
|
||||
padding-top: 10px;
|
||||
|
||||
span, a {
|
||||
@include font-size(14);
|
||||
font-weight: 600;
|
||||
color: $danger;
|
||||
}
|
||||
|
||||
.link, a {
|
||||
text-decoration: underline;
|
||||
cursor: pointer;
|
||||
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.registered-cards {
|
||||
margin-bottom: 50px;
|
||||
}
|
||||
|
||||
.register-card {
|
||||
margin-bottom: 55px;
|
||||
}
|
||||
|
||||
.credit-card {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 15px;
|
||||
background: $light_background;
|
||||
border-radius: 8px;
|
||||
margin-top: 20px;
|
||||
|
||||
&.is-error {
|
||||
box-shadow: 0 0 7px rgba($danger, 0.3);
|
||||
border: 2px solid $danger;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
span {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.card-number {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.credit-card-numbers {
|
||||
vertical-align: middle;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.credit-card-icon {
|
||||
vertical-align: middle;
|
||||
max-height: 20px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.stripe-card {
|
||||
box-sizing: border-box;
|
||||
padding: 13px 20px;
|
||||
|
||||
border: 1px solid transparent;
|
||||
border-radius: 4px;
|
||||
background-color: white;
|
||||
|
||||
box-shadow: 0 1px 3px 0 #e6ebf1;
|
||||
-webkit-transition: box-shadow 150ms ease;
|
||||
transition: box-shadow 150ms ease;
|
||||
|
||||
&.is-error {
|
||||
box-shadow: 0 0 7px rgba($danger, 0.3);
|
||||
border: 2px solid $danger;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
&.StripeElement--focus {
|
||||
box-shadow: 0 1px 3px 0 #cfd7df;
|
||||
}
|
||||
|
||||
&.StripeElement--invalid {
|
||||
border-color: #fa755a;
|
||||
}
|
||||
|
||||
&.StripeElement--webkit-autofill {
|
||||
background-color: #fefde5 !important;
|
||||
}
|
||||
|
||||
iframe .InputContainer .InputElement {
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
|
||||
.summary-list {
|
||||
box-shadow: 0 7px 20px 5px hsla(220, 36%, 16%, 0.06);
|
||||
border-radius: 8px;
|
||||
position: sticky;
|
||||
padding: 25px;
|
||||
top: 30px;
|
||||
|
||||
&.is-error {
|
||||
border: 2px solid $danger;
|
||||
box-shadow: 0 7px 20px 5px rgba($danger, 0.06);
|
||||
}
|
||||
|
||||
.error-message {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.next-submit {
|
||||
width: 100%;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.disclaimer {
|
||||
@include font-size(12);
|
||||
line-height: 1.6;
|
||||
display: block;
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
.row {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 15px 0;
|
||||
|
||||
&:first-child {
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
&:last-of-type {
|
||||
border-top: 1px solid $light_mode_border;
|
||||
padding-bottom: 0;
|
||||
|
||||
b {
|
||||
font-weight: 800;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.cell {
|
||||
b {
|
||||
display: block;
|
||||
@include font-size(18);
|
||||
}
|
||||
|
||||
small {
|
||||
color: $text-muted;
|
||||
@include font-size(12);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.order {
|
||||
display: flex;
|
||||
margin-bottom: 30px;
|
||||
|
||||
.steps {
|
||||
flex: 0 0 65%;
|
||||
padding-right: 30px;
|
||||
|
||||
.form {
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.summary {
|
||||
flex: 0 0 34%;
|
||||
}
|
||||
}
|
||||
|
||||
.plan-title {
|
||||
text-align: center;
|
||||
max-width: 600px;
|
||||
margin: 0 auto 80px;
|
||||
|
||||
path, line, polyline, rect, circle {
|
||||
color: $theme;
|
||||
}
|
||||
|
||||
h1 {
|
||||
@include font-size(38);
|
||||
font-weight: 800;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
@include font-size(20);
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
|
||||
.plan-title {
|
||||
|
||||
h1 {
|
||||
color: $dark_mode_text_primary;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color: $dark_mode_text_secondary;
|
||||
}
|
||||
}
|
||||
|
||||
.credit-card {
|
||||
background: $dark_mode_foreground;
|
||||
|
||||
span, .credit-card-numbers {
|
||||
color: $dark_mode_text_primary;
|
||||
}
|
||||
}
|
||||
|
||||
.change-payment {
|
||||
|
||||
span {
|
||||
color: $dark_mode_text_secondary;
|
||||
}
|
||||
|
||||
a {
|
||||
color: $theme;
|
||||
}
|
||||
}
|
||||
|
||||
.summary-list {
|
||||
background: $dark_mode_foreground;
|
||||
|
||||
.disclaimer {
|
||||
color: $dark_mode_text_secondary;
|
||||
}
|
||||
|
||||
.row {
|
||||
|
||||
&:last-of-type {
|
||||
border-top: 1px solid $dark_mode_border_color;
|
||||
|
||||
b {
|
||||
color: $dark_mode_text_primary;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.cell {
|
||||
b {
|
||||
color: $dark_mode_text_primary;
|
||||
}
|
||||
|
||||
small {
|
||||
color: $dark_mode_text_secondary;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.stripe-card {
|
||||
border: 1px solid transparent;
|
||||
//background-color: $dark_mode_foreground;
|
||||
box-shadow: none;
|
||||
|
||||
&.StripeElement--webkit-autofill {
|
||||
background-color: $dark_mode_foreground !important;
|
||||
}
|
||||
|
||||
&.StripeElement--focus {
|
||||
box-shadow: none;
|
||||
border-color: $theme;
|
||||
box-shadow: 0 1px 5px rgba($theme, 0.3);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 960px) {
|
||||
.order {
|
||||
display: block;
|
||||
|
||||
.steps {
|
||||
margin-bottom: 70px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
116
resources/js/Oasis/Onboarding/SelectPlan.vue
Normal file
116
resources/js/Oasis/Onboarding/SelectPlan.vue
Normal file
@@ -0,0 +1,116 @@
|
||||
<template>
|
||||
<div id="single-page">
|
||||
<div id="page-content" class="large-width center-page" v-show="! isLoading">
|
||||
<MobileHeader :title="$router.currentRoute.meta.title"/>
|
||||
<div class="content-page">
|
||||
|
||||
<!--Page Title-->
|
||||
<div class="plan-title">
|
||||
<cloud-icon size="42" class="title-icon"></cloud-icon>
|
||||
<h1>{{ $t('page_pricing_tables.title') }}</h1>
|
||||
<h2>{{ $t('page_pricing_tables.description') }}</h2>
|
||||
</div>
|
||||
|
||||
<!--Pricing Tables-->
|
||||
<PlanPricingTables v-if="user" custom-route="FinishPayment" @load="onLoadPricingTables" @selected-plan="onSelectTable"/>
|
||||
</div>
|
||||
</div>
|
||||
<div id="loader" v-if="isLoading">
|
||||
<Spinner></Spinner>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import PlanPricingTables from '@/components/Others/PlanPricingTables'
|
||||
import MobileHeader from '@/components/Mobile/MobileHeader'
|
||||
import PageHeader from '@/components/Others/PageHeader'
|
||||
import Spinner from '@/components/FilesView/Spinner'
|
||||
import { CloudIcon } from 'vue-feather-icons'
|
||||
import axios from 'axios'
|
||||
import {mapGetters} from "vuex";
|
||||
|
||||
export default {
|
||||
name: 'UpgradePlan',
|
||||
components: {
|
||||
PlanPricingTables,
|
||||
MobileHeader,
|
||||
PageHeader,
|
||||
CloudIcon,
|
||||
Spinner,
|
||||
},
|
||||
computed: {
|
||||
...mapGetters([
|
||||
'user'
|
||||
]),
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isLoading: true,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onLoadPricingTables(state) {
|
||||
this.isLoading = state
|
||||
},
|
||||
onSelectTable(plan) {
|
||||
this.$store.commit('STORE_REQUESTED_PLAN', plan)
|
||||
}
|
||||
},
|
||||
beforeMount() {
|
||||
let StripeElementsScript = document.createElement('script')
|
||||
|
||||
StripeElementsScript.setAttribute('src', 'https://js.stripe.com/v3/')
|
||||
document.head.appendChild(StripeElementsScript)
|
||||
},
|
||||
mounted() {
|
||||
// Reload user data
|
||||
this.$store.dispatch('getAppData')
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '@assets/vuefilemanager/_variables';
|
||||
@import '@assets/vuefilemanager/_mixins';
|
||||
@import '@assets/vuefilemanager/_forms';
|
||||
|
||||
.plan-title {
|
||||
text-align: center;
|
||||
max-width: 600px;
|
||||
margin: 0 auto 80px;
|
||||
|
||||
path, line, polyline, rect, circle {
|
||||
color: $theme;
|
||||
}
|
||||
|
||||
h1 {
|
||||
@include font-size(38);
|
||||
font-weight: 800;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
@include font-size(20);
|
||||
font-weight: 500;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 960px) {
|
||||
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
.plan-title {
|
||||
|
||||
h1 {
|
||||
color: $dark_mode_text_primary;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color: $dark_mode_text_secondary;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -39,6 +39,9 @@
|
||||
HardDriveIcon,
|
||||
ButtonBase,
|
||||
},
|
||||
props: [
|
||||
'customRoute'
|
||||
],
|
||||
data() {
|
||||
return {
|
||||
plans: undefined,
|
||||
@@ -50,7 +53,10 @@
|
||||
methods: {
|
||||
selectPlan(plan) {
|
||||
this.$emit('selected-plan', plan)
|
||||
this.$router.push({name: 'UpgradeBilling'})
|
||||
|
||||
let route = this.customRoute ? this.customRoute : 'UpgradeBilling'
|
||||
|
||||
this.$router.push({name: route})
|
||||
}
|
||||
},
|
||||
created() {
|
||||
|
||||
31
resources/js/router.js
vendored
31
resources/js/router.js
vendored
@@ -9,6 +9,35 @@ import UserProfileMobileMenu from './views/Mobile/UserProfileMobileMenu'
|
||||
Vue.use(Router)
|
||||
|
||||
const routesOasis = [
|
||||
{
|
||||
name: 'SignUp',
|
||||
path: '/sign-up',
|
||||
component: () =>
|
||||
import(/* webpackChunkName: "chunks/sign-up" */ './Oasis/Auth/SignUp'),
|
||||
meta: {
|
||||
requiresAuth: false
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'SetUpPlan',
|
||||
path: '/nastavte-plan',
|
||||
component: () =>
|
||||
import(/* webpackChunkName: "chunks/upgrade-plan" */ './Oasis/Onboarding/SelectPlan'),
|
||||
meta: {
|
||||
requiresAuth: true,
|
||||
title: i18n.t('routes_title.upgrade_plan')
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'FinishPayment',
|
||||
path: '/dokoncete-objednavku',
|
||||
component: () =>
|
||||
import(/* webpackChunkName: "chunks/upgrade-billing" */ './Oasis/Onboarding/PayForPlan'),
|
||||
meta: {
|
||||
requiresAuth: true,
|
||||
title: i18n.t('routes_title.upgrade_billing')
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'SubscriptionRequestPayment',
|
||||
path: '/platba/:id',
|
||||
@@ -53,7 +82,7 @@ const routesOasis = [
|
||||
name: 'CreateSubscriptionRequest',
|
||||
path: '/admin/user/order',
|
||||
component: () =>
|
||||
import(/* webpackChunkName: "chunks/user-create" */ './Oasis/Admin/CreateSubscriptionRequest'),
|
||||
import(/* webpackChunkName: "chunks/user-create" */ './Oasis/Admin/UserCreateOrder'),
|
||||
meta: {
|
||||
requiresAuth: true,
|
||||
title: i18n.t('routes_title.user_create')
|
||||
|
||||
7
resources/js/store/modules/userAuth.js
vendored
7
resources/js/store/modules/userAuth.js
vendored
@@ -16,9 +16,9 @@ const actions = {
|
||||
.then((response) => {
|
||||
resolve(response)
|
||||
|
||||
// Redirect user if is logged
|
||||
if (router.currentRoute.name === 'SignIn')
|
||||
router.push({name: 'Files'})
|
||||
// Oasis redirection to setup plan process after sign in
|
||||
if (response.data.data.attributes.role === 'user' && ! response.data.data.relationships.settings.data.attributes.payment_activation)
|
||||
router.push({name: 'SetUpPlan'})
|
||||
|
||||
commit('RETRIEVE_USER', response.data)
|
||||
|
||||
@@ -29,7 +29,6 @@ const actions = {
|
||||
if ([401, 403].includes(error.response.status)) {
|
||||
|
||||
commit('SET_AUTHORIZED', false)
|
||||
//router.push({name: 'SignIn'})
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
@@ -193,17 +193,6 @@
|
||||
});
|
||||
}
|
||||
|
||||
if (error.response.status == 401) {
|
||||
|
||||
if (error.response.data.error === 'invalid_client') {
|
||||
events.$emit('alert:open', {
|
||||
emoji: '🤔',
|
||||
title: this.$t('popup_passport_error.title'),
|
||||
message: this.$t('popup_passport_error.message')
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// End loading
|
||||
this.isLoading = false
|
||||
})
|
||||
@@ -214,8 +203,8 @@
|
||||
this.$store.commit('PROCESSING_POPUP', undefined)
|
||||
|
||||
//if (this.config.isDemo) {
|
||||
this.loginEmail = 'howdy@hi5ve.digital'
|
||||
this.loginPassword = 'vuefilemanager'
|
||||
this.loginEmail = 'howdy@hi5ve.digital'
|
||||
this.loginPassword = 'vuefilemanager'
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,12 +8,13 @@ Route::group(['middleware' => 'api', 'prefix' => '/api/oasis'], function () {
|
||||
// Admin
|
||||
Route::group(['middleware' => 'auth:sanctum', 'prefix' => 'admin'], function () {
|
||||
Route::get('/company-details', [AdminController::class, 'get_company_details']);
|
||||
Route::post('/users/create', [AdminController::class, 'register_new_client']);
|
||||
Route::post('/users/create-order', [AdminController::class, 'create_order']);
|
||||
Route::post('/users/create-user', [AdminController::class, 'create_user']);
|
||||
});
|
||||
|
||||
// Subscription
|
||||
Route::group(['prefix' => 'subscribe'], function () {
|
||||
Route::post('/{order}', [SubscriptionController::class, 'subscribe']);
|
||||
Route::post('/{order?}', [SubscriptionController::class, 'subscribe']);
|
||||
Route::get('/{order}', [SubscriptionController::class, 'get_subscription_request']);
|
||||
Route::get('/{order}/setup-intent', [SubscriptionController::class, 'get_setup_intent']);
|
||||
});
|
||||
|
||||
@@ -5,9 +5,11 @@ namespace Tests\Feature\Oasis;
|
||||
use App\Models\User;
|
||||
use App\Notifications\Oasis\PaymentRequiredNotification;
|
||||
use Illuminate\Foundation\Testing\DatabaseMigrations;
|
||||
use Illuminate\Http\UploadedFile;
|
||||
use Illuminate\Support\Facades\Http;
|
||||
use Laravel\Sanctum\Sanctum;
|
||||
use Notification;
|
||||
use Storage;
|
||||
use Tests\TestCase;
|
||||
|
||||
class OasisAdminTest extends TestCase
|
||||
@@ -64,7 +66,7 @@ class OasisAdminTest extends TestCase
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function it_register_new_client_from_admin_panel()
|
||||
public function it_create_client_order()
|
||||
{
|
||||
Notification::fake();
|
||||
|
||||
@@ -73,7 +75,7 @@ class OasisAdminTest extends TestCase
|
||||
|
||||
Sanctum::actingAs($admin);
|
||||
|
||||
$this->postJson('/api/oasis/admin/users/create', [
|
||||
$this->postJson('/api/oasis/admin/users/create-order', [
|
||||
'ico' => '08995281',
|
||||
'name' => 'GDPR Cloud Solution, s.r.o.',
|
||||
'email' => 'john@doe.com',
|
||||
@@ -107,4 +109,44 @@ class OasisAdminTest extends TestCase
|
||||
|
||||
Notification::assertSentTo($newbie, PaymentRequiredNotification::class);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function it_create_new_user_with_avatar()
|
||||
{
|
||||
Storage::fake('local');
|
||||
|
||||
$admin = User::factory(User::class)
|
||||
->create(['role' => 'admin']);
|
||||
|
||||
Sanctum::actingAs($admin);
|
||||
|
||||
$avatar = UploadedFile::fake()
|
||||
->image('fake-image.jpg');
|
||||
|
||||
$this->postJson("/api/oasis/admin/users/create-user", [
|
||||
'name' => 'John Doe',
|
||||
'role' => 'user',
|
||||
'email' => 'john@doe.com',
|
||||
'password' => 'VerySecretPassword',
|
||||
'storage_capacity' => 15,
|
||||
'password_confirmation' => 'VerySecretPassword',
|
||||
'avatar' => $avatar,
|
||||
])->assertStatus(201);
|
||||
|
||||
$this->assertDatabaseHas('users', [
|
||||
'email' => 'john@doe.com'
|
||||
]);
|
||||
|
||||
$this->assertDatabaseHas('user_settings', [
|
||||
'name' => 'John Doe',
|
||||
'payment_activation' => 1,
|
||||
]);
|
||||
|
||||
Storage::disk('local')
|
||||
->assertExists(
|
||||
User::whereEmail('john@doe.com')->first()->settings->getRawOriginal('avatar')
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ use App\Services\Oasis\OasisService;
|
||||
use Carbon\Carbon;
|
||||
use Cartalyst\Stripe\Stripe;
|
||||
use Illuminate\Foundation\Testing\DatabaseMigrations;
|
||||
use Laravel\Sanctum\Sanctum;
|
||||
use Notification;
|
||||
use Tests\TestCase;
|
||||
|
||||
@@ -87,7 +88,7 @@ class OasisSubscriptionTest extends TestCase
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function it_subscribe_user_and_pay_for_it()
|
||||
public function it_subscribe_user_from_subscription_request()
|
||||
{
|
||||
$user = User::factory(User::class)
|
||||
->create(['role' => 'user']);
|
||||
@@ -145,6 +146,67 @@ class OasisSubscriptionTest extends TestCase
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function it_subscribe_user_after_signup()
|
||||
{
|
||||
$user = User::factory(User::class)
|
||||
->create(['role' => 'user']);
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
// Register payment method
|
||||
$stripe = Stripe::make(config('cashier.secret'), '2020-03-02');
|
||||
|
||||
// Create test payment method
|
||||
$paymentMethod = $stripe->paymentMethods()->create([
|
||||
'type' => 'card',
|
||||
'card' => [
|
||||
'number' => '4242424242424242',
|
||||
'exp_month' => 11,
|
||||
'exp_year' => 2022,
|
||||
'cvc' => '123'
|
||||
],
|
||||
]);
|
||||
|
||||
// Create stripe customer
|
||||
$user->createOrGetStripeCustomer();
|
||||
|
||||
$this->postJson("/api/oasis/subscribe", [
|
||||
'plan' => $this->plan,
|
||||
'billing' => [
|
||||
'billing_address' => '2794 Alfreda Mount Suite 467 East Crystalberg',
|
||||
'billing_city' => 'Christianfort',
|
||||
'billing_country' => 'SK',
|
||||
'billing_name' => 'Heidi Romaguera PhD',
|
||||
'billing_phone_number' => '+421',
|
||||
'billing_postal_code' => '59445',
|
||||
'billing_state' => 'SK',
|
||||
],
|
||||
'payment' => [
|
||||
'type' => 'stripe',
|
||||
'meta' => [
|
||||
'pm' => $paymentMethod['id']
|
||||
],
|
||||
],
|
||||
])->assertStatus(204);
|
||||
|
||||
$this->assertDatabaseHas('subscriptions', [
|
||||
'stripe_status' => 'active'
|
||||
]);
|
||||
|
||||
$this->assertDatabaseHas('user_settings', [
|
||||
'storage_capacity' => 50,
|
||||
'payment_activation' => 1,
|
||||
]);
|
||||
|
||||
$this->assertDatabaseMissing('users', [
|
||||
'stripe_id' => null,
|
||||
'card_brand' => null,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user