Skip to content
Snippets Groups Projects
Commit be03ac01 authored by Yusuf Akgül's avatar Yusuf Akgül :hatching_chick:
Browse files

Merge branch 'UserProfile' into 'main'

User profile

See merge request !16
parents 960d1d2b d579b6aa
No related branches found
No related tags found
1 merge request!16User profile
Pipeline #35635 canceled
...@@ -4,7 +4,7 @@ import Link from 'next/link' ...@@ -4,7 +4,7 @@ import Link from 'next/link'
export default function LoginPage() { export default function LoginPage() {
return ( return (
<div className="h-screen w-screen flex justify-center items-center bg-slate-100"> <div className="h-screen w-screen flex justify-center items-center bg-slate-100">
<div className="sm:shadow-xl px-8 pb-8 pt-12 sm:bg-white rounded-xl space-y-12"> <div className="sm:shadow-xl px-8 pb-8 pt-12 sm:bg-black rounded-xl space-y-12">
<h1 className="font-semibold text-2xl">Login</h1> <h1 className="font-semibold text-2xl">Login</h1>
<LoginForm /> <LoginForm />
<p className="text-center"> <p className="text-center">
......
...@@ -4,7 +4,7 @@ import Link from 'next/link' ...@@ -4,7 +4,7 @@ import Link from 'next/link'
export default function SignupPage() { export default function SignupPage() {
return ( return (
<div className="h-screen w-screen flex justify-center items-center bg-slate-100"> <div className="h-screen w-screen flex justify-center items-center bg-slate-100">
<div className="sm:shadow-xl px-8 pb-8 pt-12 sm:bg-white rounded-xl space-y-12"> <div className="sm:shadow-xl px-8 pb-8 pt-12 sm:bg-black rounded-xl space-y-12">
<h1 className="font-semibold text-2xl">Create your Account</h1> <h1 className="font-semibold text-2xl">Create your Account</h1>
<SignupForm /> <SignupForm />
<p className="text-center"> <p className="text-center">
......
'use client'
import { useSession } from "next-auth/react";
export default function User({ params }: { params: { userid: string } }) { export default function User({ params }: { params: { userid: string } }) {
const { data: session } = useSession();
return ( return (
<> <div className="mt-8 px-4">
<h1>User Profile Page WIP</h1> <div className="flex-shrink-0">
<p>Unique Page Params: {params.userid}</p> <title>{`GameUnity User`}</title>
</> <div className="h-10 w-10 rounded-full bg-gray-300"></div> {/* Profile picture */}
</div>
<div className="flex flex-col">
<p className="text-white text-2xl font-semibold">
{session?.user.name}
</p>
<div
className="
flex
flex-row
items-center
gap-2
mt-4
text-neutral-500
">
</div>
</div>
<div className="flex flex-row items-center mt-4 gap-6">
<div className="flex flex-row items-center gap-1">
<p className="text-neutral-500">Following</p>
</div>
<div className="flex flex-row items-center gap-1">
<p className="text-white">{}</p>
<p className="text-neutral-500">Followers</p>
</div>
</div>
</div>
) )
} }
\ No newline at end of file
import { authOptions } from "@/app/api/auth/[...nextauth]/route";
import FollowersList from "@/components/following-users"; import FollowersList from "@/components/following-users";
import { useSession } from "next-auth/react"; import { getServerSession } from "next-auth";
export default function Followers() { export default async function Followers() {
const { data: session } = useSession(); const session = await getServerSession(authOptions);
if (!session) { if (!session) {
return <div>Loading...</div>; return <div>Loading...</div>;
......
...@@ -15,6 +15,7 @@ export default async function ContentLayout({ ...@@ -15,6 +15,7 @@ export default async function ContentLayout({
<aside className="hidden w-[200px] flex-col md:flex"> <aside className="hidden w-[200px] flex-col md:flex">
<div className="sticky top-0"> <div className="sticky top-0">
<DashboardNav items={dashboardConfig.sidebarNav} /> <DashboardNav items={dashboardConfig.sidebarNav} />
<button>Logout</button>
</div> </div>
</aside> </aside>
<main className="flex w-full flex-1 flex-col overflow-hidden"> <main className="flex w-full flex-1 flex-col overflow-hidden">
......
import { NextApiRequest, NextApiResponse } from "next";
import { prisma } from "@/lib/db";
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
if (req.method !== 'GET') {
return res.status(405).end();
}
try {
const { userId } = req.query;
if (!userId || typeof userId !== 'string') {
throw new Error('Invalid ID');
}
const existingUser = await prisma.user.findUnique({
where: {
id : +userId
}
});
return res.status(200).json({ ...existingUser});
} catch (error) {
console.log(error);
return res.status(400).end();
}
};
\ No newline at end of file
import { NextApiRequest, NextApiResponse } from "next";
import { prisma } from "@/lib/db";
export default async function handler(req: NextApiRequest, res: NextApiResponse) {
if (req.method !== 'GET') {
return res.status(405).end();
}
try {
const users = await prisma.user.findMany({
orderBy: {
createdAt: 'desc'
}
});
return res.status(200).json(users);
} catch(error) {
console.log(error);
return res.status(400).end();
}
}
\ No newline at end of file
...@@ -12,12 +12,13 @@ datasource db { ...@@ -12,12 +12,13 @@ datasource db {
model User { model User {
id Int @id @default(autoincrement()) id Int @id @default(autoincrement())
userName String? @unique userName String? @unique
name String? name String? @default("u ${id}")
email String? @unique email String? @unique
password String password String
emailVerified DateTime? emailVerified DateTime?
image String? image String?
createdAt DateTime @default(now())
Post Post[] Post Post[]
Comment Comment[] Comment Comment[]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment