Remove API URLs and ACL checks from admin VueProps.
This commit is contained in:
parent
b1bb1a6abd
commit
7425c3ff7a
|
@ -87,12 +87,9 @@ import useHasDatatable from "~/functions/useHasDatatable";
|
|||
import useHasEditModal from "~/functions/useHasEditModal";
|
||||
import useConfirmAndDelete from "~/functions/useConfirmAndDelete";
|
||||
import CardPage from "~/components/Common/CardPage.vue";
|
||||
import {getApiUrl} from "~/router";
|
||||
|
||||
const props = defineProps({
|
||||
listUrl: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
stations: {
|
||||
type: Array,
|
||||
required: true
|
||||
|
@ -107,6 +104,8 @@ const props = defineProps({
|
|||
}
|
||||
});
|
||||
|
||||
const listUrl = getApiUrl('/admin/roles');
|
||||
|
||||
const {$gettext} = useTranslate();
|
||||
|
||||
const fields = [
|
||||
|
|
|
@ -93,13 +93,10 @@ import useHasDatatable from "~/functions/useHasDatatable";
|
|||
import useHasEditModal from "~/functions/useHasEditModal";
|
||||
import useConfirmAndDelete from "~/functions/useConfirmAndDelete";
|
||||
import CardPage from "~/components/Common/CardPage.vue";
|
||||
import {getApiUrl} from "~/router";
|
||||
|
||||
const props = defineProps({
|
||||
...stationFormProps,
|
||||
listUrl: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
frontendTypes: {
|
||||
type: Object,
|
||||
required: true
|
||||
|
@ -110,6 +107,8 @@ const props = defineProps({
|
|||
}
|
||||
});
|
||||
|
||||
const listUrl = getApiUrl('/admin/stations');
|
||||
|
||||
const {$gettext} = useTranslate();
|
||||
|
||||
const fields = [
|
||||
|
|
|
@ -65,6 +65,7 @@ import {useVModel} from "@vueuse/core";
|
|||
import {useVuelidateOnFormTab} from "~/functions/useVuelidateOnFormTab";
|
||||
import {useAzuraCast} from "~/vendor/azuracast";
|
||||
import Tab from "~/components/Common/Tab.vue";
|
||||
import {getApiUrl} from "~/router";
|
||||
|
||||
const props = defineProps({
|
||||
form: {
|
||||
|
@ -74,13 +75,11 @@ const props = defineProps({
|
|||
isEditMode: {
|
||||
type: Boolean,
|
||||
required: true
|
||||
},
|
||||
storageLocationApiUrl: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
}
|
||||
});
|
||||
|
||||
const storageLocationApiUrl = getApiUrl('/admin/stations/storage-locations');
|
||||
|
||||
const {enableAdvancedFeatures} = useAzuraCast();
|
||||
|
||||
const emit = defineEmits(['update:form']);
|
||||
|
@ -148,7 +147,7 @@ const filterLocations = (group) => {
|
|||
const {axios} = useAxios();
|
||||
|
||||
const loadLocations = () => {
|
||||
axios.get(props.storageLocationApiUrl).then((resp) => {
|
||||
axios.get(storageLocationApiUrl.value).then((resp) => {
|
||||
storageLocationOptions.media_storage_location = objectToFormOptions(
|
||||
filterLocations(resp.data.media_storage_location)
|
||||
);
|
||||
|
|
|
@ -48,7 +48,6 @@
|
|||
v-if="showAdminTab"
|
||||
v-model:form="form"
|
||||
:is-edit-mode="isEditMode"
|
||||
:storage-location-api-url="storageLocationApiUrl"
|
||||
/>
|
||||
</tabs>
|
||||
|
||||
|
@ -86,6 +85,7 @@ import stationFormProps from "~/components/Admin/Stations/stationFormProps";
|
|||
import {useResettableRef} from "~/functions/useResettableRef";
|
||||
import Loading from '~/components/Common/Loading';
|
||||
import Tabs from "~/components/Common/Tabs.vue";
|
||||
import {GlobalPermission, userAllowed} from "~/acl";
|
||||
|
||||
const props = defineProps({
|
||||
...stationFormProps,
|
||||
|
@ -109,6 +109,8 @@ const props = defineProps({
|
|||
|
||||
const emit = defineEmits(['error', 'submitted', 'loadingUpdate', 'validUpdate']);
|
||||
|
||||
const showAdminTab = userAllowed(GlobalPermission.Stations);
|
||||
|
||||
const {form, resetForm, v$, ifValid} = useVuelidateOnForm();
|
||||
|
||||
const isValid = computed(() => {
|
||||
|
|
|
@ -1,9 +1,4 @@
|
|||
export default {
|
||||
// Global
|
||||
showAdminTab: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
// Profile
|
||||
timezones: Object,
|
||||
// Frontend
|
||||
|
@ -16,6 +11,4 @@ export default {
|
|||
default: false
|
||||
},
|
||||
countries: Object,
|
||||
// Admin
|
||||
storageLocationApiUrl: String
|
||||
}
|
||||
|
|
|
@ -92,18 +92,17 @@ import useHasDatatable from "~/functions/useHasDatatable";
|
|||
import useHasEditModal from "~/functions/useHasEditModal";
|
||||
import useConfirmAndDelete from "~/functions/useConfirmAndDelete";
|
||||
import CardPage from "~/components/Common/CardPage.vue";
|
||||
import {getApiUrl} from "~/router";
|
||||
|
||||
const props = defineProps({
|
||||
listUrl: {
|
||||
type: String,
|
||||
required: true
|
||||
},
|
||||
roles: {
|
||||
type: Object,
|
||||
required: true
|
||||
}
|
||||
});
|
||||
|
||||
const listUrl = getApiUrl('/admin/users');
|
||||
|
||||
const {$gettext} = useTranslate();
|
||||
|
||||
const fields = [
|
||||
|
|
|
@ -22,12 +22,9 @@ final class PermissionsAction implements SingleActionInterface
|
|||
Response $response,
|
||||
array $params
|
||||
): ResponseInterface {
|
||||
$router = $request->getRouter();
|
||||
|
||||
$actions = $request->getAcl()->listPermissions();
|
||||
|
||||
return $response->withJson([
|
||||
'listUrl' => $router->fromHere('api:admin:roles'),
|
||||
'stations' => $this->stationRepo->fetchSelect(),
|
||||
'globalPermissions' => $actions['global'],
|
||||
'stationPermissions' => $actions['station'],
|
||||
|
|
|
@ -24,13 +24,10 @@ final class StationsAction implements SingleActionInterface
|
|||
Response $response,
|
||||
array $params
|
||||
): ResponseInterface {
|
||||
$router = $request->getRouter();
|
||||
|
||||
return $response->withJson(
|
||||
array_merge(
|
||||
$this->stationFormComponent->getProps($request),
|
||||
[
|
||||
'listUrl' => $router->fromHere('api:admin:stations'),
|
||||
'frontendTypes' => $this->adapters->listFrontendAdapters(),
|
||||
'backendTypes' => $this->adapters->listBackendAdapters(),
|
||||
]
|
||||
|
|
|
@ -22,10 +22,7 @@ final class UsersAction implements SingleActionInterface
|
|||
Response $response,
|
||||
array $params
|
||||
): ResponseInterface {
|
||||
$router = $request->getRouter();
|
||||
|
||||
return $response->withJson([
|
||||
'listUrl' => $router->fromHere('api:admin:users'),
|
||||
'roles' => $this->roleRepo->fetchSelect(),
|
||||
]);
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@ declare(strict_types=1);
|
|||
|
||||
namespace App\VueComponent;
|
||||
|
||||
use App\Enums\GlobalPermissions;
|
||||
use App\Http\ServerRequest;
|
||||
use App\Radio\Adapters;
|
||||
use App\Radio\Enums\FrontendAdapters;
|
||||
|
@ -25,14 +24,10 @@ final class StationFormComponent implements VueComponentInterface
|
|||
$installedFrontends = $this->adapters->listFrontendAdapters(true);
|
||||
|
||||
return [
|
||||
'showAdminTab' => $request->getAcl()->isAllowed(GlobalPermissions::Stations),
|
||||
'timezones' => $this->getTimezones(),
|
||||
'isShoutcastInstalled' => isset($installedFrontends[FrontendAdapters::Shoutcast->value]),
|
||||
'isStereoToolInstalled' => StereoTool::isInstalled(),
|
||||
'countries' => Countries::getNames(),
|
||||
'storageLocationApiUrl' => $request->getRouter()->named(
|
||||
'api:admin:stations:storage-locations'
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue