refac: DELETE /v1/user/{id}?expected_role_id=N, user.remove audit event, 409 target_role_not_found, GetAll returns its error, Own-scope visibility filter moved into repos, JSON tags removed from use-case types

This commit is contained in:
Florian Sylvain committed 2026-10-29 16:28:25 +01:00
1 parent 5d6f378fce
commit b39a41be88
124 files changed
+8816 -523

No files matched your search

+33 -6
View File
@@ -9,6 +9,8 @@ import ArticleCardList from '@/components/ArticleCardList.vue'
import ArticleListNotice from '@/components/ArticleListNotice.vue'
import ArticleListToolbar from '@/components/ArticleListToolbar.vue'
import EmptyState from '@/components/EmptyState.vue'
import OwnScopeEmpty from '@/components/OwnScopeEmpty.vue'
import ReadOnlyBanner from '@/components/ReadOnlyBanner.vue'
import NewArticleModal from '@/components/NewArticleModal.vue'
import AppPaginator from '@/components/AppPaginator.vue'
import { useArticleList } from '@/composables/useArticleList'
@@ -24,11 +26,13 @@ const DEFAULT_SKELETON_ROWS = 6
const router = useRouter()
const access = useContentAccess(ARTICLE_TYPE_KEY, 'articles')
const writerLine = computed(() =>
access.canCreate.value &&
access.updateScope.value === 'all' &&
access.publishScope.value === 'none'
? t('You can write and edit all articles. Publishing is done by an editor.')
: t("Everything you've written, online and in draft."),
access.readsOwnOnly.value
? t('Online articles and the drafts you created.')
: access.canCreate.value &&
access.updateScope.value === 'all' &&
access.publishScope.value === 'none'
? t('You can write and edit all articles. Publishing is done by an editor.')
: t("Everything you've written, online and in draft."),
)
const list = useArticleList({
@@ -154,6 +158,17 @@ onMounted(() => {
</UButton>
</div>
<ReadOnlyBanner
v-if="access.readsOwnOnly.value"
icon="i-lucide-eye-off"
:title="t('Drafts by others are hidden')"
:description="
t(
'Your role reads online articles and the drafts you created. The counts follow the same rule.',
)
"
/>
<ArticleListToolbar
v-model:search="searchInput"
:status="desired.status"
@@ -177,8 +192,20 @@ onMounted(() => {
/>
<template v-if="hasLoaded || loadFailed || showSkeleton">
<OwnScopeEmpty
v-if="emptyVariant === 'no-drafts' && access.readsOwnOnly.value"
icon="i-lucide-file-text"
:title="t('You have no drafts')"
:description="
t(
'Drafts you create appear here. Your role can\'t see drafts by other people.',
)
"
:action="access.canCreate.value ? t('New article') : undefined"
@action="openNewArticleModal"
/>
<EmptyState
v-if="emptyVariant"
v-else-if="emptyVariant"
:variant="emptyVariant"
:query="emptyVariant === 'no-site' ? siteName : shown.q"
@action="onEmptyAction"