From 9ad8bcf507dae85ae4d1fa52fa7a1b368609813e Mon Sep 17 00:00:00 2001 From: MarconLP <13001502+MarconLP@users.noreply.github.com> Date: Sun, 23 Apr 2023 12:52:31 +0200 Subject: [PATCH] add sign-in and sign-out events --- package-lock.json | 14 +++++++------- package.json | 2 +- src/server/auth.ts | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3275b0f..e871aa4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -34,7 +34,7 @@ "micro": "^10.0.1", "micro-cors": "^0.1.1", "next": "^13.3.0", - "next-auth": "^4.21.0", + "next-auth": "^4.22.1", "posthog-js": "^1.53.4", "posthog-node": "^3.1.0", "react": "18.2.0", @@ -5350,9 +5350,9 @@ } }, "node_modules/next-auth": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/next-auth/-/next-auth-4.22.0.tgz", - "integrity": "sha512-08+kjnDoE7aQ52O996x6cwA3ffc2CbHIkrCgLYhbE+aDIJBKI0oA9UbIEIe19/+ODYJgpAHHOtJx4izmsgaVag==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/next-auth/-/next-auth-4.22.1.tgz", + "integrity": "sha512-NTR3f6W7/AWXKw8GSsgSyQcDW6jkslZLH8AiZa5PQ09w1kR8uHtR9rez/E9gAq/o17+p0JYHE8QjF3RoniiObA==", "dependencies": { "@babel/runtime": "^7.20.13", "@panva/hkdf": "^1.0.2", @@ -11147,9 +11147,9 @@ } }, "next-auth": { - "version": "4.22.0", - "resolved": "https://registry.npmjs.org/next-auth/-/next-auth-4.22.0.tgz", - "integrity": "sha512-08+kjnDoE7aQ52O996x6cwA3ffc2CbHIkrCgLYhbE+aDIJBKI0oA9UbIEIe19/+ODYJgpAHHOtJx4izmsgaVag==", + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/next-auth/-/next-auth-4.22.1.tgz", + "integrity": "sha512-NTR3f6W7/AWXKw8GSsgSyQcDW6jkslZLH8AiZa5PQ09w1kR8uHtR9rez/E9gAq/o17+p0JYHE8QjF3RoniiObA==", "requires": { "@babel/runtime": "^7.20.13", "@panva/hkdf": "^1.0.2", diff --git a/package.json b/package.json index 6131e7c..ddcd95e 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "micro": "^10.0.1", "micro-cors": "^0.1.1", "next": "^13.3.0", - "next-auth": "^4.21.0", + "next-auth": "^4.22.1", "posthog-js": "^1.53.4", "posthog-node": "^3.1.0", "react": "18.2.0", diff --git a/src/server/auth.ts b/src/server/auth.ts index d98f7f0..b4e3589 100644 --- a/src/server/auth.ts +++ b/src/server/auth.ts @@ -9,6 +9,7 @@ import GitHubProvider from "next-auth/providers/github"; import { PrismaAdapter } from "@next-auth/prisma-adapter"; import { env } from "~/env.mjs"; import { prisma } from "~/server/db"; +import { PostHog } from "posthog-node"; /** * Module augmentation for `next-auth` types. Allows us to add custom properties to the `session` @@ -67,6 +68,44 @@ export const authOptions: NextAuthOptions = { * @see https://next-auth.js.org/providers/github */ ], + events: { + async signIn(message) { + const client = new PostHog(env.NEXT_PUBLIC_POSTHOG_KEY, { + host: env.NEXT_PUBLIC_POSTHOG_HOST, + }); + + client.capture({ + distinctId: message.user.id, + event: "user logged in", + properties: { + provider: message.account?.provider, + isNewUser: message.isNewUser, + }, + }); + + await client.shutdownAsync(); + }, + async signOut(message) { + const session = message.session as unknown as { + id: string; + sessionToken: string; + userId: string; + expires: Date; + }; + if (!session?.userId) return; + + const client = new PostHog(env.NEXT_PUBLIC_POSTHOG_KEY, { + host: env.NEXT_PUBLIC_POSTHOG_HOST, + }); + + client.capture({ + distinctId: session.userId, + event: "user logged out", + }); + + await client.shutdownAsync(); + }, + }, pages: { signIn: "/sign-in", },