Fix more auth disabled flakiness

This commit is contained in:
Weves
2023-12-27 01:22:01 -08:00
committed by Chris Weaver
parent a6a444f365
commit 73483b5e09
3 changed files with 32 additions and 11 deletions

View File

@@ -63,7 +63,7 @@ export default async function ChatPage({
} catch (e) { } catch (e) {
console.log(`Some fetch failed for the main search page - ${e}`); console.log(`Some fetch failed for the main search page - ${e}`);
} }
const authTypeMetadata = results[0] as AuthTypeMetadata; const authTypeMetadata = results[0] as AuthTypeMetadata | null;
const user = results[1] as User | null; const user = results[1] as User | null;
const connectorsResponse = results[2] as Response | null; const connectorsResponse = results[2] as Response | null;
const documentSetsResponse = results[3] as Response | null; const documentSetsResponse = results[3] as Response | null;
@@ -71,12 +71,12 @@ export default async function ChatPage({
const chatSessionsResponse = results[5] as Response | null; const chatSessionsResponse = results[5] as Response | null;
const chatSessionMessagesResponse = results[6] as Response | null; const chatSessionMessagesResponse = results[6] as Response | null;
const authDisabled = authTypeMetadata.authType === "disabled"; const authDisabled = authTypeMetadata?.authType === "disabled";
if (!authDisabled && !user) { if (!authDisabled && !user) {
return redirect("/auth/login"); return redirect("/auth/login");
} }
if (user && !user.is_verified && authTypeMetadata.requiresVerification) { if (user && !user.is_verified && authTypeMetadata?.requiresVerification) {
return redirect("/auth/waiting-on-verification"); return redirect("/auth/waiting-on-verification");
} }

View File

@@ -40,24 +40,25 @@ export default async function Home() {
null, null,
null, null,
null, null,
null,
]; ];
try { try {
results = await Promise.all(tasks); results = await Promise.all(tasks);
} catch (e) { } catch (e) {
console.log(`Some fetch failed for the main search page - ${e}`); console.log(`Some fetch failed for the main search page - ${e}`);
} }
const authTypeMetadata = results[0] as AuthTypeMetadata; const authTypeMetadata = results[0] as AuthTypeMetadata | null;
const user = results[1] as User | null; const user = results[1] as User | null;
const connectorsResponse = results[2] as Response | null; const connectorsResponse = results[2] as Response | null;
const documentSetsResponse = results[3] as Response | null; const documentSetsResponse = results[3] as Response | null;
const personaResponse = results[4] as Response | null; const personaResponse = results[4] as Response | null;
const authDisabled = authTypeMetadata.authType === "disabled"; const authDisabled = authTypeMetadata?.authType === "disabled";
if (!authDisabled && !user) { if (!authDisabled && !user) {
return redirect("/auth/login"); return redirect("/auth/login");
} }
if (user && !user.is_verified && authTypeMetadata.requiresVerification) { if (user && !user.is_verified && authTypeMetadata?.requiresVerification) {
return redirect("/auth/waiting-on-verification"); return redirect("/auth/waiting-on-verification");
} }

View File

@@ -11,15 +11,32 @@ import {
RobotIcon, RobotIcon,
ConnectorIcon, ConnectorIcon,
} from "@/components/icons/icons"; } from "@/components/icons/icons";
import { getAuthDisabledSS, getCurrentUserSS } from "@/lib/userSS"; import { User } from "@/lib/types";
import {
AuthTypeMetadata,
getAuthTypeMetadataSS,
getCurrentUserSS,
} from "@/lib/userSS";
import { redirect } from "next/navigation"; import { redirect } from "next/navigation";
export async function Layout({ children }: { children: React.ReactNode }) { export async function Layout({ children }: { children: React.ReactNode }) {
const [authDisabled, user] = await Promise.all([ const tasks = [getAuthTypeMetadataSS(), getCurrentUserSS()];
getAuthDisabledSS(),
getCurrentUserSS(),
]);
// catch cases where the backend is completely unreachable here
// without try / catch, will just raise an exception and the page
// will not render
let results: (User | AuthTypeMetadata | null)[] = [null, null];
try {
results = await Promise.all(tasks);
} catch (e) {
console.log(`Some fetch failed for the main search page - ${e}`);
}
const authTypeMetadata = results[0] as AuthTypeMetadata | null;
const user = results[1] as User | null;
const authDisabled = authTypeMetadata?.authType === "disabled";
const requiresVerification = authTypeMetadata?.requiresVerification;
if (!authDisabled) { if (!authDisabled) {
if (!user) { if (!user) {
return redirect("/auth/login"); return redirect("/auth/login");
@@ -27,6 +44,9 @@ export async function Layout({ children }: { children: React.ReactNode }) {
if (user.role !== "admin") { if (user.role !== "admin") {
return redirect("/"); return redirect("/");
} }
if (!user.is_verified && requiresVerification) {
return redirect("/auth/waiting-on-verification");
}
} }
return ( return (