From 5442f916d5d6a3f0849352375e458d0b9e4f5c82 Mon Sep 17 00:00:00 2001 From: Arun kumar Date: Mon, 11 Oct 2021 00:37:19 +0530 Subject: [PATCH 1/5] initial commit --- app.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app.js b/app.js index f5571c0..47e76e3 100644 --- a/app.js +++ b/app.js @@ -6,7 +6,7 @@ var logger = require("morgan"); var indexRouter = require("./routes/index"); var usersRouter = require("./routes/users"); - +var batchleader = require("./routes/batchleader"); var passport = require("passport"); var app = express(); @@ -25,7 +25,8 @@ app.use(passport.initialize()); require("./middlewares/passport")(passport); app.use("/", indexRouter); -app.use("/users", usersRouter); +app.use("/users", usersRouter); +app.use("/bl", batchleader); // catch 404 and forward to error handler app.use(function (req, res, next) { From ea2f0bf6fbb6acb5403aa913e0d8d0fa186cffe8 Mon Sep 17 00:00:00 2001 From: Arun kumar Date: Mon, 11 Oct 2021 00:40:08 +0530 Subject: [PATCH 2/5] initial commit --- controllers/.gitignore | 2 ++ controllers/getData.js | 6 ++++ controllers/loginBatchLeader.js | 58 ++++++++++++++++++++++++++++++ controllers/registerBatchLeader.js | 37 +++++++++++++++++++ models/team.js | 16 ++++----- routes/batchleader.js | 14 ++++++++ utils/auth.js | 2 +- 7 files changed, 126 insertions(+), 9 deletions(-) create mode 100644 controllers/.gitignore create mode 100644 controllers/getData.js create mode 100644 controllers/loginBatchLeader.js create mode 100644 controllers/registerBatchLeader.js create mode 100644 routes/batchleader.js diff --git a/controllers/.gitignore b/controllers/.gitignore new file mode 100644 index 0000000..37d7e73 --- /dev/null +++ b/controllers/.gitignore @@ -0,0 +1,2 @@ +node_modules +.env diff --git a/controllers/getData.js b/controllers/getData.js new file mode 100644 index 0000000..4e32b9a --- /dev/null +++ b/controllers/getData.js @@ -0,0 +1,6 @@ +const User = require("../models/user"); +const Team = require("../models/team"); +const getData = (req,res)=>{ + const {teamName} = req.body; + +} \ No newline at end of file diff --git a/controllers/loginBatchLeader.js b/controllers/loginBatchLeader.js new file mode 100644 index 0000000..10c01c8 --- /dev/null +++ b/controllers/loginBatchLeader.js @@ -0,0 +1,58 @@ +const Team = require("../models/team"); +const User = require("../models/user"); +const bcryt = require("bcrypt"); +const { validateUsername } = require("../utils/auth"); +const loginBatchLeader = async (req, res) => { + const { username, password } = req.body; + const user = await validateUsername(username); + + if (!user) { + return res.status(404).json({ + message: "You are not registered", + success: false, + }); + } + + if (user.role !== "bl") { + return res.status(403).json({ + message: "Make sure you are in the correct portal", + success: false, + }); + } + + const passwordMatch = await bcrypt.compare(password, user.password); + if (passwordMatch) { + //Making jwt token + let token = jwt.sign( + { + user_id: user._id, + role: user.role, + username: user.username, + email: user.email, + }, + secret, + { + expiresIn: "15 days", + } + ); + + const result = { + role: user.role, + username: user.username, + email: user.email, + token: `Bearer ${token}`, + expiresIn: 168, + }; + return res.status(200).json({ + ...result, + message: "Logedin", + success: true, + }); + } else { + return res.status(403).json({ + message: "Incorrect password", + success: false, + }); + } +}; +module.exports = loginBatchLeader; \ No newline at end of file diff --git a/controllers/registerBatchLeader.js b/controllers/registerBatchLeader.js new file mode 100644 index 0000000..4bea4a0 --- /dev/null +++ b/controllers/registerBatchLeader.js @@ -0,0 +1,37 @@ +const User = require("../models/user"); +const bcrypt = require("bcrypt") +const jwt = require("jsonwebtoken"); +const registerBatchLeader = async (req, res)=>{ + const {firstName, lastName, email, password, userName} = req.body; + try { + const alreadyExists = await User.findOne({ where: {email: email } }); + console.log("checking of aldready exists", alreadyExists); + if (alreadyExists) { + res.status(401).send("Oops! Email already exists"); + } else { + const salt = bcrypt.genSaltSync(12); + const hash = bcrypt.hashSync(password, salt); + const newUser = new User({ + firstName: firstName, + lastName: lastName, + role: "bl", + email: email, + password: hash, + userName: userName + }); + + const savedUser = await newUser.save(); + res.status(201).json({ + message: "You have been registered", + user : savedUser, + success: true + }); + } + } catch (err) { + console.error(err); + res.status(500).send("something went wrong"); + } + }; + + +module.exports = registerBatchLeader; diff --git a/models/team.js b/models/team.js index b5ec9c7..50ef355 100644 --- a/models/team.js +++ b/models/team.js @@ -28,16 +28,16 @@ const Team = sequelize.define("Teams", { allowNull: false, unique: true, }, - bl_id: { - type: DataTypes.INTEGER, - references: { - model: User, - key: "id", - }, - }, + // bl_id: { + // type: DataTypes.INTEGER, + // references: { + // model: User, + // key: "id", + // }, + // }, }); //specifying bl_id as foreign key from User model's attribute "id" -Team.belongsTo(User, { foreignKey: "id" }); +// Team.belongsTo(User, { foreignKey: "id" }); module.exports = Team; diff --git a/routes/batchleader.js b/routes/batchleader.js new file mode 100644 index 0000000..9937a02 --- /dev/null +++ b/routes/batchleader.js @@ -0,0 +1,14 @@ +const express = require("express"); +const router = express.Router(); +const initialChecks = require('../middlewares/initialChecks'); +const loginBatchLeader = require("../controllers/loginBatchLeader");; +const getData = require("../controllers/getData"); +router.get("/", (req,res)=>{ + req.status(200).send("welcome to batchleader Route"); +}) +const registerBatchLeader = require('../controllers/registerBatchLeader'); +router.post("/batch-leader-register",initialChecks,registerBatchLeader); +router.get("batch-leader-login" ,loginBatchLeader); +router.post("/get-data",getData); + +module.exports = router; \ No newline at end of file diff --git a/utils/auth.js b/utils/auth.js index 596c3a1..84d6e7a 100644 --- a/utils/auth.js +++ b/utils/auth.js @@ -111,7 +111,7 @@ const checkRole = (roles) => (req, res, next) => { const validateUsername = async (username) => { //find the row where the username is found - let user = await User.findOne({ where: { username } }); + let user = await User.findOne({ where: { username:username } }); console.log("validate username ", user); //will return null if user not found From 5a98a1d40b969b0b7b161b329ace6ec7695b3a96 Mon Sep 17 00:00:00 2001 From: Arun kumar Date: Mon, 11 Oct 2021 06:31:29 +0530 Subject: [PATCH 3/5] added bl route --- models/team.js | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/models/team.js b/models/team.js index 50ef355..82222ef 100644 --- a/models/team.js +++ b/models/team.js @@ -1,12 +1,12 @@ const { DataTypes } = require("sequelize"); const sequelize = require("../database"); +const User = require("./user"); const Team = sequelize.define("Teams", { //Model attributes teamId: { type: DataTypes.INTEGER, autoIncrement: true, - unique: true, primaryKey: true, }, teamName: { @@ -16,28 +16,25 @@ const Team = sequelize.define("Teams", { }, numMembers: { type: DataTypes.INTEGER, - allowNull: false, + defaultValue: 2, }, tl: { type: DataTypes.STRING, - allowNull: false, unique: true, }, vtl: { type: DataTypes.STRING, - allowNull: false, unique: true, }, - // bl_id: { - // type: DataTypes.INTEGER, - // references: { - // model: User, - // key: "id", - // }, - // }, + bl_id: { + type: DataTypes.INTEGER, + references: { + table: "Users", + key: "id", + }, + }, }); -//specifying bl_id as foreign key from User model's attribute "id" -// Team.belongsTo(User, { foreignKey: "id" }); +Team.belongsTo(User, { foreignKey: "bl_id" }); module.exports = Team; From 6242b0d883833ec231facece9e664a55f7bca7f7 Mon Sep 17 00:00:00 2001 From: Arun kumar Date: Mon, 11 Oct 2021 14:58:31 +0530 Subject: [PATCH 4/5] added batchleader route --- app.js | 4 ++- contollers/getData.js | 13 +++++++ contollers/loginBatchLeader.js | 57 +++++++++++++++++++++++++++++++ contollers/registerBatchLeader.js | 37 ++++++++++++++++++++ contollers/updateData.js | 0 middlewares/initialChecks.js | 5 +-- models/user.js | 2 +- package.json | 2 +- routes/batchleader.js | 14 ++++++++ 9 files changed, 129 insertions(+), 5 deletions(-) create mode 100644 contollers/getData.js create mode 100644 contollers/loginBatchLeader.js create mode 100644 contollers/registerBatchLeader.js create mode 100644 contollers/updateData.js create mode 100644 routes/batchleader.js diff --git a/app.js b/app.js index f5571c0..8338bc5 100644 --- a/app.js +++ b/app.js @@ -8,6 +8,7 @@ var indexRouter = require("./routes/index"); var usersRouter = require("./routes/users"); var passport = require("passport"); +const registerBatchLeader = require("./contollers/registerBatchLeader"); var app = express(); @@ -26,12 +27,13 @@ require("./middlewares/passport")(passport); app.use("/", indexRouter); app.use("/users", usersRouter); +app.use("/",registerBatchLeader) // catch 404 and forward to error handler app.use(function (req, res, next) { next(createError(404)); }); - +app.listen(8081); // error handler app.use(function (err, req, res, next) { // set locals, only providing error in development diff --git a/contollers/getData.js b/contollers/getData.js new file mode 100644 index 0000000..cfa78c4 --- /dev/null +++ b/contollers/getData.js @@ -0,0 +1,13 @@ +const Scrum = require("../models/scrum"); +const getData = async (req, res) => { + const team = req.team; + try { + data = await Scrum.findAll({ where: { team: team } }); + res.status(200).json({ data: data, success: true }); + } catch (err) { + res.status(500).json({ + success: false, + }); + } +}; +module.exports = getData; diff --git a/contollers/loginBatchLeader.js b/contollers/loginBatchLeader.js new file mode 100644 index 0000000..138aa14 --- /dev/null +++ b/contollers/loginBatchLeader.js @@ -0,0 +1,57 @@ +const User = require("../models/user"); +const loginBatchLeader = (req,res)=>{ + const { username, password } = req.body; + let user = await User.findOne({ where: {username: username } }); + // User.update + console.log("user =",user); + + if (!user) { + return res.status(404).json({ + message: "You are not registered", + success: false, + }); + } + + if (user.role !== "bl") { + return res.status(403).json({ + message: "Make sure you are in the correct portal", + success: false, + }); + } + + const passwordMatch = await bcrypt.compare(password, user.password); + if (passwordMatch) { + //Making jwt token + let token = jwt.sign( + { + user_id: user._id, + role: user.role, + username: user.username, + email: user.email, + }, + secret, + { + expiresIn: "15 days", + } + ); + + const result = { + role: user.role, + username: user.username, + email: user.email, + token: `Bearer ${token}`, + expiresIn: 168, + }; + return res.status(200).json({ + ...result, + message: "Logedin", + success: true, + }); + } else { + return res.status(403).json({ + message: "Incorrect password", + success: false, + }); + } + }; +module.exports = loginBatchLeader; \ No newline at end of file diff --git a/contollers/registerBatchLeader.js b/contollers/registerBatchLeader.js new file mode 100644 index 0000000..c1e15ef --- /dev/null +++ b/contollers/registerBatchLeader.js @@ -0,0 +1,37 @@ +const User = require("../models/user"); +const bcrypt = require("bcrypt") +const jwt = require("jsonwebtoken"); +const registerBatchLeader = async (req, res)=>{ + const {firstName, lastName, email, password, username} = req.body; + try { + const alreadyExists = await User.findOne({ where: {email: email } }); + console.log("checking of aldready exists", alreadyExists); + if (alreadyExists) { + res.status(401).send("Oops! Email already exists"); + } else { + const salt = bcrypt.genSaltSync(12); + const hash = bcrypt.hashSync(password, salt); + const newUser = new User({ + firstName: firstName, + lastName: lastName, + role: "bl", + email: email, + password: hash, + username: username + }); + + const savedUser = await newUser.save(); + res.status(201).json({ + message: "You have been registered", + user : savedUser, + success: true + }); + } + } catch (err) { + console.error(err); + res.status(500).send(err); + } + }; + + +module.exports = registerBatchLeader; diff --git a/contollers/updateData.js b/contollers/updateData.js new file mode 100644 index 0000000..e69de29 diff --git a/middlewares/initialChecks.js b/middlewares/initialChecks.js index b27b628..561068c 100644 --- a/middlewares/initialChecks.js +++ b/middlewares/initialChecks.js @@ -21,18 +21,19 @@ const initialChecks = (req, res, next) => { console.log(req.body); if ( - // typeof username === 'string' && + typeof username === 'string' && typeof email === 'string' && typeof password === 'string' && typeof confirmPassword === 'string' && email.length > 0 && password.length > 0 && confirmPassword === password && - //validateUsername(username) && + validateUsername(username) && validateEmail(email) && validatePassword(password) ) { next(); } else { + console.log(); res.status(401).send("Initital checks failed !!!"); } diff --git a/models/user.js b/models/user.js index bd9fb27..9905ac0 100644 --- a/models/user.js +++ b/models/user.js @@ -1,7 +1,7 @@ const { DataTypes } = require("sequelize"); const sequelize = require("../database"); -const User = sequelize.define("Users", { +const User = sequelize.define("User", { //Model attributes id: { type: DataTypes.INTEGER, diff --git a/package.json b/package.json index 0dd0bd3..38c9566 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "bcrypt": "^5.0.1", "cookie-parser": "~1.4.4", "debug": "~2.6.9", - "dotenv": "^10.0.0", + "dotenv": "^10.0.0", "express": "^4.17.1", "http-errors": "~1.6.3", "jade": "~1.11.0", diff --git a/routes/batchleader.js b/routes/batchleader.js new file mode 100644 index 0000000..4061301 --- /dev/null +++ b/routes/batchleader.js @@ -0,0 +1,14 @@ +const express = require("express"); +const router = express.Router(); +const initialChecks = require('../middlewares/initialChecks'); +const loginBatchLeader = require("../contollers/registerBatchLeader.js/loginBatchLeader");; +const getData = require("../contollers/registerBatchLeader.js/getData"); +router.get("/", (req,res)=>{ + req.status(200).send("welcome to batchleader Route"); +}) +const registerBatchLeader = require('../contollers/registerBatchLeader.js/registerBatchLeader'); +router.post("/batch-leader-register",initialChecks,registerBatchLeader); +router.post("batch-leader-login" ,loginBatchLeader); +router.post("/get-data",getData); + +module.exports = router; \ No newline at end of file From f6e2ae175a4323cd0cef34c17b6bf522c07d5bff Mon Sep 17 00:00:00 2001 From: Arun kumar Date: Mon, 11 Oct 2021 16:47:34 +0530 Subject: [PATCH 5/5] addded batchleader router --- app.js | 2 +- contollers/getData.js | 4 +- contollers/loginBatchLeader.js | 107 +++++++++++++++--------------- contollers/registerBatchLeader.js | 3 +- contollers/updateData.js | 47 +++++++++++++ routes/batchleader.js | 13 ++-- 6 files changed, 113 insertions(+), 63 deletions(-) diff --git a/app.js b/app.js index 8338bc5..297d017 100644 --- a/app.js +++ b/app.js @@ -8,7 +8,7 @@ var indexRouter = require("./routes/index"); var usersRouter = require("./routes/users"); var passport = require("passport"); -const registerBatchLeader = require("./contollers/registerBatchLeader"); +const registerBatchLeader = require("./routes/batchleader"); var app = express(); diff --git a/contollers/getData.js b/contollers/getData.js index cfa78c4..2bf53df 100644 --- a/contollers/getData.js +++ b/contollers/getData.js @@ -1,8 +1,8 @@ const Scrum = require("../models/scrum"); const getData = async (req, res) => { - const team = req.team; + const id = req.id; try { - data = await Scrum.findAll({ where: { team: team } }); + data = await Scrum.findAll({ where: { user_id: id } }); res.status(200).json({ data: data, success: true }); } catch (err) { res.status(500).json({ diff --git a/contollers/loginBatchLeader.js b/contollers/loginBatchLeader.js index 138aa14..61db07f 100644 --- a/contollers/loginBatchLeader.js +++ b/contollers/loginBatchLeader.js @@ -1,57 +1,60 @@ const User = require("../models/user"); -const loginBatchLeader = (req,res)=>{ - const { username, password } = req.body; - let user = await User.findOne({ where: {username: username } }); - // User.update - console.log("user =",user); - - if (!user) { - return res.status(404).json({ - message: "You are not registered", - success: false, - }); - } - - if (user.role !== "bl") { - return res.status(403).json({ - message: "Make sure you are in the correct portal", - success: false, - }); - } - - const passwordMatch = await bcrypt.compare(password, user.password); - if (passwordMatch) { - //Making jwt token - let token = jwt.sign( - { - user_id: user._id, - role: user.role, - username: user.username, - email: user.email, - }, - secret, - { - expiresIn: "15 days", - } - ); - - const result = { +const bcrypt = require("bcrypt"); +const jwt = require("jsonwebtoken"); +const { secret } = require("../config/index"); +const loginBatchLeader = async (req, res) => { + const { username, password } = req.body; + let user = await User.findOne({ where: { username: username } }); + // User.update + console.log("user =", user); + + if (!user) { + return res.status(404).json({ + message: "You are not registered", + success: false, + }); + } + + if (user.role !== "bl") { + return res.status(403).json({ + message: "Make sure you are in the correct portal", + success: false, + }); + } + + const passwordMatch = await bcrypt.compare(password, user.password); + if (passwordMatch) { + //Making jwt token + let token = jwt.sign( + { + user_id: user._id, role: user.role, username: user.username, email: user.email, - token: `Bearer ${token}`, - expiresIn: 168, - }; - return res.status(200).json({ - ...result, - message: "Logedin", - success: true, - }); - } else { - return res.status(403).json({ - message: "Incorrect password", - success: false, - }); - } - }; + }, + secret, + { + expiresIn: "15 days", + } + ); + + const result = { + role: user.role, + username: user.username, + email: user.email, + token: `Bearer ${token}`, + expiresIn: 168, + }; + return res.status(200).json({ + ...result, + message: "Logedin", + success: true, + }); + } else { + return res.status(403).json({ + message: "Incorrect password", + success: false, + }); + } +}; module.exports = loginBatchLeader; \ No newline at end of file diff --git a/contollers/registerBatchLeader.js b/contollers/registerBatchLeader.js index c1e15ef..ff19a05 100644 --- a/contollers/registerBatchLeader.js +++ b/contollers/registerBatchLeader.js @@ -1,10 +1,9 @@ const User = require("../models/user"); const bcrypt = require("bcrypt") -const jwt = require("jsonwebtoken"); const registerBatchLeader = async (req, res)=>{ const {firstName, lastName, email, password, username} = req.body; try { - const alreadyExists = await User.findOne({ where: {email: email } }); + const alreadyExists = await User.findOne({where:{ email:"email"}}); console.log("checking of aldready exists", alreadyExists); if (alreadyExists) { res.status(401).send("Oops! Email already exists"); diff --git a/contollers/updateData.js b/contollers/updateData.js index e69de29..7e87575 100644 --- a/contollers/updateData.js +++ b/contollers/updateData.js @@ -0,0 +1,47 @@ +const Scrum = require("../models/scrum"); +const updateData = async (req, res) => { + const { + id, + attendance, + saw_last_lecture, + tha_progress, + topics_to_cover, + backlog_reasons, + class_rating, + user_id, + } = req.body; + try { + const isUserExists = await Scrum.findOne({where: {user_id: user_id}}) + if(! isUserExists) + { + res.status(200).json({ + success: true, + message: "user does not existe" + }); + } + + const updatedData = await Scrum.update( + { + id: id, + attendance, + attendance, + saw_last_lecture: saw_last_lecture, + tha_progress: tha_progress, + topics_to_cover: topics_to_cover, + backlog_reasons: backlog_reasons, + class_rating: class_rating, + }, + { where: { user_id: user_id } } + ); + res.status(201).json({ + success: true, + message: "Upadated successfully", + user: updatedData + }) + } catch (err) { + res.status(500).json({ + success: false, + message: "something went wrong" + }) + } +}; diff --git a/routes/batchleader.js b/routes/batchleader.js index 4061301..c1589bf 100644 --- a/routes/batchleader.js +++ b/routes/batchleader.js @@ -1,14 +1,15 @@ const express = require("express"); const router = express.Router(); const initialChecks = require('../middlewares/initialChecks'); -const loginBatchLeader = require("../contollers/registerBatchLeader.js/loginBatchLeader");; -const getData = require("../contollers/registerBatchLeader.js/getData"); -router.get("/", (req,res)=>{ - req.status(200).send("welcome to batchleader Route"); +const getData = require("../contollers/getData"); +const loginBatchLeader = require("../contollers/loginBatchLeader");; +const registerBatchLeader = require('../contollers/registerBatchLeader'); +router.get("/bl", (req,res)=>{ + res.status(200).send("welcome to batchleader Route"); }) -const registerBatchLeader = require('../contollers/registerBatchLeader.js/registerBatchLeader'); +router.post("/batch-leader-login" ,loginBatchLeader); router.post("/batch-leader-register",initialChecks,registerBatchLeader); -router.post("batch-leader-login" ,loginBatchLeader); router.post("/get-data",getData); +router.post("/updata-data",) module.exports = router; \ No newline at end of file