mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-18 00:02:15 +00:00
- creating user frontend
This commit is contained in:
@@ -51,10 +51,10 @@ class PaymentRequiredNotification extends Notification
|
||||
return (new MailMessage)
|
||||
->subject('🏝 Potvrzeni Objednavky - OasisDrive')
|
||||
->greeting('Dobry den')
|
||||
->line('🏝 dekujeme za Vasi objednavku. Potvrzenim objednavky se Vas ucet automaticky zaktivuje a vytvori se Vam digitalni prostor pro Vase dulezite dokumenty.')
|
||||
->line('Dekujeme za Vasi objednavku. Potvrzenim objednavky se Vas ucet automaticky zaktivuje a vytvori se Vam digitalni prostor pro Vase dulezite dokumenty.')
|
||||
->line("Datovy tarif: Standard: $storage - $price")
|
||||
->action('Prejst na platbu', $url)
|
||||
->line('Dekujeme, Vas tym OasisDrive');
|
||||
->salutation('Dekujeme, Vas tym OasisDrive');
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
"/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js": "/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js?id=5814ff43ba7c67297af1",
|
||||
"/chunks/create-new-password.js": "/chunks/create-new-password.js?id=f3c8bc62f62ae537f93c",
|
||||
"/chunks/dashboard.js": "/chunks/dashboard.js?id=9809887401e27ef5826e",
|
||||
"/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.js": "/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.js?id=c3c1a252593a1b95eb0f",
|
||||
"/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.js": "/chunks/dashboard~chunks/files~chunks/invoices~chunks/pages~chunks/plans~chunks/settings-payment-meth~0bfeabca.js?id=1c22034c0e30c4530f3d",
|
||||
"/chunks/dashboard~chunks/invoices~chunks/pages~chunks/plan-subscribers~chunks/plans~chunks/settings-i~0e2a0654.js": "/chunks/dashboard~chunks/invoices~chunks/pages~chunks/plan-subscribers~chunks/plans~chunks/settings-i~0e2a0654.js?id=859a6f034ca5697aaf60",
|
||||
"/chunks/database.js": "/chunks/database.js?id=58addbf30b3b2f7c36db",
|
||||
"/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=6dccc2158cc6278f683d",
|
||||
@@ -78,15 +78,98 @@
|
||||
"/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/user.js": "/chunks/user.js?id=8e96e769d9df5c5f7364",
|
||||
"/chunks/user-create.js": "/chunks/user-create.js?id=3066213dc3af06795a28",
|
||||
"/chunks/user-create.js": "/chunks/user-create.js?id=421558158a756e7f87b0",
|
||||
"/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=6bfd86f6bced064b44d3",
|
||||
"/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"
|
||||
"/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"
|
||||
}
|
||||
|
||||
288
resources/js/Oasis/Admin/CreateSubscriptionRequest.vue
Normal file
288
resources/js/Oasis/Admin/CreateSubscriptionRequest.vue
Normal file
@@ -0,0 +1,288 @@
|
||||
<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>
|
||||
|
||||
<!--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>ICO:</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper" name="ICO" rules="required" v-slot="{ errors }">
|
||||
<input v-model="user.ico" placeholder="Type ICO" type="text" class="focus-border-theme" :class="{'is-error': errors[0]}" />
|
||||
<span class="error-message" v-if="errors[0]">{{ errors[0] }}</span>
|
||||
<small v-if="fullDetails" class="input-help">
|
||||
{{ fullDetails }}
|
||||
</small>
|
||||
</ValidationProvider>
|
||||
</div>
|
||||
|
||||
<!--Name-->
|
||||
<div class="block-wrapper">
|
||||
<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>
|
||||
|
||||
|
||||
<div class="block-wrapper">
|
||||
<label>{{ $t('user_settings.address') }}:</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper" rules="required" name="Address" v-slot="{ errors }">
|
||||
<input v-model="user.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="City" v-slot="{ errors }">
|
||||
<input v-model="user.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="Postal Code" v-slot="{ errors }">
|
||||
<input v-model="user.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="Country" v-slot="{ errors }">
|
||||
<SelectInput v-model="user.country"
|
||||
:default="user.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="State" v-slot="{ errors }">
|
||||
<input v-model="user.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="Phone Number" v-slot="{ errors }">
|
||||
<input v-model="user.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 class="block-wrapper">
|
||||
<label>Plan:</label>
|
||||
<ValidationProvider tag="div" mode="passive" class="input-wrapper" rules="required" name="Plan" v-slot="{ errors }">
|
||||
<SelectInput v-model="user.plan"
|
||||
:default="user.country"
|
||||
:options="plans"
|
||||
placeholder="Vyberte plan"
|
||||
:isError="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'
|
||||
import {debounce} from "lodash";
|
||||
|
||||
export default {
|
||||
name: 'CreateSubscriptionRequest',
|
||||
components: {
|
||||
ValidationProvider,
|
||||
ValidationObserver,
|
||||
SectionTitle,
|
||||
MobileHeader,
|
||||
SelectInput,
|
||||
ButtonBase,
|
||||
ImageInput,
|
||||
PageHeader,
|
||||
FormLabel,
|
||||
required,
|
||||
},
|
||||
computed: {
|
||||
...mapGetters([
|
||||
'countries'
|
||||
]),
|
||||
},
|
||||
watch: {
|
||||
'user.ico': function (val) {
|
||||
this.getCompanyDetails(val)
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isLoading: false,
|
||||
plans: [],
|
||||
user: {
|
||||
ico: '',
|
||||
name: '',
|
||||
email: '',
|
||||
address: '',
|
||||
city: '',
|
||||
postal_code: '',
|
||||
country: 'CZ',
|
||||
state: 'Česká Republika',
|
||||
phone_number: '',
|
||||
plan: '',
|
||||
},
|
||||
fullDetails: ''
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
async createUser() {
|
||||
|
||||
// Validate fields
|
||||
const isValid = await this.$refs.createUser.validate();
|
||||
|
||||
if (!isValid) return;
|
||||
|
||||
// Start loading
|
||||
this.isLoading = true
|
||||
|
||||
axios
|
||||
.post('/api/oasis/admin/users/create', this.user)
|
||||
.then(response => {
|
||||
|
||||
// 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) {
|
||||
|
||||
if (error.response.data.errors['email']) {
|
||||
|
||||
this.$refs.createUser.setErrors({
|
||||
'email': error.response.data.errors['email']
|
||||
});
|
||||
}
|
||||
} else {
|
||||
|
||||
events.$emit('alert:open', {
|
||||
title: this.$t('popup_error.title'),
|
||||
message: this.$t('popup_error.message'),
|
||||
})
|
||||
}
|
||||
})
|
||||
.finally(() => {
|
||||
this.isLoading = false
|
||||
})
|
||||
},
|
||||
getCompanyDetails: debounce(function (value) {
|
||||
axios.get('/api/oasis/admin/company-details?ico=' + value)
|
||||
.then(response => {
|
||||
this.user.name = response.data.name
|
||||
this.user.address = response.data.addr_streetnr
|
||||
this.user.city = response.data.city
|
||||
this.user.postal_code = response.data.addr_zip
|
||||
this.fullDetails = response.data.name + ' ' + response.data.addr_full
|
||||
|
||||
this.$refs.createUser.reset()
|
||||
})
|
||||
.catch(error => {
|
||||
if (error.response.status == 404) {
|
||||
this.$refs.createUser.setErrors({
|
||||
'ICO': 'Nič sa nenašlo :('
|
||||
});
|
||||
}
|
||||
})
|
||||
}, 300),
|
||||
},
|
||||
created() {
|
||||
axios.get('/api/admin/plans')
|
||||
.then(response => {
|
||||
response.data.data.forEach(plan => {
|
||||
this.plans.push({
|
||||
label: plan.data.attributes.name + ' - ' + plan.data.attributes.capacity_formatted,
|
||||
value: plan.data.id,
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '@assets/vuefilemanager/_variables';
|
||||
@import '@assets/vuefilemanager/_mixins';
|
||||
@import '@assets/vuefilemanager/_forms';
|
||||
</style>
|
||||
216
resources/js/Oasis/Admin/Users.vue
Normal file
216
resources/js/Oasis/Admin/Users.vue
Normal file
@@ -0,0 +1,216 @@
|
||||
<template>
|
||||
<div id="single-page">
|
||||
<div id="page-content">
|
||||
<MobileHeader :title="$router.currentRoute.meta.title"/>
|
||||
<PageHeader :title="$router.currentRoute.meta.title"/>
|
||||
|
||||
<div class="content-page">
|
||||
|
||||
<!--Table tools-->
|
||||
<div class="table-tools">
|
||||
<div class="buttons">
|
||||
<router-link :to="{name: 'CreateSubscriptionRequest'}">
|
||||
<MobileActionButton icon="dollar-sign">
|
||||
Vytvorit objednavku
|
||||
</MobileActionButton>
|
||||
</router-link>
|
||||
<router-link :to="{name: 'UserCreate'}">
|
||||
<MobileActionButton icon="user-plus">
|
||||
Vytvorit Uzivatela
|
||||
</MobileActionButton>
|
||||
</router-link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--Datatable-->
|
||||
<DatatableWrapper @init="isLoading = false" api="/api/admin/users" :paginator="true" :columns="columns" class="table table-users">
|
||||
<template slot-scope="{ row }">
|
||||
<tr>
|
||||
<td style="min-width: 320px">
|
||||
<router-link :to="{name: 'UserDetail', params: {id: row.data.id}}">
|
||||
<DatatableCellImage
|
||||
:image="row.data.relationships.settings.data.attributes.avatar"
|
||||
:title="row.data.relationships.settings.data.attributes.name"
|
||||
:description="row.data.attributes.email"
|
||||
/>
|
||||
</router-link>
|
||||
</td>
|
||||
<td>
|
||||
<ColorLabel :color="getRoleColor(row.data.attributes.role)">
|
||||
{{ row.data.attributes.role }}
|
||||
</ColorLabel>
|
||||
</td>
|
||||
<td v-if="config.isSaaS">
|
||||
<span class="cell-item" v-if="row.data.attributes.subscription">
|
||||
{{ $t('global.premium') }}
|
||||
</span>
|
||||
<span class="cell-item" v-else>
|
||||
{{ $t('global.free') }}
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<span class="cell-item">
|
||||
{{ row.data.attributes.storage.used_formatted }}
|
||||
</span>
|
||||
</td>
|
||||
<td v-if="config.storageLimit">
|
||||
<span class="cell-item">
|
||||
{{ row.data.attributes.storage.capacity_formatted }}
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<span class="cell-item">
|
||||
{{ row.data.attributes.created_at_formatted }}
|
||||
</span>
|
||||
</td>
|
||||
<td>
|
||||
<div class="action-icons">
|
||||
<router-link :to="{name: 'UserDetail', params: {id: row.data.id}}">
|
||||
<Edit2Icon size="15" class="icon icon-edit" />
|
||||
</router-link>
|
||||
<router-link :to="{name: 'UserDelete', params: {id: row.data.id}}">
|
||||
<Trash2Icon size="15" class="icon icon-trash" />
|
||||
</router-link>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</template>
|
||||
</DatatableWrapper>
|
||||
</div>
|
||||
</div>
|
||||
<div id="loader" v-if="isLoading">
|
||||
<Spinner></Spinner>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import DatatableCellImage from '@/components/Others/Tables/DatatableCellImage'
|
||||
import DatatableWrapper from '@/components/Others/Tables/DatatableWrapper'
|
||||
import MobileActionButton from '@/components/FilesView/MobileActionButton'
|
||||
import MobileHeader from '@/components/Mobile/MobileHeader'
|
||||
import SectionTitle from '@/components/Others/SectionTitle'
|
||||
import ButtonBase from '@/components/FilesView/ButtonBase'
|
||||
import {Trash2Icon, Edit2Icon} from "vue-feather-icons";
|
||||
import PageHeader from '@/components/Others/PageHeader'
|
||||
import ColorLabel from '@/components/Others/ColorLabel'
|
||||
import Spinner from '@/components/FilesView/Spinner'
|
||||
import {mapGetters} from "vuex"
|
||||
import axios from 'axios'
|
||||
|
||||
export default {
|
||||
name: 'Profile',
|
||||
components: {
|
||||
DatatableCellImage,
|
||||
MobileActionButton,
|
||||
DatatableWrapper,
|
||||
SectionTitle,
|
||||
MobileHeader,
|
||||
Trash2Icon,
|
||||
PageHeader,
|
||||
ButtonBase,
|
||||
ColorLabel,
|
||||
Edit2Icon,
|
||||
Spinner,
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['config']),
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
isLoading: true,
|
||||
columns: undefined,
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getRoleColor(role) {
|
||||
switch(role) {
|
||||
case 'admin':
|
||||
return 'purple'
|
||||
break;
|
||||
case 'user':
|
||||
return 'yellow'
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.columns = [
|
||||
{
|
||||
label: this.$t('admin_page_user.table.name'),
|
||||
field: 'name',
|
||||
sortable: true
|
||||
},
|
||||
{
|
||||
label: this.$t('admin_page_user.table.role'),
|
||||
field: 'role',
|
||||
sortable: true
|
||||
},
|
||||
{
|
||||
label: this.$t('admin_page_user.table.plan'),
|
||||
field: 'subscription',
|
||||
sortable: false,
|
||||
hidden: ! this.config.isSaaS,
|
||||
},
|
||||
{
|
||||
label: this.$t('admin_page_user.table.storage_used'),
|
||||
field: 'used',
|
||||
sortable: true
|
||||
},
|
||||
{
|
||||
label: this.$t('admin_page_user.table.storage_capacity'),
|
||||
field: 'settings.storage_capacity',
|
||||
sortable: true,
|
||||
hidden: ! this.config.storageLimit,
|
||||
},
|
||||
{
|
||||
label: this.$t('admin_page_user.table.created_at'),
|
||||
field: 'created_at',
|
||||
sortable: true
|
||||
},
|
||||
{
|
||||
label: this.$t('admin_page_user.table.action'),
|
||||
field: 'data.action',
|
||||
sortable: false
|
||||
},
|
||||
]
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@import '@assets/vuefilemanager/_variables';
|
||||
@import '@assets/vuefilemanager/_mixins';
|
||||
|
||||
.table-tools {
|
||||
background: white;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding: 15px 0 10px;
|
||||
position: sticky;
|
||||
top: 40px;
|
||||
z-index: 9;
|
||||
}
|
||||
|
||||
.table {
|
||||
|
||||
.cell-item {
|
||||
@include font-size(15);
|
||||
white-space: nowrap;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 690px) {
|
||||
.table-tools {
|
||||
padding: 0 0 5px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
|
||||
.table-tools {
|
||||
background: $dark_mode_background;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -11,6 +11,7 @@
|
||||
<check-square-icon v-if="icon === 'check-square'" size="15" class="icon"></check-square-icon>
|
||||
<x-square-icon v-if="icon === 'x-square'" size="15" class="icon"></x-square-icon>
|
||||
<check-icon v-if="icon === 'check'" size="15" class="icon"></check-icon>
|
||||
<dollar-sign-icon v-if="icon === 'dollar-sign'" size="15" class="icon"></dollar-sign-icon>
|
||||
<sorting-and-preview-icon v-if="icon === 'preview-sorting'" size="15" class="icon preview-sorting"></sorting-and-preview-icon>
|
||||
<span class="label">
|
||||
<slot></slot>
|
||||
@@ -20,7 +21,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { CheckIcon, XSquareIcon, CheckSquareIcon, FolderPlusIcon, ListIcon, GridIcon, TrashIcon, UserPlusIcon, PlusIcon, CreditCardIcon } from 'vue-feather-icons'
|
||||
import { DollarSignIcon, CheckIcon, XSquareIcon, CheckSquareIcon, FolderPlusIcon, ListIcon, GridIcon, TrashIcon, UserPlusIcon, PlusIcon, CreditCardIcon } from 'vue-feather-icons'
|
||||
import SortingAndPreviewIcon from '@/components/FilesView/Icons/SortingAndPreviewIcon'
|
||||
|
||||
export default {
|
||||
@@ -31,6 +32,7 @@
|
||||
components: {
|
||||
SortingAndPreviewIcon,
|
||||
CheckSquareIcon,
|
||||
DollarSignIcon,
|
||||
CreditCardIcon,
|
||||
FolderPlusIcon,
|
||||
UserPlusIcon,
|
||||
|
||||
35
resources/js/router.js
vendored
35
resources/js/router.js
vendored
@@ -8,6 +8,40 @@ import UserProfileMobileMenu from './views/Mobile/UserProfileMobileMenu'
|
||||
|
||||
Vue.use(Router)
|
||||
|
||||
const routesOasis = [
|
||||
{
|
||||
name: 'Admin',
|
||||
path: '/admin',
|
||||
component: () =>
|
||||
import(/* webpackChunkName: "chunks/admin" */ './views/Admin'),
|
||||
meta: {
|
||||
requiresAuth: true,
|
||||
title: 'Admin'
|
||||
},
|
||||
children: [
|
||||
{
|
||||
name: 'Users',
|
||||
path: '/admin/users',
|
||||
component: () =>
|
||||
import(/* webpackChunkName: "chunks/users" */ './Oasis/Admin/Users'),
|
||||
meta: {
|
||||
requiresAuth: true,
|
||||
title: i18n.t('routes_title.users_list')
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'CreateSubscriptionRequest',
|
||||
path: '/admin/user/order',
|
||||
component: () =>
|
||||
import(/* webpackChunkName: "chunks/user-create" */ './Oasis/Admin/CreateSubscriptionRequest'),
|
||||
meta: {
|
||||
requiresAuth: true,
|
||||
title: i18n.t('routes_title.user_create')
|
||||
},
|
||||
},
|
||||
]
|
||||
},
|
||||
]
|
||||
const routesAdmin = [
|
||||
{
|
||||
name: 'Admin',
|
||||
@@ -658,6 +692,7 @@ const routesIndex = [
|
||||
const router = new Router({
|
||||
mode: 'history',
|
||||
routes: [
|
||||
...routesOasis,
|
||||
...routesMaintenance,
|
||||
...routesShared,
|
||||
...routesAdmin,
|
||||
|
||||
Reference in New Issue
Block a user