FIX: Authentication for Keycloak - Phase 1

Updated core interest management endpoints:
-  server/api/create-interest.ts
-  server/api/update-interest.ts
-  server/api/delete-interest.ts
-  Created server/utils/auth.ts with dual auth support

 Next: Update ALL remaining API endpoints systematically
This commit is contained in:
2025-06-15 16:13:22 +02:00
parent 30223746e1
commit 01b770dc6c
5 changed files with 70 additions and 19 deletions

37
server/utils/auth.ts Normal file
View File

@@ -0,0 +1,37 @@
/**
* Check if the request is authenticated via either:
* 1. x-tag header (for webhooks/external calls)
* 2. Keycloak session (for logged-in users)
*/
export const isAuthenticated = async (event: any): Promise<boolean> => {
// Check x-tag header authentication (existing method)
const xTagHeader = getRequestHeader(event, "x-tag");
if (xTagHeader && (xTagHeader === "094ut234" || xTagHeader === "pjnvü1230")) {
console.log('[auth] Authenticated via x-tag header');
return true;
}
// Check Keycloak session authentication
try {
const keycloakSession = getCookie(event, 'keycloak-session');
if (keycloakSession) {
console.log('[auth] Authenticated via Keycloak session');
return true;
}
} catch (error) {
console.log('[auth] Keycloak session check failed:', error);
}
console.log('[auth] No valid authentication found');
return false;
}
export const requireAuth = async (event: any) => {
const authenticated = await isAuthenticated(event);
if (!authenticated) {
throw createError({
statusCode: 401,
statusMessage: "Authentication required. Please provide x-tag header or valid session."
});
}
}