mirror of
https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
synced 2025-11-17 06:23:44 +08:00
暂存-设置项管理
This commit is contained in:
35
lib/auth.ts
35
lib/auth.ts
@@ -96,10 +96,13 @@ export const authOptions: NextAuthOptions = {
|
||||
// 目前用户不存在,则会创建新用户。
|
||||
let existingUser = await existUser(user); // await insertUser(user)
|
||||
if (!existingUser) {
|
||||
// 如果不存在,则报错
|
||||
// throw new Error("用户名或密码不正确")
|
||||
// 如果不存在,则创建
|
||||
existingUser = await insertUser(user);
|
||||
if (await getSetting("allowNewUser")) {
|
||||
// 如果不存在,则创建
|
||||
existingUser = await insertUser(user);
|
||||
} else {
|
||||
// 如果不存在,则报错
|
||||
throw new Error("未知用户")
|
||||
}
|
||||
}
|
||||
// 有密码就校验密码,没有就直接返回用户
|
||||
(password || existingUser.password) && validatePassword(password, existingUser.password);
|
||||
@@ -158,7 +161,7 @@ export const authOptions: NextAuthOptions = {
|
||||
// 过滤不存在的用户
|
||||
async signIn({ user, account, profile, email, credentials }) {
|
||||
const existingUser = await existUser(user as User);
|
||||
console.log('---', user, 'account', account, 'email', email, 'exist', existingUser)
|
||||
// console.log('---', user, 'account', account, 'email', email, 'exist', existingUser)
|
||||
// 顺便过滤掉不允许登录的用户
|
||||
return !!existingUser && existingUser.allowToLogin;
|
||||
}
|
||||
@@ -210,6 +213,28 @@ export function validatePassword(password: string, hashPassword: string | null |
|
||||
}
|
||||
}
|
||||
|
||||
async function getSetting(key: string) {
|
||||
const setting = await prisma.setting.findUnique({
|
||||
where: {
|
||||
key: key
|
||||
}
|
||||
})
|
||||
console.log('setting,------', setting)
|
||||
if (!setting) {
|
||||
return null;
|
||||
}
|
||||
// 根据类型字段转换值
|
||||
switch (setting.type) {
|
||||
case 'boolean':
|
||||
return setting.value === 'true';
|
||||
case 'number':
|
||||
return Number(setting.value);
|
||||
case 'string':
|
||||
default:
|
||||
return setting.value;
|
||||
}
|
||||
}
|
||||
|
||||
async function existUser(user: {[key: string]: string} | User ) {
|
||||
const conditions = [];
|
||||
if (user?.name) {
|
||||
|
||||
Reference in New Issue
Block a user