How to have databaseHooks event whenever user logs in?

This is my auth code. My goal is to save the date when user logged in.
import { betterAuth } from "better-auth";
import { MongoClient } from "mongodb";
import { mongodbAdapter } from "better-auth/adapters/mongodb";
import { admin } from "better-auth/plugins"
import Logins from "@/models/Logins";


const client = new MongoClient(process.env.MONGO_URI || "");
const db = client.db();

export const auth = betterAuth({
database: mongodbAdapter(db),
emailAndPassword: {
enabled: true
},
plugins: [
admin(),
],
user: {
additionalFields: {
purchases: {
type: "string[]",
defaultValue: [],
}
}
},
databaseHooks: {
user: {
update: {
after: async (user, ctx) => {
const id = user.id
const ip = ctx?.request?.headers.get("x-forwarded-for") || ctx?.request?.headers.get("remote-addr")
try {
const newLogin = await Logins.create({
userId: id,
ip: ip,
});
if (newLogin) {
console.log("Login saved successfully:", newLogin);
}

} catch (error) {
console.error("Error saving login:", error);

}

},
},
}
}
});
import { betterAuth } from "better-auth";
import { MongoClient } from "mongodb";
import { mongodbAdapter } from "better-auth/adapters/mongodb";
import { admin } from "better-auth/plugins"
import Logins from "@/models/Logins";


const client = new MongoClient(process.env.MONGO_URI || "");
const db = client.db();

export const auth = betterAuth({
database: mongodbAdapter(db),
emailAndPassword: {
enabled: true
},
plugins: [
admin(),
],
user: {
additionalFields: {
purchases: {
type: "string[]",
defaultValue: [],
}
}
},
databaseHooks: {
user: {
update: {
after: async (user, ctx) => {
const id = user.id
const ip = ctx?.request?.headers.get("x-forwarded-for") || ctx?.request?.headers.get("remote-addr")
try {
const newLogin = await Logins.create({
userId: id,
ip: ip,
});
if (newLogin) {
console.log("Login saved successfully:", newLogin);
}

} catch (error) {
console.error("Error saving login:", error);

}

},
},
}
}
});
1 Reply
karlito1501
karlito1501OP23h ago
When I log in, it doesn't trigger it so I'm guessing update is wrong

Did you find this page helpful?