Code-report
Code-report
js
import mongoose from "mongoose";
mongoose.set('strictPopulate', false); // Disable strict populate globally
mongoose.connect(process.env.MONGO_URL);
}
// Coder-Channel/mongo/UserModel.js
import mongoose from "mongoose";
import dbConnect from "./dbConnect";
dbConnect();
const userSchema = new mongoose.Schema({ //data model
name:{
type:String,
required:[true , 'Please enter user name'],
},
email:{
type:String,
unique:[true , "This email is already registered!"],
required:[true , "Please enter your email"]
},
password:{
type:String,
required:[true , 'Please enter your password'],
},
gender:{
type:String,
required:[true , "Please enter your gender"],
enum: {
values:[
"male",
"female",
"others"
],
message:"Please select correct gender",
}
},
university:{
type:String,
},
course:{
type:String,
},
verify:{
type:Boolean,
default:false,
},
imgUrl:{
type:String,
default:"/img/profileImg.jpg",
},
linkedIn: {
type:String,
default:"",
},
instagram: {
type:String,
default:"",
},
github: {
type:String,
default:"",
},
createdAt: {
type:Date,
default:Date.now,
}
});
// Coder-Channel/mongo/ChatModel.js
import mongoose from "mongoose";
import dbConnect from './dbConnect'
dbConnect();
const chatSchema = new mongoose.Schema({
senderId:{
type:mongoose.Schema.Types.ObjectId,
required:[true , "sender-id is missing."],
ref:"Users",
},
receiverId:{
type:mongoose.Schema.Types.ObjectId,
required:[true , "sender-id is missing."],
ref:"Users",
},
message:{
type:String,
required:[true , "chat-message is missing."],
},
createdAt: {
type:Date,
default:Date.now,
}
});
// Coder-Channel/mongo/FollowersModel.js
import mongoose from "mongoose";
import dbConnect from "./dbConnect";
dbConnect();
const followerSchema = new mongoose.Schema({
followedById:{
type:mongoose.Schema.Types.ObjectId,
required:[true , 'Please enter follower-id'],
ref:"Users",
},
followedToId:{
type:mongoose.Schema.Types.ObjectId,
required:[true , "Please enter the user-id"],
ref:"Users",
},
});
// Coder-Channel/mongo/BlogModel.js
import mongoose from "mongoose";
import dbConnect from "./dbConnect";
dbConnect();
const blogSchema = new mongoose.Schema({
writerId:{
type:mongoose.Schema.Types.ObjectId,
required:[true , "Writer id is missing"],
ref:"Users",
},
blog:{
type:String,
required:[true , "There is no blog found!"],
},
image:{
type:String,
},
likes: {
type:Number,
default:0,
},
time:{
type:Date,
default:Date.now,
}
})
// Coder-Channel/mongo/CommentModel.js
import mongoose from "mongoose";
import dbConnect from "./dbConnect";
dbConnect();
const commentSchema = new mongoose.Schema({
comment:{
type:String,
required:true,
},
commentToId:{
type:mongoose.Schema.Types.ObjectId,
required:true,
ref:"Blogs",
},
commentById:{
type:mongoose.Schema.Types.ObjectId,
required:true,
ref:"Users",
},
commentedAt: {
type:Date,
default:Date.now,
}
})
// Coder-Channel/src/pages/api/socket.js
import { Server } from "socket.io";
let map = new Map();
let existingUsers = new Set();
// Coder-Channel/src/app/api/users/route.js
import cron from 'node-cron';
import cryptoJS from 'crypto-js'
import Users from "/mongo/UserModel";
import { NextResponse } from "next/server";
import { sendOTP } from '@/utilities/sendOTP';
import { verifyOPT } from '@/utilities/verifyOTP';
import { setJWTUser } from '@/utilities/getJWTUser';
import { sendVerificationEmail } from '@/utilities/sendVerificationMailToUser';
if (!email || !password) {
return NextResponse.json({ message: "bad request! Missing credentials.", success: false });
}
if (!OTP) {
sendOTP({ email });
return NextResponse.json({ message: "OTP is sent to your email", success: true });
}
const otpVerified = verifyOPT({ email, OTP });
if (!otpVerified) {
return NextResponse.json({ message: "wrong OTP, Try again...!", success: false });
}
delete User.password;
setJWTUser(User);
return NextResponse.json({ User, success: true, message: `You credentials are right and you have Logged-in...!` })
} catch (error) {
// console.log(error.message);
return NextResponse.json({ message: "bad request, Try again...!", success: false });
}
}
// Coder-Channel/src/utilities/sendOTP.js
import speakeasy from "speakeasy"
import nodemailer from "nodemailer"
// Coder-Channel/src/utilities/verifyOTP.js
import { totp } from "speakeasy";
// Coder-Channel/src/utilities/getJWTUser.js
import { cookies } from "next/headers";
import { CODER_CHANNEL_TOCKEN, TOCKEN_MAX_AGE } from "./constants";
import { sign, verify } from "jsonwebtoken";