Checkpoint: Implémentation authentification hybride (cookies + Authorization header) - Résolution du problème de connexion dans l'environnement de preview Manus
This commit is contained in:
@@ -16,8 +16,16 @@ export async function createContext(
|
||||
let user: User | null = null;
|
||||
|
||||
try {
|
||||
// Récupérer le token JWT depuis le cookie
|
||||
const token = opts.req.cookies[COOKIE_NAME];
|
||||
// Essayer de récupérer le token depuis le cookie d'abord
|
||||
let token = opts.req.cookies[COOKIE_NAME];
|
||||
|
||||
// Si pas de cookie, essayer le header Authorization
|
||||
if (!token) {
|
||||
const authHeader = opts.req.headers.authorization;
|
||||
if (authHeader && authHeader.startsWith('Bearer ')) {
|
||||
token = authHeader.substring(7);
|
||||
}
|
||||
}
|
||||
|
||||
if (token) {
|
||||
// Vérifier et décoder le token
|
||||
|
||||
@@ -57,7 +57,7 @@ export const appRouter = router({
|
||||
const cookieOptions = getSessionCookieOptions(ctx.req);
|
||||
ctx.res.cookie(COOKIE_NAME, token, { ...cookieOptions, maxAge: 30 * 24 * 60 * 60 * 1000 }); // 30 jours
|
||||
|
||||
return { success: true, userId };
|
||||
return { success: true, userId, token };
|
||||
}),
|
||||
|
||||
login: publicProcedure
|
||||
@@ -86,9 +86,7 @@ export const appRouter = router({
|
||||
}
|
||||
|
||||
// Vérifier le mot de passe
|
||||
console.log('[LOGIN] Verifying password for:', user.email);
|
||||
const isValid = await verifyPassword(input.password, user.password);
|
||||
console.log('[LOGIN] Password valid:', isValid);
|
||||
if (!isValid) {
|
||||
throw new TRPCError({ code: 'UNAUTHORIZED', message: 'Email ou mot de passe incorrect' });
|
||||
}
|
||||
@@ -103,7 +101,7 @@ export const appRouter = router({
|
||||
const cookieOptions = getSessionCookieOptions(ctx.req);
|
||||
ctx.res.cookie(COOKIE_NAME, token, { ...cookieOptions, maxAge: 30 * 24 * 60 * 60 * 1000 }); // 30 jours
|
||||
|
||||
return { success: true, user: { id: user.id, email: user.email, name: user.name, role: user.role } };
|
||||
return { success: true, user: { id: user.id, email: user.email, name: user.name, role: user.role }, token };
|
||||
}),
|
||||
|
||||
logout: publicProcedure.mutation(({ ctx }) => {
|
||||
|
||||
Reference in New Issue
Block a user