diff --git a/app/src/modules/settings/routes/roles/item/item.vue b/app/src/modules/settings/routes/roles/item/item.vue
index 79226e8910..fd7161f136 100644
--- a/app/src/modules/settings/routes/roles/item/item.vue
+++ b/app/src/modules/settings/routes/roles/item/item.vue
@@ -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);
diff --git a/app/src/modules/users/routes/collection.vue b/app/src/modules/users/routes/collection.vue
index 6581bd2f81..d6b551237d 100644
--- a/app/src/modules/users/routes/collection.vue
+++ b/app/src/modules/users/routes/collection.vue
@@ -49,7 +49,13 @@
-
+
@@ -62,7 +68,7 @@
-
+
(null);
const userInviteModalActive = ref(false);
+ const userStore = useUserStore();
+ const permissionsStore = usePermissionsStore();
const selection = ref- ([]);
@@ -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,
diff --git a/app/src/views/private/components/users-invite/users-invite.vue b/app/src/views/private/components/users-invite/users-invite.vue
index 49ba55fcbd..a3a35c5909 100644
--- a/app/src/views/private/components/users-invite/users-invite.vue
+++ b/app/src/views/private/components/users-invite/users-invite.vue
@@ -106,7 +106,7 @@ export default defineComponent({
});
-