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:
|
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:
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user