Remove API URLs and ACL checks from admin VueProps.

This commit is contained in:
Buster Neece 2023-08-21 01:54:53 -05:00
parent b1bb1a6abd
commit 7425c3ff7a
No known key found for this signature in database
10 changed files with 17 additions and 40 deletions

View File

@ -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 = [

View File

@ -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 = [

View File

@ -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)
);

View File

@ -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(() => {

View File

@ -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
}

View File

@ -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 = [

View File

@ -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'],

View File

@ -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(),
]

View File

@ -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(),
]);
}

View File

@ -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'
),
];
}