支持设置linuxdo信任等级
This commit is contained in:
@@ -64,6 +64,7 @@ export async function POST(request: NextRequest) {
|
||||
OIDCClientId,
|
||||
OIDCClientSecret,
|
||||
OIDCButtonText,
|
||||
OIDCMinTrustLevel,
|
||||
} = body as {
|
||||
SiteName: string;
|
||||
Announcement: string;
|
||||
@@ -100,6 +101,7 @@ export async function POST(request: NextRequest) {
|
||||
OIDCClientId?: string;
|
||||
OIDCClientSecret?: string;
|
||||
OIDCButtonText?: string;
|
||||
OIDCMinTrustLevel?: number;
|
||||
};
|
||||
|
||||
// 参数校验
|
||||
@@ -135,7 +137,8 @@ export async function POST(request: NextRequest) {
|
||||
(OIDCUserInfoEndpoint !== undefined && typeof OIDCUserInfoEndpoint !== 'string') ||
|
||||
(OIDCClientId !== undefined && typeof OIDCClientId !== 'string') ||
|
||||
(OIDCClientSecret !== undefined && typeof OIDCClientSecret !== 'string') ||
|
||||
(OIDCButtonText !== undefined && typeof OIDCButtonText !== 'string')
|
||||
(OIDCButtonText !== undefined && typeof OIDCButtonText !== 'string') ||
|
||||
(OIDCMinTrustLevel !== undefined && typeof OIDCMinTrustLevel !== 'number')
|
||||
) {
|
||||
return NextResponse.json({ error: '参数格式错误' }, { status: 400 });
|
||||
}
|
||||
@@ -190,6 +193,7 @@ export async function POST(request: NextRequest) {
|
||||
OIDCClientId,
|
||||
OIDCClientSecret,
|
||||
OIDCButtonText,
|
||||
OIDCMinTrustLevel,
|
||||
};
|
||||
|
||||
// 写入数据库
|
||||
|
||||
@@ -213,6 +213,7 @@ export async function GET(request: NextRequest) {
|
||||
sub: oidcSub,
|
||||
email: userInfo.email,
|
||||
name: userInfo.name,
|
||||
trust_level: userInfo.trust_level, // 提取trust_level字段
|
||||
timestamp: Date.now(),
|
||||
};
|
||||
|
||||
|
||||
@@ -102,6 +102,18 @@ export async function POST(request: NextRequest) {
|
||||
);
|
||||
}
|
||||
|
||||
// 检查最低信任等级
|
||||
const minTrustLevel = siteConfig.OIDCMinTrustLevel || 0;
|
||||
if (minTrustLevel > 0) {
|
||||
const userTrustLevel = oidcSession.trust_level ?? 0;
|
||||
if (userTrustLevel < minTrustLevel) {
|
||||
return NextResponse.json(
|
||||
{ error: `您的信任等级(${userTrustLevel})不满足最低要求(${minTrustLevel})` },
|
||||
{ status: 403 }
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// 检查是否与站长同名
|
||||
if (username === process.env.USERNAME) {
|
||||
return NextResponse.json(
|
||||
|
||||
@@ -35,6 +35,7 @@ export async function GET(request: NextRequest) {
|
||||
return NextResponse.json({
|
||||
email: oidcSession.email,
|
||||
name: oidcSession.name,
|
||||
trust_level: oidcSession.trust_level,
|
||||
});
|
||||
} catch (error) {
|
||||
return NextResponse.json(
|
||||
|
||||
Reference in New Issue
Block a user