Skip to content

Commit

Permalink
Loginauthentication and routing
Browse files Browse the repository at this point in the history
  • Loading branch information
kaloa2025 committed May 31, 2024
1 parent e81eb10 commit b12cc77
Show file tree
Hide file tree
Showing 6,203 changed files with 348,131 additions and 197 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
61 changes: 61 additions & 0 deletions backend/controllers/authController.js
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);
}
};
30 changes: 30 additions & 0 deletions backend/index.js
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}`);
});
22 changes: 22 additions & 0 deletions backend/models/courseModel.js
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);
21 changes: 21 additions & 0 deletions backend/models/userModel.js
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);
16 changes: 16 additions & 0 deletions backend/node_modules/.bin/cros

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions backend/node_modules/.bin/cros.cmd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

28 changes: 28 additions & 0 deletions backend/node_modules/.bin/cros.ps1

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 16 additions & 0 deletions backend/node_modules/.bin/mime

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions backend/node_modules/.bin/mime.cmd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

28 changes: 28 additions & 0 deletions backend/node_modules/.bin/mime.ps1

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 16 additions & 0 deletions backend/node_modules/.bin/semver

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions backend/node_modules/.bin/semver.cmd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

28 changes: 28 additions & 0 deletions backend/node_modules/.bin/semver.ps1

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 16 additions & 0 deletions backend/node_modules/.bin/uuid

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

17 changes: 17 additions & 0 deletions backend/node_modules/.bin/uuid.cmd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

28 changes: 28 additions & 0 deletions backend/node_modules/.bin/uuid.ps1

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit b12cc77

Please sign in to comment.