mirror of
https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
synced 2025-10-01 23:56:39 +08:00
parent
9017e6a0b7
commit
fc39af6dbf
13
lib/auth.ts
13
lib/auth.ts
@ -5,7 +5,7 @@ import CredentialsProvider from "next-auth/providers/credentials";
|
|||||||
import {PrismaAdapter} from "@next-auth/prisma-adapter";
|
import {PrismaAdapter} from "@next-auth/prisma-adapter";
|
||||||
import prisma from "@/lib/prisma";
|
import prisma from "@/lib/prisma";
|
||||||
import { User } from "@prisma/client";
|
import { User } from "@prisma/client";
|
||||||
import { isEmail, isName } from "@/lib/auth_list";
|
import {ADMIN_LIST, isEmail, isName} from "@/lib/auth_list";
|
||||||
import {createTransport} from "nodemailer";
|
import {createTransport} from "nodemailer";
|
||||||
import { comparePassword, hashPassword } from "@/lib/utils";
|
import { comparePassword, hashPassword } from "@/lib/utils";
|
||||||
import {getCurStartEnd} from "@/app/utils/custom";
|
import {getCurStartEnd} from "@/app/utils/custom";
|
||||||
@ -194,6 +194,17 @@ export async function getSessionName() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function VerifiedUser() {
|
||||||
|
const { name, session } = await getSessionName();
|
||||||
|
const userId = session?.user?.id
|
||||||
|
return !!(name && isName(name) && userId);
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function VerifiedAdminUser() {
|
||||||
|
const { name, session } = await getSessionName();
|
||||||
|
return !!(name && ADMIN_LIST.includes(name));
|
||||||
|
}
|
||||||
|
|
||||||
export function validatePassword(password: string, hashPassword: string | null | undefined ): boolean | void {
|
export function validatePassword(password: string, hashPassword: string | null | undefined ): boolean | void {
|
||||||
if (!hashPassword) {
|
if (!hashPassword) {
|
||||||
throw new Error("未设置密码");
|
throw new Error("未设置密码");
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { isName } from "@/lib/auth_list";
|
import {ADMIN_LIST, isName} from "@/lib/auth_list";
|
||||||
import { JWT } from "next-auth/jwt";
|
import { JWT } from "next-auth/jwt";
|
||||||
import { User } from "@prisma/client";
|
import { User } from "@prisma/client";
|
||||||
|
|
||||||
|
@ -4,6 +4,12 @@ export const DENY_LIST: string[] = [
|
|||||||
"suibian", "某某", "张三", "李四", "啊实打实", "官方回复电话", "笑死", "观化听风", "null", "undefined",
|
"suibian", "某某", "张三", "李四", "啊实打实", "官方回复电话", "笑死", "观化听风", "null", "undefined",
|
||||||
"zhangsan",
|
"zhangsan",
|
||||||
]
|
]
|
||||||
|
export const ADMIN_LIST: string[] = [
|
||||||
|
"sijinhui", "sijinhui@qq.com",
|
||||||
|
"yuchuan", "于川",
|
||||||
|
"jujujujuju",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
export function isEmail(input: string): boolean {
|
export function isEmail(input: string): boolean {
|
||||||
const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
|
const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
|
||||||
|
@ -1,13 +1,8 @@
|
|||||||
import { NextResponse } from "next/server";
|
import { NextResponse } from "next/server";
|
||||||
import type { NextRequest } from "next/server";
|
import type { NextRequest } from "next/server";
|
||||||
import { getToken } from "next-auth/jwt";
|
import { getToken } from "next-auth/jwt";
|
||||||
|
// import { isName, ADMIN_LIST } from "@/lib/auth_list";
|
||||||
import { VerifiedUser, VerifiedAdminUser } from "@/lib/auth_client";
|
import { VerifiedUser, VerifiedAdminUser } from "@/lib/auth_client";
|
||||||
import { JWT } from "next-auth/jwt";
|
|
||||||
import { User } from "@prisma/client";
|
|
||||||
|
|
||||||
type CUS_JWT = JWT & {
|
|
||||||
user: User,
|
|
||||||
}
|
|
||||||
|
|
||||||
export default async function middleware(req: NextRequest) {
|
export default async function middleware(req: NextRequest) {
|
||||||
const url = req.nextUrl;
|
const url = req.nextUrl;
|
||||||
@ -22,8 +17,8 @@ export default async function middleware(req: NextRequest) {
|
|||||||
|
|
||||||
|
|
||||||
const session = await getToken({ req });
|
const session = await getToken({ req });
|
||||||
const isUser = await VerifiedUser(session as CUS_JWT);
|
const isUser = await VerifiedUser(session);
|
||||||
const isAdminUser = await VerifiedAdminUser(session as CUS_JWT);
|
const isAdminUser = await VerifiedAdminUser(session);
|
||||||
// console.log('----session', session, '---isUser', isUser, '---isAdmin', isAdminUser)
|
// console.log('----session', session, '---isUser', isUser, '---isAdmin', isAdminUser)
|
||||||
// 管理员页面的api接口还是要认证的
|
// 管理员页面的api接口还是要认证的
|
||||||
if (path.startsWith('/api/admin/')) {
|
if (path.startsWith('/api/admin/')) {
|
||||||
|
Loading…
Reference in New Issue
Block a user