diff --git a/apps/login/src/app/(login)/me/change-password/page.tsx b/apps/login/src/app/(login)/me/change-password/page.tsx index 5c28c61d261..febd9e0b995 100644 --- a/apps/login/src/app/(login)/me/change-password/page.tsx +++ b/apps/login/src/app/(login)/me/change-password/page.tsx @@ -2,6 +2,7 @@ import { getSessionCookieById } from "@/lib/cookies"; import { getBrandingSettings, getPasswordComplexitySettings, + getSession, } from "@/lib/zitadel"; import Alert from "@/ui/Alert"; import ChangePasswordForm from "@/ui/ChangePasswordForm"; @@ -23,20 +24,22 @@ export default async function Page({ ); } - const session = await getSessionCookieById({ + const sessionCookie = await getSessionCookieById({ sessionId, }); - const sessionFactors = await loadMostRecentSession({ - loginName, - organization, + const { session } = await getSession({ + sessionId: sessionCookie.id, + sessionToken: sessionCookie.token, }); const passwordComplexitySettings = await getPasswordComplexitySettings( - session.organization, + session?.factors?.user?.organizationId, ); - const branding = await getBrandingSettings(session.organization); + const branding = await getBrandingSettings( + session?.factors?.user?.organizationId, + ); return ( @@ -44,7 +47,7 @@ export default async function Page({

Set Password

Set the password for your account

- {(!sessionFactors || !loginName) && ( + {!session && (
Could not get the context of the user. Make sure to enter the @@ -53,19 +56,19 @@ export default async function Page({
)} - {sessionFactors && ( + {session && ( )} - {passwordComplexitySettings && ( + {passwordComplexitySettings && session?.factors?.user?.id && ( )} diff --git a/apps/login/src/app/(login)/mfa/page.tsx b/apps/login/src/app/(login)/mfa/page.tsx index e86566f6903..1101bdb58de 100644 --- a/apps/login/src/app/(login)/mfa/page.tsx +++ b/apps/login/src/app/(login)/mfa/page.tsx @@ -46,7 +46,10 @@ export default async function Page({ async function loadSessionById(sessionId: string, organization?: string) { const recent = await getSessionCookieById({ sessionId, organization }); - return getSession(recent.id, recent.token).then((response) => { + return getSession({ + sessionId: recent.id, + sessionToken: recent.token, + }).then((response) => { if (response?.session && response.session.factors?.user?.id) { return listAuthenticationMethodTypes( response.session.factors.user.id, diff --git a/apps/login/src/app/(login)/mfa/set/page.tsx b/apps/login/src/app/(login)/mfa/set/page.tsx index 8af51ef368f..def34bb066f 100644 --- a/apps/login/src/app/(login)/mfa/set/page.tsx +++ b/apps/login/src/app/(login)/mfa/set/page.tsx @@ -56,7 +56,10 @@ export default async function Page({ async function loadSessionById(sessionId: string, organization?: string) { const recent = await getSessionCookieById({ sessionId, organization }); - return getSession(recent.id, recent.token).then((response) => { + return getSession({ + sessionId: recent.id, + sessionToken: recent.token, + }).then((response) => { if (response?.session && response.session.factors?.user?.id) { const userId = response.session.factors.user.id; return listAuthenticationMethodTypes(userId).then((methods) => { diff --git a/apps/login/src/app/(login)/passkey/login/page.tsx b/apps/login/src/app/(login)/passkey/login/page.tsx index d681b4ef91d..eec5389f709 100644 --- a/apps/login/src/app/(login)/passkey/login/page.tsx +++ b/apps/login/src/app/(login)/passkey/login/page.tsx @@ -24,7 +24,10 @@ export default async function Page({ async function loadSessionById(sessionId: string, organization?: string) { const recent = await getSessionCookieById({ sessionId, organization }); - return getSession(recent.id, recent.token).then((response) => { + return getSession({ + sessionId: recent.id, + sessionToken: recent.token, + }).then((response) => { if (response?.session) { return response.session; } diff --git a/apps/login/src/app/(login)/signedin/page.tsx b/apps/login/src/app/(login)/signedin/page.tsx index 01c409bb878..13715c2c02f 100644 --- a/apps/login/src/app/(login)/signedin/page.tsx +++ b/apps/login/src/app/(login)/signedin/page.tsx @@ -29,11 +29,13 @@ async function loadSession(loginName: string, authRequestId?: string) { return redirect(callbackUrl); }); } - return getSession(recent.id, recent.token).then((response) => { - if (response?.session) { - return response.session; - } - }); + return getSession({ sessionId: recent.id, sessionToken: recent.token }).then( + (response) => { + if (response?.session) { + return response.session; + } + }, + ); } export default async function Page({ searchParams }: { searchParams: any }) { diff --git a/apps/login/src/app/(login)/u2f/page.tsx b/apps/login/src/app/(login)/u2f/page.tsx index 55e99db4d98..0390f1c50f8 100644 --- a/apps/login/src/app/(login)/u2f/page.tsx +++ b/apps/login/src/app/(login)/u2f/page.tsx @@ -21,7 +21,10 @@ export default async function Page({ async function loadSessionById(sessionId: string, organization?: string) { const recent = await getSessionCookieById({ sessionId, organization }); - return getSession(recent.id, recent.token).then((response) => { + return getSession({ + sessionId: recent.id, + sessionToken: recent.token, + }).then((response) => { if (response?.session) { return response.session; } diff --git a/apps/login/src/lib/zitadel.ts b/apps/login/src/lib/zitadel.ts index f3ff11b331e..4b4d02e8dce 100644 --- a/apps/login/src/lib/zitadel.ts +++ b/apps/login/src/lib/zitadel.ts @@ -188,7 +188,13 @@ export async function setSession( ); } -export async function getSession(sessionId: string, sessionToken: string) { +export async function getSession({ + sessionId, + sessionToken, +}: { + sessionId: string; + sessionToken: string; +}) { return sessionService.getSession({ sessionId, sessionToken }, {}); } diff --git a/apps/login/src/utils/session.ts b/apps/login/src/utils/session.ts index 5e9e5c5b67b..e0b4e2e91a0 100644 --- a/apps/login/src/utils/session.ts +++ b/apps/login/src/utils/session.ts @@ -49,10 +49,10 @@ export async function createSessionAndUpdateCookie( const createdSession = await createSessionFromChecks(checks, challenges); if (createdSession) { - return getSession( - createdSession.sessionId, - createdSession.sessionToken, - ).then((response) => { + return getSession({ + sessionId: createdSession.sessionId, + sessionToken: createdSession.sessionToken, + }).then((response) => { if (response?.session && response.session?.factors?.user?.loginName) { const sessionCookie: CustomCookieData = { id: createdSession.sessionId, @@ -103,10 +103,10 @@ export async function createSessionForUserIdAndUpdateCookie( const createdSession = await createSessionFromChecks(checks, challenges); if (createdSession) { - return getSession( - createdSession.sessionId, - createdSession.sessionToken, - ).then((response) => { + return getSession({ + sessionId: createdSession.sessionId, + sessionToken: createdSession.sessionToken, + }).then((response) => { if (response?.session && response.session?.factors?.user?.loginName) { const sessionCookie: CustomCookieData = { id: createdSession.sessionId, @@ -159,10 +159,10 @@ export async function createSessionForIdpAndUpdateCookie( ); if (createdSession) { - return getSession( - createdSession.sessionId, - createdSession.sessionToken, - ).then((response) => { + return getSession({ + sessionId: createdSession.sessionId, + sessionToken: createdSession.sessionToken, + }).then((response) => { if (response?.session && response.session?.factors?.user?.loginName) { const sessionCookie: CustomCookieData = { id: createdSession.sessionId, @@ -234,35 +234,36 @@ export async function setSessionAndUpdateCookie( sessionCookie.authRequestId = authRequestId; } - return getSession(sessionCookie.id, sessionCookie.token).then( - (response) => { - if (response?.session && response.session.factors?.user?.loginName) { - const { session } = response; - const newCookie: CustomCookieData = { - id: sessionCookie.id, - token: updatedSession.sessionToken, - creationDate: sessionCookie.creationDate, - expirationDate: sessionCookie.expirationDate, - // just overwrite the changeDate with the new one - changeDate: updatedSession.details?.changeDate - ? `${timestampDate(updatedSession.details.changeDate).toDateString()}` - : "", - loginName: session.factors?.user?.loginName ?? "", - organization: session.factors?.user?.organizationId ?? "", - }; + return getSession({ + sessionId: sessionCookie.id, + sessionToken: sessionCookie.token, + }).then((response) => { + if (response?.session && response.session.factors?.user?.loginName) { + const { session } = response; + const newCookie: CustomCookieData = { + id: sessionCookie.id, + token: updatedSession.sessionToken, + creationDate: sessionCookie.creationDate, + expirationDate: sessionCookie.expirationDate, + // just overwrite the changeDate with the new one + changeDate: updatedSession.details?.changeDate + ? `${timestampDate(updatedSession.details.changeDate).toDateString()}` + : "", + loginName: session.factors?.user?.loginName ?? "", + organization: session.factors?.user?.organizationId ?? "", + }; - if (sessionCookie.authRequestId) { - newCookie.authRequestId = sessionCookie.authRequestId; - } - - return updateSessionCookie(sessionCookie.id, newCookie).then(() => { - return { challenges: updatedSession.challenges, ...session }; - }); - } else { - throw "could not get session or session does not have loginName"; + if (sessionCookie.authRequestId) { + newCookie.authRequestId = sessionCookie.authRequestId; } - }, - ); + + return updateSessionCookie(sessionCookie.id, newCookie).then(() => { + return { challenges: updatedSession.challenges, ...session }; + }); + } else { + throw "could not get session or session does not have loginName"; + } + }); } else { throw "Session not be set"; }