Rollback to a1d67c74
This commit is contained in:
@@ -1,9 +1,8 @@
|
||||
import type { CreateExpressContextOptions } from "@trpc/server/adapters/express";
|
||||
import type { User } from "../../drizzle/schema";
|
||||
import { verifyToken } from "./auth";
|
||||
import { getUserById, getUserByOpenId } from "../db";
|
||||
import { getUserById } from "../db";
|
||||
import { COOKIE_NAME } from "@shared/const";
|
||||
import { sdk } from "./sdk";
|
||||
|
||||
export type TrpcContext = {
|
||||
req: CreateExpressContextOptions["req"];
|
||||
@@ -29,18 +28,12 @@ export async function createContext(
|
||||
}
|
||||
|
||||
if (token) {
|
||||
// Essayer d'abord l'authentification locale (JWT avec userId)
|
||||
try {
|
||||
const decoded = verifyToken(token);
|
||||
if (decoded && decoded.userId) {
|
||||
user = await getUserById(decoded.userId) || null;
|
||||
}
|
||||
} catch (localAuthError) {
|
||||
// Si l'authentification locale échoue, essayer OAuth
|
||||
const session = await sdk.verifySession(token);
|
||||
if (session && session.openId) {
|
||||
user = await getUserByOpenId(session.openId) || null;
|
||||
}
|
||||
// Vérifier et décoder le token
|
||||
const decoded = verifyToken(token);
|
||||
|
||||
if (decoded) {
|
||||
// Récupérer l'utilisateur depuis la base de données
|
||||
user = await getUserById(decoded.userId) || null;
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
|
||||
@@ -44,20 +44,7 @@ export function registerOAuthRoutes(app: Express) {
|
||||
const cookieOptions = getSessionCookieOptions(req);
|
||||
res.cookie(COOKIE_NAME, sessionToken, { ...cookieOptions, maxAge: ONE_YEAR_MS });
|
||||
|
||||
// Décoder le state pour obtenir l'URL de redirection
|
||||
let redirectUrl = "/";
|
||||
try {
|
||||
redirectUrl = Buffer.from(state, 'base64').toString('utf-8');
|
||||
// Si c'est une URL complète, extraire seulement le path
|
||||
if (redirectUrl.startsWith('http')) {
|
||||
const url = new URL(redirectUrl);
|
||||
redirectUrl = url.pathname;
|
||||
}
|
||||
} catch (error) {
|
||||
console.warn("[OAuth] Failed to decode state, redirecting to /", error);
|
||||
}
|
||||
|
||||
res.redirect(302, redirectUrl);
|
||||
res.redirect(302, "/");
|
||||
} catch (error) {
|
||||
console.error("[OAuth] Callback failed", error);
|
||||
res.status(500).json({ error: "OAuth callback failed" });
|
||||
|
||||
Reference in New Issue
Block a user