新增登录注册背景图设置

This commit is contained in:
mtvpls
2025-12-28 12:12:11 +08:00
parent d4ae874bc0
commit ab856a02cf
7 changed files with 317 additions and 36 deletions
+39
View File
@@ -34,12 +34,16 @@ export async function POST(request: NextRequest) {
customCSS,
enableCache,
cacheMinutes,
loginBackgroundImage,
registerBackgroundImage,
} = body as {
enableBuiltInTheme: boolean;
builtInTheme: string;
customCSS: string;
enableCache: boolean;
cacheMinutes: number;
loginBackgroundImage?: string;
registerBackgroundImage?: string;
};
// 参数校验
@@ -53,6 +57,39 @@ export async function POST(request: NextRequest) {
return NextResponse.json({ error: '参数格式错误' }, { status: 400 });
}
// 验证背景图URL格式(支持多行,每行一个URL)
if (loginBackgroundImage && loginBackgroundImage.trim() !== '') {
const urls = loginBackgroundImage
.split('\n')
.map((url) => url.trim())
.filter((url) => url !== '');
for (const url of urls) {
if (!url.startsWith('http://') && !url.startsWith('https://')) {
return NextResponse.json(
{ error: `登录界面背景图URL格式错误:${url},每个URL必须以http://或https://开头` },
{ status: 400 }
);
}
}
}
if (registerBackgroundImage && registerBackgroundImage.trim() !== '') {
const urls = registerBackgroundImage
.split('\n')
.map((url) => url.trim())
.filter((url) => url !== '');
for (const url of urls) {
if (!url.startsWith('http://') && !url.startsWith('https://')) {
return NextResponse.json(
{ error: `注册界面背景图URL格式错误:${url},每个URL必须以http://或https://开头` },
{ status: 400 }
);
}
}
}
const adminConfig = await getConfig();
// 权限校验
@@ -82,6 +119,8 @@ export async function POST(request: NextRequest) {
enableCache,
cacheMinutes,
cacheVersion: cssChanged ? currentVersion + 1 : currentVersion,
loginBackgroundImage: loginBackgroundImage?.trim() || undefined,
registerBackgroundImage: registerBackgroundImage?.trim() || undefined,
};
// 写入数据库
+2
View File
@@ -47,6 +47,8 @@ export async function GET(request: NextRequest) {
EnableOIDCLogin: config.SiteConfig.EnableOIDCLogin || false,
EnableOIDCRegistration: config.SiteConfig.EnableOIDCRegistration || false,
OIDCButtonText: config.SiteConfig.OIDCButtonText || '',
loginBackgroundImage: config.ThemeConfig?.loginBackgroundImage || '',
registerBackgroundImage: config.ThemeConfig?.registerBackgroundImage || '',
};
return NextResponse.json(result);
}