Fix auth redirect origin and guard dashboard against missing session
This commit is contained in:
@@ -67,6 +67,12 @@ export default function DashboardPage() {
|
|||||||
setHasClientMounted(true);
|
setHasClientMounted(true);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (!isSessionPending && !session?.user) {
|
||||||
|
router.replace("/auth/sign-in");
|
||||||
|
}
|
||||||
|
}, [isSessionPending, router, session?.user]);
|
||||||
|
|
||||||
const displayName = session?.user.name?.trim() || session?.user.email || "Nutzer";
|
const displayName = session?.user.name?.trim() || session?.user.email || "Nutzer";
|
||||||
const initials = getInitials(displayName);
|
const initials = getInitials(displayName);
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,12 @@ export const authComponent = createClient<DataModel>(components.betterAuth);
|
|||||||
export const createAuth = (ctx: GenericCtx<DataModel>) => {
|
export const createAuth = (ctx: GenericCtx<DataModel>) => {
|
||||||
const authAppUrl = appUrl ?? siteUrl;
|
const authAppUrl = appUrl ?? siteUrl;
|
||||||
const signInRedirectUrl = `${authAppUrl}/dashboard`;
|
const signInRedirectUrl = `${authAppUrl}/dashboard`;
|
||||||
|
const authAppOrigin = new URL(authAppUrl).origin;
|
||||||
|
|
||||||
|
const toAuthAppUrl = (url: string) => {
|
||||||
|
const incoming = new URL(url);
|
||||||
|
return new URL(`${incoming.pathname}${incoming.search}`, authAppOrigin);
|
||||||
|
};
|
||||||
|
|
||||||
return betterAuth({
|
return betterAuth({
|
||||||
baseURL: siteUrl,
|
baseURL: siteUrl,
|
||||||
@@ -42,7 +48,7 @@ export const createAuth = (ctx: GenericCtx<DataModel>) => {
|
|||||||
emailVerification: {
|
emailVerification: {
|
||||||
sendOnSignUp: true,
|
sendOnSignUp: true,
|
||||||
sendVerificationEmail: async ({ user, url }) => {
|
sendVerificationEmail: async ({ user, url }) => {
|
||||||
const verificationUrl = new URL(url);
|
const verificationUrl = toAuthAppUrl(url);
|
||||||
|
|
||||||
if (appUrl) {
|
if (appUrl) {
|
||||||
verificationUrl.searchParams.set("callbackURL", `${appUrl}/dashboard`);
|
verificationUrl.searchParams.set("callbackURL", `${appUrl}/dashboard`);
|
||||||
@@ -92,7 +98,7 @@ export const createAuth = (ctx: GenericCtx<DataModel>) => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const magicLinkUrl = new URL(url);
|
const magicLinkUrl = toAuthAppUrl(url);
|
||||||
magicLinkUrl.searchParams.set("callbackURL", signInRedirectUrl);
|
magicLinkUrl.searchParams.set("callbackURL", signInRedirectUrl);
|
||||||
magicLinkUrl.searchParams.set("errorCallbackURL", `${authAppUrl}/auth/sign-in`);
|
magicLinkUrl.searchParams.set("errorCallbackURL", `${authAppUrl}/auth/sign-in`);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user