feat(settings): manage public header banner in admin
This commit is contained in:
@@ -16,6 +16,13 @@ export type PublicHeaderBanner = {
|
||||
ctaHref?: string
|
||||
}
|
||||
|
||||
export type PublicHeaderBannerConfig = {
|
||||
enabled: boolean
|
||||
message: string
|
||||
ctaLabel: string | null
|
||||
ctaHref: string | null
|
||||
}
|
||||
|
||||
function resolveEnvFallback(): boolean {
|
||||
return process.env.CMS_ADMIN_SELF_REGISTRATION_ENABLED === "true"
|
||||
}
|
||||
@@ -114,3 +121,69 @@ export async function getPublicHeaderBanner(): Promise<PublicHeaderBanner | null
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
export async function getPublicHeaderBannerConfig(): Promise<PublicHeaderBannerConfig> {
|
||||
try {
|
||||
const setting = await db.systemSetting.findUnique({
|
||||
where: { key: PUBLIC_HEADER_BANNER_KEY },
|
||||
select: { value: true },
|
||||
})
|
||||
|
||||
if (!setting) {
|
||||
return {
|
||||
enabled: false,
|
||||
message: "",
|
||||
ctaLabel: null,
|
||||
ctaHref: null,
|
||||
}
|
||||
}
|
||||
|
||||
const parsed = parsePublicHeaderBanner(setting.value)
|
||||
|
||||
if (!parsed) {
|
||||
return {
|
||||
enabled: false,
|
||||
message: "",
|
||||
ctaLabel: null,
|
||||
ctaHref: null,
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
enabled: parsed.enabled,
|
||||
message: parsed.message,
|
||||
ctaLabel: parsed.ctaLabel ?? null,
|
||||
ctaHref: parsed.ctaHref ?? null,
|
||||
}
|
||||
} catch {
|
||||
return {
|
||||
enabled: false,
|
||||
message: "",
|
||||
ctaLabel: null,
|
||||
ctaHref: null,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export async function setPublicHeaderBannerConfig(input: PublicHeaderBannerConfig): Promise<void> {
|
||||
await db.systemSetting.upsert({
|
||||
where: { key: PUBLIC_HEADER_BANNER_KEY },
|
||||
create: {
|
||||
key: PUBLIC_HEADER_BANNER_KEY,
|
||||
value: JSON.stringify({
|
||||
enabled: input.enabled,
|
||||
message: input.message,
|
||||
ctaLabel: input.ctaLabel ?? undefined,
|
||||
ctaHref: input.ctaHref ?? undefined,
|
||||
}),
|
||||
},
|
||||
update: {
|
||||
value: JSON.stringify({
|
||||
enabled: input.enabled,
|
||||
message: input.message,
|
||||
ctaLabel: input.ctaLabel ?? undefined,
|
||||
ctaHref: input.ctaHref ?? undefined,
|
||||
}),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user