diff --git a/web/pages/add-funds.tsx b/web/pages/add-funds.tsx
index f680d47b..ed25a21a 100644
--- a/web/pages/add-funds.tsx
+++ b/web/pages/add-funds.tsx
@@ -8,6 +8,9 @@ import { checkoutURL } from 'web/lib/service/stripe'
import { Page } from 'web/components/page'
import { useTracking } from 'web/hooks/use-tracking'
import { trackCallback } from 'web/lib/service/analytics'
+import { redirectIfLoggedOut } from 'web/lib/firebase/server-auth'
+
+export const getServerSideProps = redirectIfLoggedOut('/')
export default function AddFundsPage() {
const user = useUser()
diff --git a/web/pages/admin.tsx b/web/pages/admin.tsx
index e709e875..81f23ba9 100644
--- a/web/pages/admin.tsx
+++ b/web/pages/admin.tsx
@@ -9,6 +9,9 @@ import { useContracts } from 'web/hooks/use-contracts'
import { mapKeys } from 'lodash'
import { useAdmin } from 'web/hooks/use-admin'
import { contractPath } from 'web/lib/firebase/contracts'
+import { redirectIfLoggedOut } from 'web/lib/firebase/server-auth'
+
+export const getServerSideProps = redirectIfLoggedOut('/')
function avatarHtml(avatarUrl: string) {
return `
{
- if (creator === null) router.push('/')
- }, [creator, router])
-
- if (!router.isReady || !creator) return
+ if (!router.isReady || creator) return
return (
@@ -93,7 +92,7 @@ export default function Create() {
// Allow user to create a new contract
export function NewContract(props: {
- creator: User
+ creator?: User | null
question: string
params?: NewQuestionParams
}) {
diff --git a/web/pages/home.tsx b/web/pages/home.tsx
index 98d5036e..6aa99a07 100644
--- a/web/pages/home.tsx
+++ b/web/pages/home.tsx
@@ -1,10 +1,9 @@
import React, { useEffect, useState } from 'react'
-import Router, { useRouter } from 'next/router'
+import { useRouter } from 'next/router'
import { PlusSmIcon } from '@heroicons/react/solid'
import { Page } from 'web/components/page'
import { Col } from 'web/components/layout/col'
-import { useUser } from 'web/hooks/use-user'
import { getSavedSort } from 'web/hooks/use-sort-and-query-params'
import { ContractSearch } from 'web/components/contract-search'
import { Contract } from 'common/contract'
@@ -12,19 +11,16 @@ import { ContractPageContent } from './[username]/[contractSlug]'
import { getContractFromSlug } from 'web/lib/firebase/contracts'
import { useTracking } from 'web/hooks/use-tracking'
import { track } from 'web/lib/service/analytics'
+import { redirectIfLoggedOut } from 'web/lib/firebase/server-auth'
+
+export const getServerSideProps = redirectIfLoggedOut('/')
const Home = () => {
- const user = useUser()
const [contract, setContract] = useContractPage()
const router = useRouter()
useTracking('view home')
- if (user === null) {
- Router.replace('/')
- return <>>
- }
-
return (
<>
diff --git a/web/pages/links.tsx b/web/pages/links.tsx
index 76c62978..490f1878 100644
--- a/web/pages/links.tsx
+++ b/web/pages/links.tsx
@@ -18,11 +18,14 @@ import { Avatar } from 'web/components/avatar'
import { RelativeTimestamp } from 'web/components/relative-timestamp'
import { UserLink } from 'web/components/user-page'
import { CreateLinksButton } from 'web/components/manalinks/create-links-button'
+import { redirectIfLoggedOut } from 'web/lib/firebase/server-auth'
import dayjs from 'dayjs'
import customParseFormat from 'dayjs/plugin/customParseFormat'
dayjs.extend(customParseFormat)
+export const getServerSideProps = redirectIfLoggedOut('/')
+
export function getManalinkUrl(slug: string) {
return `${location.protocol}//${location.host}/link/${slug}`
}
diff --git a/web/pages/profile.tsx b/web/pages/profile.tsx
index b80698ae..541f5de9 100644
--- a/web/pages/profile.tsx
+++ b/web/pages/profile.tsx
@@ -1,6 +1,5 @@
import React, { useEffect, useState } from 'react'
import { RefreshIcon } from '@heroicons/react/outline'
-import Router from 'next/router'
import { AddFundsButton } from 'web/components/add-funds-button'
import { Page } from 'web/components/page'
@@ -18,6 +17,9 @@ import { updateUser, updatePrivateUser } from 'web/lib/firebase/users'
import { defaultBannerUrl } from 'web/components/user-page'
import { SiteLink } from 'web/components/site-link'
import Textarea from 'react-expanding-textarea'
+import { redirectIfLoggedOut } from 'web/lib/firebase/server-auth'
+
+export const getServerSideProps = redirectIfLoggedOut('/')
function EditUserField(props: {
user: User
@@ -134,8 +136,7 @@ export default function ProfilePage() {
})
}
- if (user === null) {
- Router.replace('/')
+ if (user == null) {
return <>>
}
diff --git a/web/pages/trades.tsx b/web/pages/trades.tsx
index 55a08bc6..a29fb7f0 100644
--- a/web/pages/trades.tsx
+++ b/web/pages/trades.tsx
@@ -1,17 +1,10 @@
import Router from 'next/router'
-import { useEffect } from 'react'
+import { redirectIfLoggedOut } from 'web/lib/firebase/server-auth'
-import { useUser } from 'web/hooks/use-user'
+export const getServerSideProps = redirectIfLoggedOut('/')
// Deprecated: redirects to /portfolio.
// Eventually, this will be removed.
export default function TradesPage() {
- const user = useUser()
-
- useEffect(() => {
- if (user === null) Router.replace('/')
- else Router.replace('/portfolio')
- })
-
- return <>>
+ Router.replace('/portfolio')
}