diff --git a/app/pages/@[publicSlug]/posts/[postSlug].vue b/app/pages/@[publicSlug]/posts/[postSlug].vue index 8493397..3d23db4 100644 --- a/app/pages/@[publicSlug]/posts/[postSlug].vue +++ b/app/pages/@[publicSlug]/posts/[postSlug].vue @@ -2,6 +2,7 @@ import { unwrapApiBody, type ApiResponse } from '../../../utils/http/factory' import { renderSafeMarkdown } from '../../../utils/render-markdown' import { formatOccurredOnDisplay, occurredOnToIsoAttr } from '../../../utils/timeline-datetime' +import { useAuthSession } from '../../../composables/useAuthSession' definePageMeta({ layout: 'public', @@ -10,8 +11,10 @@ definePageMeta({ const route = useRoute() const publicSlug = computed(() => route.params.publicSlug as string) const postSlug = computed(() => route.params.postSlug as string) +const { user, loggedIn, refresh: refreshAuth } = useAuthSession() type Post = { + id: number title: string slug: string excerpt: string @@ -45,6 +48,23 @@ watchEffect(() => { useHead({ title: data.value.title }) } }) + +onMounted(() => { + void refreshAuth(true) +}) + +/** 当前登录用户是否为该公开主页所有者(可编辑此文) */ +const canEditPost = computed(() => { + const slug = user.value?.publicSlug + if (!loggedIn.value || !slug) { + return false + } + return slug === publicSlug.value +}) + +const editPostHref = computed(() => + data.value && canEditPost.value ? `/me/posts/${data.value.id}` : '', +)