diff --git a/app/api/nextcloud/status/route.ts b/app/api/nextcloud/status/route.ts index 6e3d25f6..95d1a095 100644 --- a/app/api/nextcloud/status/route.ts +++ b/app/api/nextcloud/status/route.ts @@ -118,7 +118,7 @@ export async function GET() { try { const session = await getServerSession(authOptions); - if (!session?.user?.email || !session?.accessToken) { + if (!session?.user?.email || !session?.user?.id || !session?.accessToken) { return NextResponse.json( { error: 'Unauthorized' }, { status: 401 } @@ -148,10 +148,14 @@ export async function GET() { } try { + // Use the Keycloak ID as the Nextcloud username + const nextcloudUsername = `cube-${session.user.id}`; + console.log('Using Nextcloud username:', nextcloudUsername); + // Get or create WebDAV credentials const webdavPassword = await getWebDAVCredentials( nextcloudUrl, - session.user.email, + nextcloudUsername, adminUsername, adminPassword ); @@ -161,12 +165,12 @@ export async function GET() { } // Get user's folders using WebDAV with Basic authentication - const webdavUrl = `${nextcloudUrl}/remote.php/dav/files/${encodeURIComponent(session.user.email)}/`; + const webdavUrl = `${nextcloudUrl}/remote.php/dav/files/${encodeURIComponent(nextcloudUsername)}/`; console.log('Requesting WebDAV URL:', webdavUrl); const foldersResponse = await fetch(webdavUrl, { headers: { - 'Authorization': `Basic ${Buffer.from(`${session.user.email}:${webdavPassword}`).toString('base64')}`, + 'Authorization': `Basic ${Buffer.from(`${nextcloudUsername}:${webdavPassword}`).toString('base64')}`, 'Depth': '1', 'Content-Type': 'application/xml', }, @@ -202,7 +206,7 @@ export async function GET() { if (isCollection) { const displayName = response.getElementsByTagName('d:displayname')[0]?.textContent; - if (displayName && displayName !== session.user.email) { + if (displayName && displayName !== nextcloudUsername) { folders.push(displayName); } }