Only show user invite button if user can create users

This commit is contained in:
rijkvanzanten
2020-10-21 19:26:02 +02:00
parent bd1f534bf2
commit 23166925b8
3 changed files with 31 additions and 4 deletions

View File

@@ -91,10 +91,11 @@ import SettingsNavigation from '../../../components/navigation.vue';
import router from '@/router';
import RevisionsDrawerDetail from '@/views/private/components/revisions-drawer-detail';
import useItem from '@/composables/use-item';
import { useUserStore } from '@/stores/';
import { useUserStore, usePermissionsStore } from '@/stores/';
import RoleInfoSidebarDetail from './components/role-info-sidebar-detail.vue';
import PermissionsOverview from './components/permissions-overview.vue';
import UsersInvite from '@/views/private/components/users-invite';
import usersCreate from '../../../../../../../api/dist/cli/commands/users/create';
type Values = {
[field: string]: any;
@@ -115,6 +116,7 @@ export default defineComponent({
},
setup(props) {
const userStore = useUserStore();
const permissionsStore = usePermissionsStore();
const userInviteModalActive = ref(false);
const { primaryKey } = toRefs(props);

View File

@@ -49,7 +49,13 @@
<v-icon name="edit" outline />
</v-button>
<v-button rounded icon @click="userInviteModalActive = true" v-tooltip.bottom="$t('invite_users')">
<v-button
v-if="canInviteUsers"
rounded
icon
@click="userInviteModalActive = true"
v-tooltip.bottom="$t('invite_users')"
>
<v-icon name="person_add" />
</v-button>
@@ -62,7 +68,7 @@
<users-navigation :current-role="queryFilters && queryFilters.role" />
</template>
<users-invite v-model="userInviteModalActive" />
<users-invite v-if="canInviteUsers" v-model="userInviteModalActive" />
<component
class="layout"
@@ -118,6 +124,7 @@ import { LayoutComponent } from '@/layouts/types';
import usePreset from '@/composables/use-preset';
import LayoutSidebarDetail from '@/views/private/components/layout-sidebar-detail';
import SearchInput from '@/views/private/components/search-input';
import { useUserStore, usePermissionsStore } from '@/stores';
import marked from 'marked';
import useNavigation from '../composables/use-navigation';
@@ -138,6 +145,8 @@ export default defineComponent({
const { roles } = useNavigation();
const layoutRef = ref<LayoutComponent | null>(null);
const userInviteModalActive = ref(false);
const userStore = useUserStore();
const permissionsStore = usePermissionsStore();
const selection = ref<Item[]>([]);
@@ -165,7 +174,23 @@ export default defineComponent({
return filters.value;
});
const canInviteUsers = computed(() => {
const isAdmin = !!userStore.state.currentUser.role.admin_access;
if (isAdmin) return true;
const usersCreatePermission = permissionsStore.state.permissions.find(
(permission) => permission.collection === 'directus_users' && permission.action === 'create'
);
const rolesReadPermission = permissionsStore.state.permissions.find(
(permission) => permission.collection === 'directus_roles' && permission.action === 'read'
);
return !!usersCreatePermission && !!rolesReadPermission;
});
return {
canInviteUsers,
_filters,
addNewLink,
batchDelete,