fix: improve onboarding

This commit is contained in:
Carl-Gerhard Lindesvärd
2026-02-27 22:45:21 +01:00
parent b0aa7f4196
commit 10da7d3a1d
25 changed files with 868 additions and 806 deletions

View File

@@ -1,16 +1,16 @@
import { LogError } from '@/utils/errors';
import {
Arctic,
type OAuth2Tokens,
createSession,
generateSessionToken,
github,
google,
type OAuth2Tokens,
setSessionTokenCookie,
} from '@openpanel/auth';
import { type Account, connectUserToOrganization, db } from '@openpanel/db';
import type { FastifyReply, FastifyRequest } from 'fastify';
import { z } from 'zod';
import { LogError } from '@/utils/errors';
async function getGithubEmail(githubAccessToken: string) {
const emailListRequest = new Request('https://api.github.com/user/emails');
@@ -74,10 +74,15 @@ async function handleExistingUser({
setSessionTokenCookie(
(...args) => reply.setCookie(...args),
sessionToken,
session.expiresAt,
session.expiresAt
);
reply.setCookie('last-auth-provider', providerName, {
maxAge: 60 * 60 * 24 * 365,
path: '/',
sameSite: 'lax',
});
return reply.redirect(
process.env.DASHBOARD_URL || process.env.NEXT_PUBLIC_DASHBOARD_URL!,
process.env.DASHBOARD_URL || process.env.NEXT_PUBLIC_DASHBOARD_URL!
);
}
@@ -103,7 +108,7 @@ async function handleNewUser({
existingUser,
oauthUser,
providerName,
},
}
);
}
@@ -138,10 +143,15 @@ async function handleNewUser({
setSessionTokenCookie(
(...args) => reply.setCookie(...args),
sessionToken,
session.expiresAt,
session.expiresAt
);
reply.setCookie('last-auth-provider', providerName, {
maxAge: 60 * 60 * 24 * 365,
path: '/',
sameSite: 'lax',
});
return reply.redirect(
process.env.DASHBOARD_URL || process.env.NEXT_PUBLIC_DASHBOARD_URL!,
process.env.DASHBOARD_URL || process.env.NEXT_PUBLIC_DASHBOARD_URL!
);
}
@@ -219,7 +229,7 @@ interface ValidatedOAuthQuery {
async function validateOAuthCallback(
req: FastifyRequest,
provider: Provider,
provider: Provider
): Promise<ValidatedOAuthQuery> {
const schema = z.object({
code: z.string(),
@@ -353,7 +363,7 @@ export async function googleCallback(req: FastifyRequest, reply: FastifyReply) {
function redirectWithError(reply: FastifyReply, error: LogError | unknown) {
const url = new URL(
process.env.DASHBOARD_URL || process.env.NEXT_PUBLIC_DASHBOARD_URL!,
process.env.DASHBOARD_URL || process.env.NEXT_PUBLIC_DASHBOARD_URL!
);
url.pathname = '/login';
if (error instanceof LogError) {