diff --git a/api/src/database/seeds/02-rows/03-presets.yaml b/api/src/database/seeds/02-rows/03-presets.yaml
index ccb7b53382..df9e909390 100644
--- a/api/src/database/seeds/02-rows/03-presets.yaml
+++ b/api/src/database/seeds/02-rows/03-presets.yaml
@@ -31,7 +31,7 @@ data:
cards:
icon: account_circle
title: '{{ first_name }} {{ last_name }}'
- subtitle: '{{ title }}'
+ subtitle: '{{ email }}'
size: 4
- collection: directus_activity
diff --git a/app/src/displays/user/user.vue b/app/src/displays/user/user.vue
index 69f9ce67b2..5e2b46d8ae 100644
--- a/app/src/displays/user/user.vue
+++ b/app/src/displays/user/user.vue
@@ -5,17 +5,17 @@
v-if="(display === 'avatar' || display === 'both') && src"
:src="src"
role="presentation"
- :alt="value && `${value.first_name} ${value.last_name}`"
+ :alt="value && userName(value)"
:class="{ circle }"
/>
- {{ value.first_name }} {{ value.last_name }}
+ {{ userName(value) }}
@@ -23,6 +23,7 @@
diff --git a/app/src/interfaces/user/user.vue b/app/src/interfaces/user/user.vue
index a8da9f1a2d..28c7744fd7 100644
--- a/app/src/interfaces/user/user.vue
+++ b/app/src/interfaces/user/user.vue
@@ -12,11 +12,7 @@
>
User:
Action:
@@ -51,6 +51,7 @@ import { defineComponent, computed, toRefs, ref, watch } from '@vue/composition- import { i18n } from '@/lang'; import router from '@/router'; import api from '@/api'; +import { userName } from '@/utils/user-name'; type Values = { [field: string]: any; @@ -58,6 +59,7 @@ type Values = { type ActivityRecord = { user: { + email: string; first_name: string; last_name: string; } | null; @@ -97,6 +99,7 @@ export default defineComponent({ error, close, openItemLink, + userName, }; async function loadActivity() { @@ -107,6 +110,7 @@ export default defineComponent({ params: { fields: [ 'user.id', + 'user.email', 'user.first_name', 'user.last_name', 'action', diff --git a/app/src/modules/files/components/file-info-sidebar-detail.vue b/app/src/modules/files/components/file-info-sidebar-detail.vue index 18081a21b1..31e9d24930 100644 --- a/app/src/modules/files/components/file-info-sidebar-detail.vue +++ b/app/src/modules/files/components/file-info-sidebar-detail.vue @@ -115,6 +115,7 @@ import i18n from '@/lang'; import marked from 'marked'; import localizedFormat from '@/utils/localized-format'; import api from '@/api'; +import { userName } from '@/utils/user-name'; export default defineComponent({ inheritAttrs: false, @@ -194,31 +195,31 @@ export default defineComponent({ try { const response = await api.get(`/users/${props.file.uploaded_by}`, { params: { - fields: ['id', 'first_name', 'last_name', 'role'], + fields: ['id', 'email', 'first_name', 'last_name', 'role'], }, }); - const { id, first_name, last_name, role } = response.data.data; + const user = response.data.data; userCreated.value = { id: props.file.uploaded_by, - name: first_name + ' ' + last_name, - link: `/users/${id}`, + name: userName(user), + link: `/users/${user.id}`, }; if (props.file.modified_by) { const response = await api.get(`/users/${props.file.modified_by}`, { params: { - fields: ['id', 'first_name', 'last_name', 'role'], + fields: ['id', 'email', 'first_name', 'last_name', 'role'], }, }); - const { id, first_name, last_name, role } = response.data.data; + const user = response.data.data; userModified.value = { id: props.file.modified_by, - name: first_name + ' ' + last_name, - link: `/users/${id}`, + name: userName(user), + link: `/users/${user.id}`, }; } } finally { diff --git a/app/src/modules/settings/routes/data-model/new-collection.vue b/app/src/modules/settings/routes/data-model/new-collection.vue index 5edb0c38b8..ea82121add 100644 --- a/app/src/modules/settings/routes/data-model/new-collection.vue +++ b/app/src/modules/settings/routes/data-model/new-collection.vue @@ -373,7 +373,6 @@ export default defineComponent({ special: ['user-created'], interface: 'user', options: { - template: '{{first_name}} {{last_name}}', display: 'both', }, readonly: true, @@ -407,7 +406,6 @@ export default defineComponent({ special: ['user-updated'], interface: 'user', options: { - template: '{{first_name}} {{last_name}}', display: 'both', }, readonly: true, diff --git a/app/src/modules/settings/routes/presets/collection/collection.vue b/app/src/modules/settings/routes/presets/collection/collection.vue index fefa474b4e..cf823d7f36 100644 --- a/app/src/modules/settings/routes/presets/collection/collection.vue +++ b/app/src/modules/settings/routes/presets/collection/collection.vue @@ -103,11 +103,12 @@ import { TranslateResult } from 'vue-i18n'; import router from '@/router'; import ValueNull from '@/views/private/components/value-null'; import PresetsInfoSidebarDetail from './components/presets-info-sidebar-detail.vue'; +import { userName } from '@/utils/user-name'; type PresetRaw = { id: number; bookmark: null | string; - user: null | { first_name: string; last_name: string }; + user: null | { email: string; first_name: string; last_name: string }; role: null | { name: string }; collection: string; layout: string; @@ -173,7 +174,7 @@ export default defineComponent({ } if (preset.user) { - scope = `${preset.user.first_name} ${preset.user.last_name}`; + scope = userName(preset.user); } const collection = collectionsStore.getCollection(preset.collection)?.name; @@ -200,6 +201,7 @@ export default defineComponent({ fields: [ 'id', 'bookmark', + 'user.email', 'user.first_name', 'user.last_name', 'role.name', diff --git a/app/src/modules/settings/routes/presets/item.vue b/app/src/modules/settings/routes/presets/item.vue index b7047bdcff..307cafa4fe 100644 --- a/app/src/modules/settings/routes/presets/item.vue +++ b/app/src/modules/settings/routes/presets/item.vue @@ -102,6 +102,7 @@ import { useCollectionsStore, usePresetsStore } from '@/stores'; import { getLayouts } from '@/layouts'; import router from '@/router'; import marked from 'marked'; +import { userName } from '@/utils/user-name'; type User = { id: number; @@ -365,12 +366,12 @@ export default defineComponent({ try { const response = await api.get(`/users`, { params: { - fields: ['first_name', 'last_name', 'id'], + fields: ['email', 'first_name', 'last_name', 'id'], }, }); users.value = response.data.data.map((user: any) => ({ - name: user.first_name + ' ' + user.last_name, + name: userName(user), id: user.id, })); } catch (err) { diff --git a/app/src/modules/users/routes/item.vue b/app/src/modules/users/routes/item.vue index 136b560334..9c44f53655 100644 --- a/app/src/modules/users/routes/item.vue +++ b/app/src/modules/users/routes/item.vue @@ -102,7 +102,7 @@