mirror of
https://github.com/directus/directus.git
synced 2026-04-25 03:00:53 -04:00
@@ -1,7 +1,14 @@
|
||||
<template>
|
||||
<v-list nav>
|
||||
<template v-if="customNavItems && customNavItems.length > 0">
|
||||
<v-detail :active="group.accordion === 'always_open' || undefined" :disabled="group.accordion === 'always_open'" :start-open="group.accordion === 'start_open'" :label="group.name" :key="group.name" v-for="(group, index) in customNavItems">
|
||||
<v-detail
|
||||
:active="group.accordion === 'always_open' || undefined"
|
||||
:disabled="group.accordion === 'always_open'"
|
||||
:start-open="group.accordion === 'start_open'"
|
||||
:label="group.name"
|
||||
:key="group.name"
|
||||
v-for="group in customNavItems"
|
||||
>
|
||||
<v-list-item :exact="exact" v-for="navItem in group.items" :key="navItem.to" :to="navItem.to">
|
||||
<v-list-item-icon><v-icon :name="navItem.icon" /></v-list-item-icon>
|
||||
<v-list-item-content>{{ navItem.name }}</v-list-item-content>
|
||||
@@ -50,7 +57,7 @@ export default defineComponent({
|
||||
const presetsStore = usePresetsStore();
|
||||
const { customNavItems, navItems } = useNavigation();
|
||||
const userStore = useUserStore();
|
||||
const isAdmin = computed(() => userStore.state.currentUser?.role.admin === true);
|
||||
const isAdmin = computed(() => userStore.state.currentUser?.role.admin_access === true);
|
||||
|
||||
const bookmarks = computed(() => {
|
||||
return orderBy(
|
||||
|
||||
@@ -217,7 +217,11 @@
|
||||
</drawer-detail>
|
||||
<layout-drawer-detail @input="layout = $event" :value="layout" />
|
||||
<portal-target name="drawer" />
|
||||
<export-drawer-detail :layout-query="layoutQuery" :search-query="searchQuery" :collection="currentCollection" />
|
||||
<export-drawer-detail
|
||||
:layout-query="layoutQuery"
|
||||
:search-query="searchQuery"
|
||||
:collection="currentCollection"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<v-dialog v-if="deleteError" active>
|
||||
@@ -509,7 +513,7 @@ export default defineComponent({
|
||||
|
||||
function usePermissions() {
|
||||
const batchEditAllowed = computed(() => {
|
||||
const admin = userStore.state?.currentUser?.role.admin === true;
|
||||
const admin = userStore.state?.currentUser?.role.admin_access === true;
|
||||
if (admin) return true;
|
||||
|
||||
const updatePermissions = permissionsStore.state.permissions.find(
|
||||
@@ -520,7 +524,7 @@ export default defineComponent({
|
||||
|
||||
const batchArchiveAllowed = computed(() => {
|
||||
if (!currentCollection.value?.meta?.archive_field) return false;
|
||||
const admin = userStore.state?.currentUser?.role.admin === true;
|
||||
const admin = userStore.state?.currentUser?.role.admin_access === true;
|
||||
if (admin) return true;
|
||||
|
||||
const updatePermissions = permissionsStore.state.permissions.find(
|
||||
@@ -533,7 +537,7 @@ export default defineComponent({
|
||||
});
|
||||
|
||||
const batchDeleteAllowed = computed(() => {
|
||||
const admin = userStore.state?.currentUser?.role.admin === true;
|
||||
const admin = userStore.state?.currentUser?.role.admin_access === true;
|
||||
if (admin) return true;
|
||||
|
||||
const deletePermissions = permissionsStore.state.permissions.find(
|
||||
@@ -543,7 +547,7 @@ export default defineComponent({
|
||||
});
|
||||
|
||||
const createAllowed = computed(() => {
|
||||
const admin = userStore.state?.currentUser?.role.admin === true;
|
||||
const admin = userStore.state?.currentUser?.role.admin_access === true;
|
||||
if (admin) return true;
|
||||
|
||||
const createPermissions = permissionsStore.state.permissions.find(
|
||||
|
||||
@@ -75,7 +75,7 @@ export default defineComponent({
|
||||
|
||||
const { navItems } = useNavigation();
|
||||
|
||||
const isAdmin = computed(() => userStore.state.currentUser?.role.admin === true);
|
||||
const isAdmin = computed(() => userStore.state.currentUser?.role.admin_access === true);
|
||||
|
||||
return {
|
||||
tableHeaders,
|
||||
|
||||
@@ -55,7 +55,7 @@ export default defineModule(({ i18n }) => ({
|
||||
],
|
||||
order: 15,
|
||||
preRegisterCheck(user, permissions) {
|
||||
const admin = user.role.admin;
|
||||
const admin = user.role.admin_access;
|
||||
if (admin) return true;
|
||||
|
||||
const permission = permissions.find(
|
||||
|
||||
@@ -86,8 +86,8 @@ export default defineModule(({ i18n }) => ({
|
||||
components: {
|
||||
add: SettingsNewRole,
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: '/roles/public',
|
||||
@@ -145,7 +145,7 @@ export default defineModule(({ i18n }) => ({
|
||||
},
|
||||
],
|
||||
preRegisterCheck: (user) => {
|
||||
return user.role.admin === true;
|
||||
return user.role.admin_access === true;
|
||||
},
|
||||
order: Infinity,
|
||||
persistent: true,
|
||||
|
||||
@@ -7,7 +7,12 @@
|
||||
<v-card-text>
|
||||
<div class="form-grid">
|
||||
<div class="field full">
|
||||
<v-input v-model="roleName" autofocus @keyup.enter="save" :placeholder="$t('role_name') + '...'" />
|
||||
<v-input
|
||||
v-model="roleName"
|
||||
autofocus
|
||||
@keyup.enter="save"
|
||||
:placeholder="$t('role_name') + '...'"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="field half">
|
||||
@@ -16,7 +21,7 @@
|
||||
</div>
|
||||
|
||||
<div class="field half">
|
||||
<p class="type-label">{{ $t('fields.directus_roles.admin') }}</p>
|
||||
<p class="type-label">{{ $t('fields.directus_roles.admin_access') }}</p>
|
||||
<v-checkbox block v-model="admin" :label="$t('enabled')" />
|
||||
</div>
|
||||
</div>
|
||||
@@ -33,7 +38,7 @@
|
||||
import { defineComponent, ref } from '@vue/composition-api';
|
||||
import api from '@/api';
|
||||
import router from '@/router';
|
||||
import { permissions } from './app-required-permissions'
|
||||
import { permissions } from './app-required-permissions';
|
||||
|
||||
export default defineComponent({
|
||||
setup() {
|
||||
@@ -56,13 +61,20 @@ export default defineComponent({
|
||||
error.value = null;
|
||||
|
||||
try {
|
||||
const roleResponse = await api.post('/roles', { name: roleName.value, admin: admin.value, app_access: appAccess.value });
|
||||
const roleResponse = await api.post('/roles', {
|
||||
name: roleName.value,
|
||||
admin: admin.value,
|
||||
app_access: appAccess.value,
|
||||
});
|
||||
|
||||
if (appAccess.value === true && admin.value === false) {
|
||||
await api.post('/permissions', permissions.map(permission => ({
|
||||
...permission,
|
||||
role: roleResponse.data.data.id,
|
||||
})));
|
||||
await api.post(
|
||||
'/permissions',
|
||||
permissions.map((permission) => ({
|
||||
...permission,
|
||||
role: roleResponse.data.data.id,
|
||||
}))
|
||||
);
|
||||
}
|
||||
|
||||
router.push(`/settings/roles/${roleResponse.data.data.id}`);
|
||||
@@ -73,7 +85,7 @@ export default defineComponent({
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
});
|
||||
</script>
|
||||
|
||||
|
||||
@@ -122,7 +122,7 @@ export default defineComponent({
|
||||
...edits.value,
|
||||
};
|
||||
|
||||
return !!values.admin;
|
||||
return !!values.admin_access;
|
||||
});
|
||||
|
||||
return {
|
||||
|
||||
@@ -28,7 +28,7 @@ export default defineModule(({ i18n }) => ({
|
||||
],
|
||||
order: 10,
|
||||
preRegisterCheck(user, permissions) {
|
||||
const admin = user.role.admin;
|
||||
const admin = user.role.admin_access;
|
||||
if (admin) return true;
|
||||
|
||||
const permission = permissions.find(
|
||||
|
||||
@@ -17,7 +17,7 @@ export const useUserStore = createStore({
|
||||
return state.currentUser.first_name + ' ' + state.currentUser.last_name;
|
||||
},
|
||||
isAdmin(state) {
|
||||
return state.currentUser?.role.admin === true || false;
|
||||
return state.currentUser?.role.admin_access === true || false;
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
|
||||
@@ -22,7 +22,7 @@ export type Role = {
|
||||
external_id: null | string;
|
||||
ip_whitelist: string[];
|
||||
app_access: boolean;
|
||||
admin: boolean;
|
||||
admin_access: boolean;
|
||||
};
|
||||
|
||||
export type Avatar = {
|
||||
|
||||
Reference in New Issue
Block a user