diff --git a/donutshop_ecommerce/src/app/api/models/User.js b/donutshop_ecommerce/src/app/api/models/User.js index 6bf0898..d8f529a 100644 --- a/donutshop_ecommerce/src/app/api/models/User.js +++ b/donutshop_ecommerce/src/app/api/models/User.js @@ -16,30 +16,7 @@ const UserSchema = new Schema({ image:{ type: String, }, - phoneNumber:{ - type: String, - }, - streetAddress:{ - type: String, - }, - city:{ - type: String, - }, - stateProvince:{ - type: String, - }, - zipCode:{ - type: String, - }, - country:{ - type: String, - }, - admin:{ - type: Boolean, - default: false - } - - + }, {timestamps: true}); export const User = models?.User || model('User', UserSchema); \ No newline at end of file diff --git a/donutshop_ecommerce/src/app/api/models/UserInfo.js b/donutshop_ecommerce/src/app/api/models/UserInfo.js new file mode 100644 index 0000000..44fc791 --- /dev/null +++ b/donutshop_ecommerce/src/app/api/models/UserInfo.js @@ -0,0 +1,33 @@ +import { Schema, model, models } from "mongoose"; + + +const UserInfoSchema = new Schema({ + email:{ + type: String, + required: true + }, + phoneNumber:{ + type: String, + }, + streetAddress:{ + type: String, + }, + city:{ + type: String, + }, + stateProvince:{ + type: String, + }, + zipCode:{ + type: String, + }, + country:{ + type: String, + }, + admin:{ + type: Boolean, + default: false + } +}, {timestamps: true}) + +export const UserInfo = models?.UserInfo || model('UserInfo', UserInfoSchema) \ No newline at end of file diff --git a/donutshop_ecommerce/src/app/api/profile/route.js b/donutshop_ecommerce/src/app/api/profile/route.js index 5fc563d..75010ff 100644 --- a/donutshop_ecommerce/src/app/api/profile/route.js +++ b/donutshop_ecommerce/src/app/api/profile/route.js @@ -2,15 +2,20 @@ import mongoose from "mongoose" import { getServerSession } from "next-auth"; import {authOptions} from "../auth/[...nextauth]/route" import { User } from "../models/User"; +import { UserInfo } from "../models/UserInfo" export async function PUT(req){ mongoose.connect(process.env.MONGO_URL) const data = await req.json(); const session = await getServerSession(authOptions) const email = session.user.email - - - await User.updateOne({email}, data); + const {name, image, ...otherUserInfo} = data + + await User.updateOne({email}, {name, image}); + + //update userInfo + await UserInfo.findOneAndUpdate({email}, otherUserInfo, {upsert:true}); + return Response.json(true) } @@ -18,9 +23,11 @@ export async function PUT(req){ export async function GET(){ mongoose.connect(process.env.MONGO_URL) const session = await getServerSession(authOptions) - const email = session.user.email - - return Response.json( - await User.findOne({email}) - ) + const email = session?.user?.email + if(!email){ + return Response.json({}) + } + const user = await User.findOne({email}).lean() + const userInfo = await UserInfo.findOne({email}).lean() + return Response.json({...user, ...userInfo}) } \ No newline at end of file diff --git a/donutshop_ecommerce/src/app/categories/page.js b/donutshop_ecommerce/src/app/categories/page.js index 93154cf..456c7ff 100644 --- a/donutshop_ecommerce/src/app/categories/page.js +++ b/donutshop_ecommerce/src/app/categories/page.js @@ -1,7 +1,20 @@ +"use client" import React from 'react' import UserTab from '../../components/layout/UserTab' +import useProfile from '../../components/UseProfile' const CategoriesPage = () => { + const {loading:profileLoading, data:profileData} = useProfile(); + + if(profileLoading){ + return
Loading...
+ } + + if(!profileData.admin){ + returnPlease login as an admin
+ } + + return (