Handle email logic in session callback

This commit is contained in:
austinkelsay 2024-10-06 16:53:36 -05:00
parent 0e4188cb34
commit 9ebf71f7e4

View File

@ -138,26 +138,26 @@ export const authOptions = {
token.user = newUser;
}
// if the user has no pubkey, generate a new key pair
if (token && token?.user && token?.user?.id && !token.user?.pubkey) {
try {
let sk = generateSecretKey()
let pk = getPublicKey(sk)
let skHex = bytesToHex(sk)
const updatedUser = await updateUser(token.user.id, { pubkey: pk, privkey: skHex });
if (!updatedUser) {
console.error("Failed to update user");
return null;
}
const fullUser = await getUserByPubkey(pk);
if (fullUser && fullUser.email === "austinkelsay@protonmail.com") {
console.log("FULLLSNDE", fullUser);
}
token.user = fullUser;
} catch (error) {
console.error("Ephemeral key pair generation error:", error);
return null;
}
}
// if (token && token?.user && token?.user?.id && !token.user?.pubkey) {
// try {
// let sk = generateSecretKey()
// let pk = getPublicKey(sk)
// let skHex = bytesToHex(sk)
// const updatedUser = await updateUser(token.user.id, { pubkey: pk, privkey: skHex });
// if (!updatedUser) {
// console.error("Failed to update user");
// return null;
// }
// const fullUser = await getUserByPubkey(pk);
// if (fullUser && fullUser.email === "austinkelsay@protonmail.com") {
// console.log("FULLLSNDE", fullUser);
// }
// token.user = fullUser;
// } catch (error) {
// console.error("Ephemeral key pair generation error:", error);
// return null;
// }
// }
if (user) {
token.user = user;
@ -165,8 +165,27 @@ export const authOptions = {
return token;
},
async session({ session, token }) {
if (session.user.email === "austinkelsay@protonmail.com") {
console.log("SESSION", session);
if (session.user?.email) {
const existingUser = await getUserByEmail(session.user.email);
if (existingUser) {
console.log("EXISTING USER", existingUser);
session.user = existingUser;
token.user = existingUser;
} else {
console.log("CREATING USER", session, token);
const createdUser = await createUser({ email: session.user.email });
let sk = generateSecretKey()
let pk = getPublicKey(sk)
let skHex = bytesToHex(sk)
const updatedUser = await updateUser(createdUser.id, { pubkey: pk, privkey: skHex });
if (!updatedUser) {
console.error("Failed to update user");
return null;
}
const fullUser = await getUserByPubkey(pk);
session.user = fullUser;
token.user = fullUser;
}
}
// Add user from token to session
session.user = token.user;