Merged master into fix/user-cache
This commit is contained in:
@@ -1,11 +1,12 @@
|
|||||||
import { redirect } from "next/navigation"
|
import { redirect } from "next/navigation"
|
||||||
|
|
||||||
import { overview } from "@/constants/routes/myPages"
|
import { overview } from "@/constants/routes/myPages"
|
||||||
import { getProfileSafely } from "@/lib/trpc/memoizedRequests"
|
|
||||||
|
|
||||||
|
import { auth } from "@/auth"
|
||||||
import LoginButton from "@/components/LoginButton"
|
import LoginButton from "@/components/LoginButton"
|
||||||
import { getIntl } from "@/i18n"
|
import { getIntl } from "@/i18n"
|
||||||
import { getLang } from "@/i18n/serverContext"
|
import { getLang } from "@/i18n/serverContext"
|
||||||
|
import { isValidSession } from "@/utils/session"
|
||||||
|
|
||||||
import styles from "./signUpVerification.module.css"
|
import styles from "./signUpVerification.module.css"
|
||||||
|
|
||||||
@@ -14,8 +15,8 @@ import type { SignUpVerificationProps } from "@/types/components/blocks/dynamicC
|
|||||||
export default async function SignUpVerification({
|
export default async function SignUpVerification({
|
||||||
dynamic_content,
|
dynamic_content,
|
||||||
}: SignUpVerificationProps) {
|
}: SignUpVerificationProps) {
|
||||||
const user = await getProfileSafely()
|
const session = await auth()
|
||||||
if (user) {
|
if (isValidSession(session)) {
|
||||||
redirect(overview[getLang()])
|
redirect(overview[getLang()])
|
||||||
}
|
}
|
||||||
const intl = await getIntl()
|
const intl = await getIntl()
|
||||||
|
|||||||
@@ -1,18 +1,19 @@
|
|||||||
import { redirect } from "next/navigation"
|
import { redirect } from "next/navigation"
|
||||||
|
|
||||||
import { overview } from "@/constants/routes/myPages"
|
import { overview } from "@/constants/routes/myPages"
|
||||||
import { getProfileSafely } from "@/lib/trpc/memoizedRequests"
|
|
||||||
|
|
||||||
|
import { auth } from "@/auth"
|
||||||
import SignupForm from "@/components/Forms/Signup"
|
import SignupForm from "@/components/Forms/Signup"
|
||||||
import { getLang } from "@/i18n/serverContext"
|
import { getLang } from "@/i18n/serverContext"
|
||||||
|
import { isValidSession } from "@/utils/session"
|
||||||
|
|
||||||
import type { SignupFormWrapperProps } from "@/types/components/blocks/dynamicContent"
|
import type { SignupFormWrapperProps } from "@/types/components/blocks/dynamicContent"
|
||||||
|
|
||||||
export default async function SignupFormWrapper({
|
export default async function SignupFormWrapper({
|
||||||
dynamic_content,
|
dynamic_content,
|
||||||
}: SignupFormWrapperProps) {
|
}: SignupFormWrapperProps) {
|
||||||
const user = await getProfileSafely()
|
const session = await auth()
|
||||||
if (user) {
|
if (isValidSession(session)) {
|
||||||
// We don't want to allow users to access signup if they are already authenticated.
|
// We don't want to allow users to access signup if they are already authenticated.
|
||||||
redirect(overview[getLang()])
|
redirect(overview[getLang()])
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { getName } from "@/lib/trpc/memoizedRequests"
|
import { getName } from "@/lib/trpc/memoizedRequests"
|
||||||
|
|
||||||
|
import { auth } from "@/auth"
|
||||||
import ArrowRight from "@/components/Icons/ArrowRight"
|
import ArrowRight from "@/components/Icons/ArrowRight"
|
||||||
import { ScandicFriends } from "@/components/Levels"
|
import { ScandicFriends } from "@/components/Levels"
|
||||||
import LoginButton from "@/components/LoginButton"
|
import LoginButton from "@/components/LoginButton"
|
||||||
@@ -8,6 +9,7 @@ import Link from "@/components/TempDesignSystem/Link"
|
|||||||
import Body from "@/components/TempDesignSystem/Text/Body"
|
import Body from "@/components/TempDesignSystem/Text/Body"
|
||||||
import Title from "@/components/TempDesignSystem/Text/Title"
|
import Title from "@/components/TempDesignSystem/Text/Title"
|
||||||
import { getIntl } from "@/i18n"
|
import { getIntl } from "@/i18n"
|
||||||
|
import { isValidSession } from "@/utils/session"
|
||||||
|
|
||||||
import Contact from "./Contact"
|
import Contact from "./Contact"
|
||||||
import ReadMore from "./ReadMore"
|
import ReadMore from "./ReadMore"
|
||||||
@@ -19,10 +21,10 @@ import type { JoinLoyaltyContactProps } from "@/types/components/sidebar/joinLoy
|
|||||||
export default async function JoinLoyaltyContact({
|
export default async function JoinLoyaltyContact({
|
||||||
block,
|
block,
|
||||||
}: JoinLoyaltyContactProps) {
|
}: JoinLoyaltyContactProps) {
|
||||||
const [intl, user] = await Promise.all([getIntl(), getName()])
|
const [intl, session] = await Promise.all([getIntl(), auth()])
|
||||||
|
|
||||||
// Check if we have user, that means we are logged in.
|
// Check if we valid session, that means we are logged in.
|
||||||
if (user) {
|
if (isValidSession(session)) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,14 @@
|
|||||||
import { Suspense } from "react"
|
import { Suspense } from "react"
|
||||||
|
|
||||||
import { getName } from "@/lib/trpc/memoizedRequests"
|
import { auth } from "@/auth"
|
||||||
|
|
||||||
import MyPagesSidebar from "@/components/MyPages/Sidebar"
|
import MyPagesSidebar from "@/components/MyPages/Sidebar"
|
||||||
|
import { isValidSession } from "@/utils/session"
|
||||||
|
|
||||||
import SidebarNavigationSkeleton from "../MyPages/Sidebar/SidebarNavigationSkeleton"
|
import SidebarNavigationSkeleton from "../MyPages/Sidebar/SidebarNavigationSkeleton"
|
||||||
|
|
||||||
export default async function MyPagesNavigation() {
|
export default async function MyPagesNavigation() {
|
||||||
const user = await getName()
|
const session = await auth()
|
||||||
|
if (!isValidSession(session)) {
|
||||||
// Check if we have user, that means we are logged in andt the My Pages menu can show.
|
|
||||||
if (!user) {
|
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
|
|||||||
22
utils/session.ts
Normal file
22
utils/session.ts
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
import type { Session } from "next-auth"
|
||||||
|
|
||||||
|
export function isValidSession(session: Session | null) {
|
||||||
|
if (!session) {
|
||||||
|
console.log("No session available (user not authenticated).")
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if (session.error) {
|
||||||
|
console.log(`Session error: ${session.error}`)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if (session.token.error) {
|
||||||
|
console.log(`Session token error: ${session.token.error}`)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if (session.token.expires_at && session.token?.expires_at < Date.now()) {
|
||||||
|
console.log(`Session expired: ${session.token.expires_at}`)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user