37 lines
924 B
TypeScript
37 lines
924 B
TypeScript
|
"use client";
|
||
|
|
||
|
import Link from "next/link";
|
||
|
import { useUserContext } from "./layout";
|
||
|
import { User } from "./lib/auth/user.service";
|
||
|
|
||
|
export default function Home() {
|
||
|
const user = useUserContext();
|
||
|
const message = user.isAuthenticated
|
||
|
? `Hi ${user.name}, you are granted with ${rolesStr(user)}.`
|
||
|
: "You are not authenticated.";
|
||
|
|
||
|
function rolesStr(user: User) {
|
||
|
if (!user?.roles?.length) {
|
||
|
return "[]";
|
||
|
}
|
||
|
return `["${user.roles.join('", "')}"]`;
|
||
|
}
|
||
|
|
||
|
return (
|
||
|
<main className="min-h-screen">
|
||
|
<div className="flex">
|
||
|
<span className="ml-2"></span>
|
||
|
<button>
|
||
|
<Link href="/about">About</Link>
|
||
|
</button>
|
||
|
<span className="m-auto"></span>
|
||
|
<h1>Home</h1>
|
||
|
<span className="m-auto"></span>
|
||
|
</div>
|
||
|
<div className="flex flex-col items-center justify-between p-24">
|
||
|
<p>{message}</p>
|
||
|
</div>
|
||
|
</main>
|
||
|
);
|
||
|
}
|