-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
const User=require('../models/userModel'); | ||
const createError=require('../utils/appError') | ||
const bcrypt=require('bcryptjs'); | ||
const jwt= require('jsonwebtoken'); | ||
|
||
//Register | ||
exports.signup = async(req,res,next)=>{ | ||
try{ | ||
const user = await User.findOne({email:req.body.email}); | ||
if(user) | ||
{ | ||
return next(new createError('User already Exists! ',400)); | ||
} | ||
const hashedPassword =await bcrypt.hash(req.body.password,12); | ||
const newUser =await User.create({ | ||
...req.body, | ||
password:hashedPassword, | ||
}); | ||
const token=jwt.sign({_id:newUser._id},'secretkey123',{ | ||
expiresIn:'900', | ||
}); | ||
res.status(201).json({ | ||
status:'sucess', | ||
token, | ||
message:'User Registered sucessfully', | ||
user:{ | ||
_id:newUser._id, | ||
email:newUser.email | ||
} | ||
}) | ||
}catch(error) | ||
{ | ||
next(error); | ||
} | ||
}; | ||
//Login | ||
exports.login=async(req,res,next)=>{ | ||
try{ | ||
const{email,password}=req.body; | ||
const user=await User.findOne({email}); | ||
if(!user) return next(new createError('User not found',404)); | ||
const isPasswordValid =await bcrypt.compare(password,user.password); | ||
if(!isPasswordValid){ | ||
return next(new createError('Incorrect email or password',404)); | ||
} | ||
const token=jwt.sign({_id:User._id},'secretkey123',{ | ||
expiresIn:'900', | ||
}); | ||
res.status(200).json({ | ||
status:'sucess', | ||
token, | ||
message:'Logged in sucessfully', | ||
user:{ | ||
_id:user._id, | ||
email:user.email | ||
} | ||
}) | ||
}catch(error){ | ||
next(error); | ||
} | ||
}; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
const express=require('express'); | ||
const mongoose = require('mongoose'); | ||
const cors = require('cors'); | ||
const app=express(); | ||
const authRouter=require('./routes/authRoute') | ||
const userRouter = require('./routes/userRoute'); | ||
//Middleware | ||
|
||
app.use(express.json()); | ||
app.use(cors()); | ||
|
||
//Route | ||
app.use('/api/auth',authRouter); | ||
app.use('/api/users',userRouter); | ||
//MongoBD Connection | ||
mongoose.connect('mongodb+srv:https://aalok:[email protected]/AdaptEd?retryWrites=true&w=majority&appName=AdaptEd').then(()=>console.log( 'Connected to MongoDB!')).catch((error)=>console.error('Failed to connect to mongoDB: ', error)); | ||
//Error Handling | ||
app.use((err,req,res,next)=>{ | ||
err.statuCode=err.statuCode||500; | ||
err.status=err.status||'error'; | ||
res.status(err.statuCode).json({ | ||
status:err.status, | ||
message:err.message, | ||
}); | ||
}); | ||
//Server | ||
const PORT =3000; | ||
app.listen(PORT,()=>{ | ||
console.log(`App running on ${PORT}`); | ||
}); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
const mongoose = require('mongoose'); | ||
const Schema = mongoose.Schema; | ||
|
||
const moduleSchema = new Schema({ | ||
thumbnailImage: { type: String, required: true }, | ||
title: { type: String, required: true }, | ||
instructorName: { type: String, required: true }, | ||
duration: { type: String, required: true }, | ||
grade: { type: String, default: '' }, | ||
resourceLink: { type: String, required: true } | ||
}); | ||
|
||
const courseSchema = new Schema({ | ||
thumbnailImage: { type: String, required: true }, | ||
title: { type: String, required: true }, | ||
instructorName: { type: String, required: true }, | ||
duration: { type: String, required: true }, | ||
description: { type: String, required: true }, | ||
modules: [moduleSchema] | ||
}, { timestamps: true }); | ||
|
||
module.exports = mongoose.model('Course', courseSchema); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
const mongoose = require('mongoose'); | ||
const Schema = mongoose.Schema; | ||
|
||
const userSchema = new Schema({ | ||
email: { type: String, required: true, unique: true }, | ||
password: { type: String, required: true }, | ||
profile: { | ||
username: { type: String, default: '' }, | ||
profilePicture: { type: String, default: '' }, | ||
bio: { type: String, default: '' } | ||
}, | ||
enrolledCourses: [ | ||
{ | ||
courseId: { type: Schema.Types.ObjectId, ref: 'Course' }, | ||
grade: { type: String, default: '' }, | ||
quizMarks: { type: Number, default: 0 } | ||
} | ||
] | ||
}, { timestamps: true }); | ||
|
||
module.exports = mongoose.model('User', userSchema); |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.