if logged in redirect to getting-started page with username in the query param

pull/1555/head
Deepak Prabhakara 2022-01-18 20:56:17 +00:00
parent 6f8e48a4bd
commit 72d17652c2
1 changed files with 20 additions and 1 deletions

View File

@ -3,10 +3,13 @@ import { signIn } from "next-auth/react";
import { useRouter } from "next/router";
import { asStringOrNull } from "@lib/asStringOrNull";
import { getSession } from "@lib/auth";
import prisma from "@lib/prisma";
import { isSAMLLoginEnabled, hostedCal, samlTenantID, samlProductID, samlTenantProduct } from "@lib/saml";
import { inferSSRProps } from "@lib/types/inferSSRProps";
import { ssrInit } from "@server/lib/ssr";
export type SSOProviderPageProps = inferSSRProps<typeof getServerSideProps>;
export default function Type(props: SSOProviderPageProps) {
@ -38,17 +41,32 @@ export const getServerSideProps = async (context: GetServerSidePropsContext) =>
// (would be even better to assert them instead of typecasting)
const providerParam = asStringOrNull(context.query.provider);
const emailParam = asStringOrNull(context.query.email);
const usernameParam = asStringOrNull(context.query.username);
if (!providerParam) {
throw new Error(`File is not named sso/[provider]`);
}
const { req } = context;
const session = await getSession({ req });
const ssr = await ssrInit(context);
if (session) {
return {
redirect: {
destination: "/getting-started" + (usernameParam ? `?username=${usernameParam}` : ""),
permanent: false,
},
};
}
let error: string | null = null;
let tenant = samlTenantID;
let product = samlProductID;
if (providerParam === "saml") {
if (providerParam === "saml" && hostedCal) {
if (!emailParam) {
error = "Email not provided";
} else {
@ -73,6 +91,7 @@ export const getServerSideProps = async (context: GetServerSidePropsContext) =>
return {
props: {
trpcState: ssr.dehydrate(),
provider: providerParam,
isSAMLLoginEnabled,
hostedCal,