Fix scheduler auth redirects
Create PR containing updated CHANGELOG.md and release packages to NPM once PR is merged / Release (push) Has been cancelled
Run i18n AI automation / Run i18n (push) Has been cancelled
Next.js Bundle Analysis / analyze (push) Has been cancelled

This commit is contained in:
2026-06-15 10:22:41 -06:00
parent 4cc0a00aac
commit 0cba09ddb4
6 changed files with 72 additions and 4 deletions
+27
View File
@@ -0,0 +1,27 @@
import { redirect } from "next/navigation";
import { safeSchedulerCallback } from "@scheduler/lib/scheduler/auth-links";
export const dynamic = "force-dynamic";
type AuthErrorPageProps = {
searchParams: Promise<{ callbackUrl?: string | string[]; error?: string | string[] }>;
};
function firstParam(value: string | string[] | undefined): string | undefined {
return Array.isArray(value) ? value[0] : value;
}
export default async function AuthErrorPage({ searchParams }: AuthErrorPageProps) {
const params = await searchParams;
const target = new URLSearchParams({
callbackUrl: safeSchedulerCallback(params.callbackUrl),
});
const error = firstParam(params.error);
if (error) {
target.set("error", error);
}
redirect(`/login?${target.toString()}`);
}
+27
View File
@@ -0,0 +1,27 @@
import { redirect } from "next/navigation";
import { safeSchedulerCallback } from "@scheduler/lib/scheduler/auth-links";
export const dynamic = "force-dynamic";
type AuthLoginPageProps = {
searchParams: Promise<{ callbackUrl?: string | string[]; error?: string | string[] }>;
};
function firstParam(value: string | string[] | undefined): string | undefined {
return Array.isArray(value) ? value[0] : value;
}
export default async function AuthLoginPage({ searchParams }: AuthLoginPageProps) {
const params = await searchParams;
const target = new URLSearchParams({
callbackUrl: safeSchedulerCallback(params.callbackUrl),
});
const error = firstParam(params.error);
if (error) {
target.set("error", error);
}
redirect(`/login?${target.toString()}`);
}
+7
View File
@@ -0,0 +1,7 @@
import { redirect } from "next/navigation";
export const dynamic = "force-dynamic";
export default function AuthLogoutPage() {
redirect("/logout");
}
+7
View File
@@ -0,0 +1,7 @@
import { redirect } from "next/navigation";
export const dynamic = "force-dynamic";
export default function AuthVerifyPage() {
redirect("/login");
}
+3 -3
View File
@@ -13,7 +13,7 @@ services:
environment: environment:
POSTGRES_USER: ${POSTGRES_USER:-calcom} POSTGRES_USER: ${POSTGRES_USER:-calcom}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB:-vynte_scheduler} POSTGRES_DB: ${POSTGRES_DB:-calcom}
volumes: volumes:
- postgres-data:/var/lib/postgresql/data - postgres-data:/var/lib/postgresql/data
healthcheck: healthcheck:
@@ -42,8 +42,8 @@ services:
AUTHENTIK_ISSUER: ${AUTHENTIK_ISSUER} AUTHENTIK_ISSUER: ${AUTHENTIK_ISSUER}
AUTHENTIK_CLIENT_ID: ${AUTHENTIK_CLIENT_ID} AUTHENTIK_CLIENT_ID: ${AUTHENTIK_CLIENT_ID}
AUTHENTIK_CLIENT_SECRET: ${AUTHENTIK_CLIENT_SECRET} AUTHENTIK_CLIENT_SECRET: ${AUTHENTIK_CLIENT_SECRET}
DATABASE_URL: postgresql://${POSTGRES_USER:-calcom}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-vynte_scheduler} DATABASE_URL: postgresql://${POSTGRES_USER:-calcom}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-calcom}
DATABASE_DIRECT_URL: postgresql://${POSTGRES_USER:-calcom}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-vynte_scheduler} DATABASE_DIRECT_URL: postgresql://${POSTGRES_USER:-calcom}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB:-calcom}
CALENDSO_ENCRYPTION_KEY: ${CALENDSO_ENCRYPTION_KEY} CALENDSO_ENCRYPTION_KEY: ${CALENDSO_ENCRYPTION_KEY}
SCHEDULER_DEMO_MODE: ${SCHEDULER_DEMO_MODE:-0} SCHEDULER_DEMO_MODE: ${SCHEDULER_DEMO_MODE:-0}
networks: networks:
+1 -1
View File
@@ -15,7 +15,7 @@ AUTHENTIK_CLIENT_SECRET=replace-with-authentik-client-secret
# Database # Database
POSTGRES_USER=calcom POSTGRES_USER=calcom
POSTGRES_DB=vynte_scheduler POSTGRES_DB=calcom
# Keep SCHEDULER_DEMO_MODE=0 in production: demo mode bypasses Authentik login. # Keep SCHEDULER_DEMO_MODE=0 in production: demo mode bypasses Authentik login.
SCHEDULER_DEMO_MODE=0 SCHEDULER_DEMO_MODE=0