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