From 9e5d109838ce1837a24816e16249d6ec58ad3725 Mon Sep 17 00:00:00 2001 From: Daniel Medina Date: Sat, 10 Sep 2022 22:42:31 -0500 Subject: [PATCH] :sparkles: Added base users page --- pages/api/users.ts | 24 +++++++---- pages/user/[id].tsx | 93 ++++++++++++++++++++++++++++++++++++++++++ pages/users/[user].tsx | 29 ------------- 3 files changed, 108 insertions(+), 38 deletions(-) create mode 100644 pages/user/[id].tsx delete mode 100644 pages/users/[user].tsx diff --git a/pages/api/users.ts b/pages/api/users.ts index 618b38e..1588245 100644 --- a/pages/api/users.ts +++ b/pages/api/users.ts @@ -1,13 +1,19 @@ import type { NextApiRequest, NextApiResponse } from "next"; +import { getSession } from "next-auth/react"; +import { MongoClient } from "mongodb"; + +const client = new MongoClient(process.env.MONGODB_URI || ""); export default async (req: NextApiRequest, res: NextApiResponse) => { - try { - const response = await fetch("https://api.medina.dev/v1/usernames"); - const usernames = await response.json(); - res.send(usernames); - } catch (e) { - res.send({ - error: e - }) - } + const session = await getSession({ req }); + if (!session) { + return res.status(404).send({ + message: "Not logged in", + }); + } + + await client.connect(); + let db = await client.db("auth"); + let users = await db.collection("users").find().toArray(); + return res.status(200).send(users); }; diff --git a/pages/user/[id].tsx b/pages/user/[id].tsx new file mode 100644 index 0000000..4cdccb1 --- /dev/null +++ b/pages/user/[id].tsx @@ -0,0 +1,93 @@ +import React, { useEffect } from "react"; +import { useRouter } from "next/router"; +import Head from "next/head"; +import Navbar from "../../components/Navbar"; +import { MongoClient } from "mongodb"; +import { getSession } from "next-auth/react"; +import { GetServerSideProps, GetServerSidePropsContext } from "next"; + +type Props = { + message: string; + user: { + name: string; + email: string; + image: string; + bio: string; + }; +}; + +const User = ({ message, user, error }: Props) => { + console.log(message, user); + const router = useRouter(); + const { id } = router.query; + + return ( + <> + +
+ + {user?.name} | dnrm + + + {!error ? ( +
+
+ +
+

+ {user?.name} +

+

{user.bio || "No bio yet..."}

+
+ ) : ( +

+ user not found +

+ )} +
+ + ); +}; + +export default User; + +export async function getServerSideProps(context: GetServerSidePropsContext) { + const client = new MongoClient(process.env.MONGODB_URI || ""); + const session = await getSession(context); + if (!session) { + return { + props: { + message: "Not logged in", + }, + }; + } + + try { + await client.connect(); + let db = await client.db("auth"); + console.log(context?.params?.id); + let user = await db + .collection("users") + .findOne({ username: context?.params?.id }); + + if (!user) { + return { + props: { + error: true, + }, + }; + } + + return { + props: { + user: JSON.parse(JSON.stringify(user)), + }, + }; + } catch (e) { + return { + props: { + error: true, + }, + }; + } +} diff --git a/pages/users/[user].tsx b/pages/users/[user].tsx deleted file mode 100644 index 71c925d..0000000 --- a/pages/users/[user].tsx +++ /dev/null @@ -1,29 +0,0 @@ -import React, { useEffect } from "react"; -import { useRouter } from "next/router"; -import Head from "next/head"; -import Navbar from "../../components/Navbar"; - -const User = () => { - const router = useRouter(); - const { user } = router.query; - - return ( - <> - -
- - {user} | dnrm - - -

- {user} -

-
- - ); -}; - -export default User;