mirror of
https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
synced 2025-10-01 23:56:39 +08:00
进一步优化认证流程
This commit is contained in:
parent
cea656ec9a
commit
013bb7ca01
@ -159,21 +159,22 @@ export async function requestLog(
|
||||
}
|
||||
const baseUrl = "http://localhost:3000";
|
||||
const ip = getIP(req);
|
||||
let h_userName = await getSessionName();
|
||||
console.log("[中文]", h_userName, baseUrl);
|
||||
|
||||
let { session, name } = await getSessionName();
|
||||
console.log("[中文]", name, session, baseUrl);
|
||||
const logData = {
|
||||
ip: ip,
|
||||
path: url_path,
|
||||
logEntry: JSON.stringify(jsonBody),
|
||||
model: url_path.startsWith("mj/") ? "midjourney" : jsonBody?.model, // 后面尝试请求是添加到参数
|
||||
userName: h_userName,
|
||||
userName: name,
|
||||
userID: session?.user?.id,
|
||||
};
|
||||
|
||||
await fetch(`${baseUrl}/api/logs/openai`, {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
// ...req.headers,
|
||||
},
|
||||
body: JSON.stringify(logData),
|
||||
});
|
||||
|
@ -9,12 +9,13 @@ async function handle(
|
||||
) {
|
||||
try {
|
||||
const request_data = await req.json();
|
||||
if (request_data?.userName) {
|
||||
await insertUser({
|
||||
name: request_data?.userName,
|
||||
email: request_data?.userName,
|
||||
});
|
||||
}
|
||||
console.log("log", request_data);
|
||||
// if (request_data?.userName) {
|
||||
// await insertUser({
|
||||
// name: request_data?.userName,
|
||||
// email: request_data?.userName,
|
||||
// });
|
||||
// }
|
||||
// console.log("===========4", request_data);
|
||||
try {
|
||||
if (request_data?.logEntry) {
|
||||
|
31
lib/auth.ts
31
lib/auth.ts
@ -82,15 +82,13 @@ export const authOptions: NextAuthOptions = {
|
||||
// 判断姓名格式是否符合要求,不符合则拒绝
|
||||
if (username && isName(username)) {
|
||||
// Any object returned will be saved in `user` property of the JWT
|
||||
let user:{[key: string]: string} = {
|
||||
name: username,
|
||||
// email: null
|
||||
}
|
||||
let user:{[key: string]: string} = {}
|
||||
if (isEmail(username)) {
|
||||
user['email'] = username;
|
||||
user['email'] = username;
|
||||
} else {
|
||||
user['name'] = username;
|
||||
}
|
||||
await insertUser(user);
|
||||
return user
|
||||
return await insertUser(user) ?? user
|
||||
} else {
|
||||
// If you return null then an error will be displayed advising the user to check their details.
|
||||
// return null
|
||||
@ -125,7 +123,7 @@ export const authOptions: NextAuthOptions = {
|
||||
callbacks: {
|
||||
jwt: async ({ token, user }) => {
|
||||
// const current_time = Math.floor(Date.now() / 1000);
|
||||
// console.log('=============', token, user, current_time)
|
||||
console.log('=============', token, user,)
|
||||
if (user) {
|
||||
token.user = user;
|
||||
}
|
||||
@ -139,6 +137,7 @@ export const authOptions: NextAuthOptions = {
|
||||
// @ts-expect-error
|
||||
username: token?.user?.username || token?.user?.gh_username,
|
||||
};
|
||||
console.log('555555555,', session, token)
|
||||
return session;
|
||||
},
|
||||
},
|
||||
@ -159,8 +158,11 @@ export function getSession() {
|
||||
|
||||
export async function getSessionName() {
|
||||
const session = await getSession();
|
||||
// console.log('in........',)
|
||||
return session?.user?.email || session?.user?.name
|
||||
console.log('in........', session)
|
||||
return {
|
||||
name: session?.user?.email || session?.user?.name,
|
||||
session
|
||||
}
|
||||
}
|
||||
|
||||
// export function withSiteAuth(action: any) {
|
||||
@ -232,21 +234,22 @@ export async function insertUser(user: {[key: string]: string}) {
|
||||
}
|
||||
const existingUser = conditions.length? await prisma.user.findFirst({
|
||||
where: {
|
||||
OR: conditions,
|
||||
AND: conditions,
|
||||
},
|
||||
}) : null;
|
||||
// console.log('[LOG]', existingUser, user, '=======')
|
||||
if (!existingUser) {
|
||||
const newUser = await prisma.user.create({
|
||||
return await prisma.user.create({
|
||||
data: user
|
||||
})
|
||||
// console.log('[LOG]', user, '=======')
|
||||
} else {
|
||||
console.log('user==========', existingUser)
|
||||
return existingUser;
|
||||
}
|
||||
} catch (e) {
|
||||
console.log('[Prisma Error]', e);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
@ -16,8 +16,8 @@ model User {
|
||||
id String @id @default(cuid())
|
||||
name String? @unique
|
||||
// if you are using Github OAuth, you can get rid of the username attribute (that is for Twitter OAuth)
|
||||
username String?
|
||||
gh_username String?
|
||||
username String? @unique
|
||||
gh_username String? @unique
|
||||
email String? @unique
|
||||
emailVerified DateTime?
|
||||
image String?
|
||||
@ -70,10 +70,11 @@ model LogEntry {
|
||||
path String? @db.Text
|
||||
model String? @db.VarChar(25)
|
||||
userName String? @db.VarChar(50)
|
||||
userID String?
|
||||
createdAt DateTime @default(now())
|
||||
// logEntry String? @db.Text
|
||||
logToken Int? @default(0)
|
||||
user User? @relation(fields: [userName], references: [name], onDelete: NoAction)
|
||||
user User? @relation(fields: [userID], references: [id], onDelete: NoAction)
|
||||
}
|
||||
|
||||
model VerificationToken {
|
||||
|
Loading…
Reference in New Issue
Block a user