Files
Webklar-Kundenbereich/server/services/appwriteClient.js
root bd59243e2c Fix Login: Appwrite-Session ohne secret auf dem Server
session.secret wird ohne API-Key nicht zurückgegeben. Login nutzt
daher session.userId und die Admin Users API statt account.get().

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-22 22:16:31 +00:00

46 lines
1.2 KiB
JavaScript

import { createUserClient, createAdminClient } from './appwriteAdmin.js'
/**
* Appwrite liefert session.secret nur bei Requests mit API-Key.
* Server-seitiger E-Mail-Login nutzt daher userId aus der Session + Admin Users API.
*/
export async function loginWithAppwrite(email, password) {
const { account } = createUserClient()
let session
try {
session = await account.createEmailPasswordSession(email, password)
} catch (err) {
const message = err?.message || 'Anmeldung fehlgeschlagen'
const error = new Error(message)
error.status = 401
throw error
}
const userId = session?.userId
if (!userId) {
const error = new Error('Appwrite-Session ohne Benutzer-ID')
error.status = 500
throw error
}
const { users } = createAdminClient()
let user
try {
user = await users.get(userId)
} catch (err) {
const message = err?.message || 'Benutzer konnte nicht geladen werden'
const error = new Error(message)
error.status = 500
throw error
}
try {
await users.deleteSession(userId, session.$id)
} catch {
// Portal nutzt eigene Cookie-Session; Appwrite-Session wird nicht persistiert
}
return user
}