wip
This commit is contained in:
@@ -14,8 +14,11 @@ class ServerController extends Controller
|
|||||||
{
|
{
|
||||||
$servers = auth()->user()->servers()->latest()->paginate();
|
$servers = auth()->user()->servers()->latest()->paginate();
|
||||||
|
|
||||||
|
$providers = auth()->user()->package->providers()->pluck('label', 'id');
|
||||||
|
|
||||||
return inertia('Servers/Index', [
|
return inertia('Servers/Index', [
|
||||||
'servers' => ServerResource::collection($servers)
|
'servers' => ServerResource::collection($servers),
|
||||||
|
'dataProviders' => $providers
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,4 +54,11 @@ class ServerController extends Controller
|
|||||||
|
|
||||||
return redirect()->route('servers.index')->with('success', __('Your server is deleted'));
|
return redirect()->route('servers.index')->with('success', __('Your server is deleted'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function regions(Request $request, $providerId)
|
||||||
|
{
|
||||||
|
$provider = $request->user()->package->providers()->findOrFail($providerId);
|
||||||
|
|
||||||
|
return $provider->regions()->pluck('label', 'id');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,12 +34,12 @@ class ServerRequest extends FormRequest
|
|||||||
'provider' => [
|
'provider' => [
|
||||||
'required',
|
'required',
|
||||||
'not_in:0',
|
'not_in:0',
|
||||||
'exists:provider_plans,plan_id'
|
'exists:provider_plans,id'
|
||||||
],
|
],
|
||||||
'region' => [
|
'region' => [
|
||||||
'required',
|
'required',
|
||||||
'not_in:0',
|
'not_in:0',
|
||||||
'exists:provider_regions,region_id'
|
'exists:provider_regions,id'
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
88
public/js/52.js
vendored
88
public/js/52.js
vendored
@@ -109,6 +109,11 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
//
|
//
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -175,7 +180,8 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
DropdownListItemButton: _components_DropdownListItemButton__WEBPACK_IMPORTED_MODULE_27__["default"]
|
DropdownListItemButton: _components_DropdownListItemButton__WEBPACK_IMPORTED_MODULE_27__["default"]
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
servers: Object
|
servers: Object,
|
||||||
|
dataProviders: Object
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
shouldBePolling: function shouldBePolling() {
|
shouldBePolling: function shouldBePolling() {
|
||||||
@@ -199,6 +205,13 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
if (!this.pollingInterval) {
|
if (!this.pollingInterval) {
|
||||||
this.startPollingInterval();
|
this.startPollingInterval();
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
'form.provider': function formProvider(value) {
|
||||||
|
var _this = this;
|
||||||
|
|
||||||
|
window.axios.get(this.route('servers.regions', value)).then(function (response) {
|
||||||
|
_this.regions = response.data;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data: function data() {
|
data: function data() {
|
||||||
@@ -208,6 +221,8 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
provider: null,
|
provider: null,
|
||||||
region: null
|
region: null
|
||||||
},
|
},
|
||||||
|
providers: this.dataProviders,
|
||||||
|
regions: [],
|
||||||
pollingInterval: null,
|
pollingInterval: null,
|
||||||
modalIsOpen: false,
|
modalIsOpen: false,
|
||||||
breadcrumbs: [{
|
breadcrumbs: [{
|
||||||
@@ -238,25 +253,26 @@ __webpack_require__.r(__webpack_exports__);
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
submit: function submit() {
|
submit: function submit() {
|
||||||
var _this = this;
|
var _this2 = this;
|
||||||
|
|
||||||
this.$inertia.post(this.route('servers.store'), this.form, {
|
this.$inertia.post(this.route('servers.store'), this.form, {
|
||||||
only: ['errors', 'flash', 'servers']
|
only: ['errors', 'flash', 'servers'],
|
||||||
}).then(function (response) {
|
onFinish: function onFinish() {
|
||||||
if (!Object.keys(_this.$page.errors).length) {
|
if (!Object.keys(_this2.$page.errors).length) {
|
||||||
_this.form.domain = null;
|
_this2.form.domain = null;
|
||||||
_this.modalIsOpen = false;
|
_this2.modalIsOpen = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
confirmDelete: function confirmDelete(server) {
|
confirmDelete: function confirmDelete(server) {
|
||||||
var _this2 = this;
|
var _this3 = this;
|
||||||
|
|
||||||
Object(_hooks_confirm_delete__WEBPACK_IMPORTED_MODULE_28__["useConfirmDelete"])({
|
Object(_hooks_confirm_delete__WEBPACK_IMPORTED_MODULE_28__["useConfirmDelete"])({
|
||||||
title: this.__('Are you sure?'),
|
title: this.__('Are you sure?'),
|
||||||
message: "Your server will be deleted completely, this action is irreversible.",
|
message: "Your server will be deleted completely, this action is irreversible.",
|
||||||
onConfirm: function onConfirm() {
|
onConfirm: function onConfirm() {
|
||||||
return _this2["delete"](server);
|
return _this3["delete"](server);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@@ -487,7 +503,15 @@ var render = function() {
|
|||||||
"FormSelect",
|
"FormSelect",
|
||||||
{
|
{
|
||||||
attrs: {
|
attrs: {
|
||||||
|
errors: _vm.$page.errors.provider,
|
||||||
label: _vm.__("Select provider")
|
label: _vm.__("Select provider")
|
||||||
|
},
|
||||||
|
model: {
|
||||||
|
value: _vm.form.provider,
|
||||||
|
callback: function($$v) {
|
||||||
|
_vm.$set(_vm.form, "provider", $$v)
|
||||||
|
},
|
||||||
|
expression: "form.provider"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[
|
[
|
||||||
@@ -501,14 +525,33 @@ var render = function() {
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
)
|
),
|
||||||
]
|
_vm._v(" "),
|
||||||
|
_vm._l(_vm.providers, function(name, id) {
|
||||||
|
return _c(
|
||||||
|
"option",
|
||||||
|
{ domProps: { value: id } },
|
||||||
|
[_vm._v(_vm._s(name))]
|
||||||
|
)
|
||||||
|
})
|
||||||
|
],
|
||||||
|
2
|
||||||
),
|
),
|
||||||
_vm._v(" "),
|
_vm._v(" "),
|
||||||
_c(
|
_c(
|
||||||
"FormSelect",
|
"FormSelect",
|
||||||
{
|
{
|
||||||
attrs: { label: _vm.__("Select region") }
|
attrs: {
|
||||||
|
errors: _vm.$page.errors.region,
|
||||||
|
label: _vm.__("Select region")
|
||||||
|
},
|
||||||
|
model: {
|
||||||
|
value: _vm.form.region,
|
||||||
|
callback: function($$v) {
|
||||||
|
_vm.$set(_vm.form, "region", $$v)
|
||||||
|
},
|
||||||
|
expression: "form.region"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
[
|
[
|
||||||
_c(
|
_c(
|
||||||
@@ -521,8 +564,17 @@ var render = function() {
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
)
|
),
|
||||||
]
|
_vm._v(" "),
|
||||||
|
_vm._l(_vm.regions, function(name, id) {
|
||||||
|
return _c(
|
||||||
|
"option",
|
||||||
|
{ domProps: { value: id } },
|
||||||
|
[_vm._v(_vm._s(name))]
|
||||||
|
)
|
||||||
|
})
|
||||||
|
],
|
||||||
|
2
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -544,7 +596,7 @@ var render = function() {
|
|||||||
],
|
],
|
||||||
null,
|
null,
|
||||||
false,
|
false,
|
||||||
1527714898
|
3699054859
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
: _vm._e()
|
: _vm._e()
|
||||||
@@ -722,7 +774,11 @@ var render = function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
[_vm._v("Delete")]
|
[
|
||||||
|
_vm._v(
|
||||||
|
"\n Delete\n "
|
||||||
|
)
|
||||||
|
]
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
1
|
1
|
||||||
|
|||||||
748
public/js/76.js
vendored
748
public/js/76.js
vendored
File diff suppressed because one or more lines are too long
2
public/js/app.js
vendored
2
public/js/app.js
vendored
@@ -43,7 +43,7 @@
|
|||||||
/******/
|
/******/
|
||||||
/******/ // script path function
|
/******/ // script path function
|
||||||
/******/ function jsonpScriptSrc(chunkId) {
|
/******/ function jsonpScriptSrc(chunkId) {
|
||||||
/******/ return __webpack_require__.p + "js/" + ({}[chunkId]||chunkId) + ".js?id=" + {"0":"0dcde053981f92959e59","1":"40f269324eb90e7c5005","2":"d2a49802291d427ca7c8","3":"a0f4c2f49863abbfe7f1","4":"27416beeac7dd90b6c9f","5":"fbfbcf45610d060d921e","6":"73fc0264b5cc06f5bd55","7":"140acb8c38018bb7c822","8":"3b0a87d878c97185a291","9":"3347d79d05ca0ac7a350","10":"47d8d4c4aa7f3eeae6b8","11":"8c5c9f6fa8b7aaec38ee","12":"03ffa63c616af52e9173","13":"1f917f9eb173c1c73c26","14":"d0c922727dbc8b127550","15":"b406efe2b2eb8988be0b","16":"ae392c0d7939c1834713","17":"031677a852ea3f5eb57a","18":"78c595d4f44ed93b16ae","19":"0cefe5adcf3c9c67917d","20":"c3aaa3a8880c1323f5b9","21":"c6824027cf77f1875e86","22":"bb6e0db11ce8cea1ea15","23":"0924f149c1e3f1ccc23b","24":"e0139a753b3037348bd3","25":"523a459f15606706e0f4","26":"78ea723a4d8f6c925287","27":"61b4c089c608f7f27b57","28":"df81cbcdc7dddac9a1cf","29":"205fcb561832fdca3613","30":"34254d5ab54e1b77af57","31":"b24fe053d9586525bd04","32":"d40da2a9d0dfcdfcf40e","33":"4ee1d57db25ce73da07a","34":"a1dc60cf9b240735c524","35":"13384dcc57163b2c15fb","36":"07128eb2197b6a6d9955","37":"8b8ab95aeaa851c57033","38":"d123e29b59d771ee7750","39":"fe834feb15b9160591f0","40":"90e1e3b80ac15780aa45","41":"26e0438c5430defefcb4","42":"f7e025a8a96b2e66d300","43":"c6cbbb84bf085e916af4","44":"837f8f061ed475f2c043","45":"1311d0b2659eb428a007","46":"96963330e5744696f861","47":"b9dd7aafbd529e03b008","48":"303c80c25410a7039819","49":"080bb4762ce606a20938","50":"6a2be057a821819e0f3f","51":"31ee010f65a984f2b422","52":"ef659bf7acfc733ae0e8","53":"327b50ce903b0f348341","54":"cb30fead7b74df252e66","55":"0953446db22303519e08","56":"6bc136b4c9a35e9a1836","57":"3f7b6082e37f0f114055","58":"a1668de9111dbf09572b","59":"b6ab5d03b46b7ae139a7","60":"37d00800b71f79260df7","61":"7799c0088535883cfcdc","62":"5e0875a9e333d029edcb","63":"3fbf8bbeb22bdf1a3538","64":"35e94b96c17d9176fdd1","65":"c40d3bc7ae4294705195","66":"54405ebd171bf0a0be8a","67":"0cf2c9062ba4048c4d16","68":"47e5da1f84b24bfeab25","69":"6258b9920cf545ad6043","70":"cf0dc959ae07c017ed3e","71":"a82af2a3c60b498c6b10","72":"adda6ceb50c78f5aae68","73":"884f5978ac8bcb4fdc45","74":"cf1ca882da11e35bea7c","75":"7e7c004989bdfef01a71"}[chunkId] + ""
|
/******/ return __webpack_require__.p + "js/" + ({}[chunkId]||chunkId) + ".js?id=" + {"0":"0dcde053981f92959e59","1":"40f269324eb90e7c5005","2":"d2a49802291d427ca7c8","3":"a0f4c2f49863abbfe7f1","4":"27416beeac7dd90b6c9f","5":"fbfbcf45610d060d921e","6":"73fc0264b5cc06f5bd55","7":"140acb8c38018bb7c822","8":"3b0a87d878c97185a291","9":"3347d79d05ca0ac7a350","10":"47d8d4c4aa7f3eeae6b8","11":"8c5c9f6fa8b7aaec38ee","12":"03ffa63c616af52e9173","13":"1f917f9eb173c1c73c26","14":"d0c922727dbc8b127550","15":"b406efe2b2eb8988be0b","16":"ae392c0d7939c1834713","17":"031677a852ea3f5eb57a","18":"78c595d4f44ed93b16ae","19":"0cefe5adcf3c9c67917d","20":"c3aaa3a8880c1323f5b9","21":"c6824027cf77f1875e86","22":"bb6e0db11ce8cea1ea15","23":"0924f149c1e3f1ccc23b","24":"e0139a753b3037348bd3","25":"523a459f15606706e0f4","26":"78ea723a4d8f6c925287","27":"61b4c089c608f7f27b57","28":"df81cbcdc7dddac9a1cf","29":"205fcb561832fdca3613","30":"34254d5ab54e1b77af57","31":"b24fe053d9586525bd04","32":"d40da2a9d0dfcdfcf40e","33":"4ee1d57db25ce73da07a","34":"a1dc60cf9b240735c524","35":"13384dcc57163b2c15fb","36":"07128eb2197b6a6d9955","37":"8b8ab95aeaa851c57033","38":"d123e29b59d771ee7750","39":"fe834feb15b9160591f0","40":"90e1e3b80ac15780aa45","41":"26e0438c5430defefcb4","42":"f7e025a8a96b2e66d300","43":"c6cbbb84bf085e916af4","44":"837f8f061ed475f2c043","45":"1311d0b2659eb428a007","46":"96963330e5744696f861","47":"b9dd7aafbd529e03b008","48":"303c80c25410a7039819","49":"080bb4762ce606a20938","50":"6a2be057a821819e0f3f","51":"31ee010f65a984f2b422","52":"8b80af5beb017ef9538e","53":"327b50ce903b0f348341","54":"cb30fead7b74df252e66","55":"0953446db22303519e08","56":"6bc136b4c9a35e9a1836","57":"3f7b6082e37f0f114055","58":"a1668de9111dbf09572b","59":"b6ab5d03b46b7ae139a7","60":"37d00800b71f79260df7","61":"7799c0088535883cfcdc","62":"5e0875a9e333d029edcb","63":"3fbf8bbeb22bdf1a3538","64":"35e94b96c17d9176fdd1","65":"c40d3bc7ae4294705195","66":"54405ebd171bf0a0be8a","67":"0cf2c9062ba4048c4d16","68":"47e5da1f84b24bfeab25","69":"6258b9920cf545ad6043","70":"cf0dc959ae07c017ed3e","71":"a82af2a3c60b498c6b10","72":"adda6ceb50c78f5aae68","73":"884f5978ac8bcb4fdc45","74":"cf1ca882da11e35bea7c","75":"7e7c004989bdfef01a71"}[chunkId] + ""
|
||||||
/******/ }
|
/******/ }
|
||||||
/******/
|
/******/
|
||||||
/******/ // The require function
|
/******/ // The require function
|
||||||
|
|||||||
@@ -8,12 +8,15 @@
|
|||||||
<template #form>
|
<template #form>
|
||||||
<FormInput :label="__('Name')" :errors="$page.errors.name" v-model="form.name"/>
|
<FormInput :label="__('Name')" :errors="$page.errors.name" v-model="form.name"/>
|
||||||
|
|
||||||
<FormSelect :label="__('Select provider')">
|
<FormSelect :errors="$page.errors.provider" :label="__('Select provider')"
|
||||||
|
v-model="form.provider">
|
||||||
<option :value="`${null}`">{{ __('Select random provider') }}</option>
|
<option :value="`${null}`">{{ __('Select random provider') }}</option>
|
||||||
|
<option v-for="(name, id) in providers" :value="id">{{ name }}</option>
|
||||||
</FormSelect>
|
</FormSelect>
|
||||||
|
|
||||||
<FormSelect :label="__('Select region')">
|
<FormSelect :errors="$page.errors.region" :label="__('Select region')" v-model="form.region">
|
||||||
<option :value="`${null}`">{{ __('Select random region') }}</option>
|
<option :value="`${null}`">{{ __('Select random region') }}</option>
|
||||||
|
<option v-for="(name, id) in regions" :value="id">{{ name }}</option>
|
||||||
</FormSelect>
|
</FormSelect>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -38,7 +41,7 @@
|
|||||||
</PageHeader>
|
</PageHeader>
|
||||||
|
|
||||||
<PageBody>
|
<PageBody>
|
||||||
<EmptyImage v-if="!servers.meta.total" />
|
<EmptyImage v-if="!servers.meta.total"/>
|
||||||
<List>
|
<List>
|
||||||
<ListItem v-for="server in servers.data" :key="server.id">
|
<ListItem v-for="server in servers.data" :key="server.id">
|
||||||
<template #prefix>
|
<template #prefix>
|
||||||
@@ -52,12 +55,14 @@
|
|||||||
<template #suffix>
|
<template #suffix>
|
||||||
<Dropdown v-slot="{ isOpen, toggle, position }">
|
<Dropdown v-slot="{ isOpen, toggle, position }">
|
||||||
<IconButton @click="toggle">
|
<IconButton @click="toggle">
|
||||||
<IconMore class="w-5 h-5" />
|
<IconMore class="w-5 h-5"/>
|
||||||
</IconButton>
|
</IconButton>
|
||||||
|
|
||||||
<DropdownList :position="position" v-if="isOpen">
|
<DropdownList :position="position" v-if="isOpen">
|
||||||
<DropdownListItem :to="route('servers.show', server.id)">View</DropdownListItem>
|
<DropdownListItem :to="route('servers.show', server.id)">View</DropdownListItem>
|
||||||
<DropdownListItemButton class="text-danger" @click="confirmDelete(server)">Delete</DropdownListItemButton>
|
<DropdownListItemButton class="text-danger" @click="confirmDelete(server)">
|
||||||
|
Delete
|
||||||
|
</DropdownListItemButton>
|
||||||
</DropdownList>
|
</DropdownList>
|
||||||
</Dropdown>
|
</Dropdown>
|
||||||
</template>
|
</template>
|
||||||
@@ -141,6 +146,7 @@ export default {
|
|||||||
|
|
||||||
props: {
|
props: {
|
||||||
servers: Object,
|
servers: Object,
|
||||||
|
dataProviders: Object,
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
@@ -151,8 +157,8 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
mounted(){
|
mounted() {
|
||||||
if(this.shouldBePolling){
|
if (this.shouldBePolling) {
|
||||||
this.startPollingInterval();
|
this.startPollingInterval();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -165,9 +171,16 @@ export default {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!this.pollingInterval){
|
if (!this.pollingInterval) {
|
||||||
this.startPollingInterval();
|
this.startPollingInterval();
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
'form.provider': function(value) {
|
||||||
|
window.axios.get(this.route('servers.regions', value))
|
||||||
|
.then(response => {
|
||||||
|
this.regions = response.data;
|
||||||
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -179,6 +192,9 @@ export default {
|
|||||||
region: null,
|
region: null,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
providers: this.dataProviders,
|
||||||
|
regions: [],
|
||||||
|
|
||||||
pollingInterval: null,
|
pollingInterval: null,
|
||||||
|
|
||||||
modalIsOpen: false,
|
modalIsOpen: false,
|
||||||
@@ -196,13 +212,13 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
startPollingInterval(){
|
startPollingInterval() {
|
||||||
this.pollingInterval = setInterval(function () {
|
this.pollingInterval = setInterval(function () {
|
||||||
this.poll();
|
this.poll();
|
||||||
}.bind(this), 3000);
|
}.bind(this), 3000);
|
||||||
},
|
},
|
||||||
|
|
||||||
clearPollingInterval(){
|
clearPollingInterval() {
|
||||||
clearTimeout(this.pollingInterval);
|
clearTimeout(this.pollingInterval);
|
||||||
this.pollingInterval = null;
|
this.pollingInterval = null;
|
||||||
},
|
},
|
||||||
@@ -216,14 +232,14 @@ export default {
|
|||||||
|
|
||||||
submit() {
|
submit() {
|
||||||
this.$inertia.post(this.route('servers.store'), this.form, {
|
this.$inertia.post(this.route('servers.store'), this.form, {
|
||||||
only: ['errors', 'flash', 'servers']
|
only: ['errors', 'flash', 'servers'],
|
||||||
})
|
onFinish: () => {
|
||||||
.then((response) => {
|
|
||||||
if (!Object.keys(this.$page.errors).length) {
|
if (!Object.keys(this.$page.errors).length) {
|
||||||
this.form.domain = null;
|
this.form.domain = null;
|
||||||
this.modalIsOpen = false;
|
this.modalIsOpen = false;
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
confirmDelete(server) {
|
confirmDelete(server) {
|
||||||
@@ -239,7 +255,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
beforeDestroy(){
|
beforeDestroy() {
|
||||||
this.clearPollingInterval();
|
this.clearPollingInterval();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ Route::group(['middleware' => ['auth', 'auth.blocked']], function () {
|
|||||||
// Server routes
|
// Server routes
|
||||||
Route::group(['prefix' => 'servers', 'as' => 'servers.'], function () {
|
Route::group(['prefix' => 'servers', 'as' => 'servers.'], function () {
|
||||||
Route::get('/', 'ServerController@index')->name('index');
|
Route::get('/', 'ServerController@index')->name('index');
|
||||||
|
Route::get('{provider}/regions', 'ServerController@regions')->name('regions');
|
||||||
Route::get('{server}', 'ServerController@show')->name('show');
|
Route::get('{server}', 'ServerController@show')->name('show');
|
||||||
Route::get('{server}/settings', 'ServerController@show')->name('show');
|
Route::get('{server}/settings', 'ServerController@show')->name('show');
|
||||||
Route::post('/', 'ServerController@store')->name('store');
|
Route::post('/', 'ServerController@store')->name('store');
|
||||||
|
|||||||
Reference in New Issue
Block a user