Fix scheduler auth redirects
This commit is contained in:
@@ -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()}`);
|
||||
}
|
||||
@@ -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()}`);
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
import { redirect } from "next/navigation";
|
||||
|
||||
export const dynamic = "force-dynamic";
|
||||
|
||||
export default function AuthLogoutPage() {
|
||||
redirect("/logout");
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
import { redirect } from "next/navigation";
|
||||
|
||||
export const dynamic = "force-dynamic";
|
||||
|
||||
export default function AuthVerifyPage() {
|
||||
redirect("/login");
|
||||
}
|
||||
+3
-3
@@ -13,7 +13,7 @@ services:
|
||||
environment:
|
||||
POSTGRES_USER: ${POSTGRES_USER:-calcom}
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
|
||||
POSTGRES_DB: ${POSTGRES_DB:-vynte_scheduler}
|
||||
POSTGRES_DB: ${POSTGRES_DB:-calcom}
|
||||
volumes:
|
||||
- postgres-data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
@@ -42,8 +42,8 @@ services:
|
||||
AUTHENTIK_ISSUER: ${AUTHENTIK_ISSUER}
|
||||
AUTHENTIK_CLIENT_ID: ${AUTHENTIK_CLIENT_ID}
|
||||
AUTHENTIK_CLIENT_SECRET: ${AUTHENTIK_CLIENT_SECRET}
|
||||
DATABASE_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:-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:-calcom}
|
||||
CALENDSO_ENCRYPTION_KEY: ${CALENDSO_ENCRYPTION_KEY}
|
||||
SCHEDULER_DEMO_MODE: ${SCHEDULER_DEMO_MODE:-0}
|
||||
networks:
|
||||
|
||||
@@ -15,7 +15,7 @@ AUTHENTIK_CLIENT_SECRET=replace-with-authentik-client-secret
|
||||
|
||||
# Database
|
||||
POSTGRES_USER=calcom
|
||||
POSTGRES_DB=vynte_scheduler
|
||||
POSTGRES_DB=calcom
|
||||
|
||||
# Keep SCHEDULER_DEMO_MODE=0 in production: demo mode bypasses Authentik login.
|
||||
SCHEDULER_DEMO_MODE=0
|
||||
|
||||
Reference in New Issue
Block a user