Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

changes to index.js #208

Open
wants to merge 18 commits into
base: main
Choose a base branch
from
17 changes: 15 additions & 2 deletions final_project/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,22 @@ app.use(express.json());
app.use("/customer",session({secret:"fingerprint_customer",resave: true, saveUninitialized: true}))

app.use("/customer/auth/*", function auth(req,res,next){
//Write the authenication mechanism here
if(req.session.authorization) {
token = req.session.authorization['accessToken'];
jwt.verify(token, "access",(err,user)=>{
if(!err){
req.user = user;
next();
}
else{
return res.status(403).json({message: "User not authenticated"})
}
});
} else {
return res.status(403).json({message: "User not logged in"})
}
});

const PORT =5000;

app.use("/customer", customer_routes);
Expand Down
71 changes: 65 additions & 6 deletions final_project/router/auth_users.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,83 @@ const regd_users = express.Router();

let users = [];

//valid username
const isValid = (username)=>{ //returns boolean
//write code to check is the username is valid
let filtered_users = users.filter((user)=> user.username === user);
if(filtered_users){
return true;
}
return false;
}

//authenticate username and password
const authenticatedUser = (username,password)=>{ //returns boolean
//write code to check if username and password match the one we have in records.
if(isValid(username)){
let filtered_users = users.filter((user)=> (user.username===username)&&(user.password===password));
if(filtered_users){
return true;
}
return false;
}
return false;
}

//register new user
regd_users.post("/register", (req,res) => {
//Write your code here
const username = req.body.username;
const password = req.body.password;
if(username&&password){
const present = users.filter((user)=> user.username === username)
if(present.length===0){
users.push({"username":req.body.username,"password":req.body.password});
return res.status(201).json({message:"New user created successfully"})
}
else{
return res.status(400).json({message:"User already exists"})
}
}
else if(!username && !password){
return res.status(400).json({message:"Check username and Password!"})
}
else if(!username || !password){
return res.status(400).json({message:"Check username and password"})
}
});

//only registered users can login
regd_users.post("/login", (req,res) => {
//Write your code here
return res.status(300).json({message: "Yet to be implemented"});
let user = req.body.username;
let pass = req.body.password;
if(!authenticatedUser(user,pass)){
return res.status(403).json({message:"User not authenticated"})
}
let accessToken = jwt.sign({
data: user
},'access',{expiresIn:60*60})
req.session.authorization = {
accessToken
}
res.send("User logged in Successfully")
});


// Add a book review
regd_users.put("/auth/review/:isbn", (req, res) => {
//Write your code here
return res.status(300).json({message: "Yet to be implemented"});
let userd = req.session.username;
let ISBN = req.params.isbn;
let details = req.query.review;
let rev = {user:userd,review:details}
books[ISBN].reviews = rev;
return res.status(201).json({message:"New review added successfully!"})
});

//delete a review
regd_users.delete("/auth/review/:isbn", (req, res) => {
let ISBN = req.params.isbn;
books[ISBN].reviews = {}
return res.status(200).json({messsage:"Review has been deleted!"})
//return res.status(300).json({message: "Yet to be implemented"});
});

module.exports.authenticated = regd_users;
Expand Down
94 changes: 82 additions & 12 deletions final_project/router/general.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,108 @@ const public_users = express.Router();


public_users.post("/register", (req,res) => {
//Write your code here
return res.status(300).json({message: "Yet to be implemented"});
const username = req.body.username;
const password = req.body.password;
if(username&&password){
const present = users.filter((user)=> user.username === username)
if(present.length===0){
users.push({"username":req.body.username,"password":req.body.password});
return res.status(201).json({message:"New user created"})
}
else{
return res.status(400).json({message:"User already exists"})
}
}
else if(!username && !password){
return res.status(400).json({message:"Bad request"})
}
else if(!username || !password){
return res.status(400).json({message:"Check username and password"})
}



//return res.status(300).json({message: "Yet to be implemented"});
});

// Get the book list available in the shop
public_users.get('/',function (req, res) {
//Write your code here
return res.status(300).json({message: "Yet to be implemented"});
let myPromise1= new Promise((resolve,reject) =>{
setTimeout(() =>{
resolve(books)
},0 )})
myPromise1.then((successMessage)=>{
res.send(JSON.stringify(books,null,4))
})
//res.send(JSON.stringify(books,null,4));
//return res.status(300).json({message: "Yet to be implemented"});
});

// Get book details based on ISBN
public_users.get('/isbn/:isbn',function (req, res) {
//Write your code here
return res.status(300).json({message: "Yet to be implemented"});
let myPromise1= new Promise((resolve,reject) =>{
setTimeout(() =>{
resolve(books)
},0 )})
myPromise1.then((successMessage)=>{
const isbn = req.params.isbn
res.send(books[isbn])
})


//const isbn = req.params.isbn;
//res.send(books[isbn])
//return res.status(300).json({message: "ISBN"});
});

// Get book details based on author
public_users.get('/author/:author',function (req, res) {
//Write your code here
return res.status(300).json({message: "Yet to be implemented"});
let myPromise1= new Promise((resolve,reject) =>{
setTimeout(() =>{
resolve(books)
},0 )})
myPromise1.then((successMessage)=>{
const authors = req.params.author
let filtered_author = Object.values(books).filter(books => books.author === authors);
res.send(filtered_author);
})



//const authors = req.params.author;
//let filtered_author = Object.values(books).filter(books => books.author === authors);
//res.send(filtered_author);
//return res.status(300).json({message: "Author"});
});

// Get all books based on title
public_users.get('/title/:title',function (req, res) {
//Write your code here
return res.status(300).json({message: "Yet to be implemented"});
public_users.get('/title/:title',function (req, res) {
let myPromise1= new Promise((resolve,reject) =>{
setTimeout(() =>{
resolve(books)
},0 )})
myPromise1.then((successMessage)=>{
const titles = req.params.title;
let filtered_title = Object.values(books).filter(books => books.title === titles);
res.send(filtered_title);
})



//const titles = req.params.title;
//let filtered_title = Object.values(books).filter(books => books.title === titles);
//res.send(filtered_title);
//return res.status(300).json({message: "Yet to be implemented"});
});

// Get book review
public_users.get('/review/:isbn',function (req, res) {
//Write your code here
return res.status(300).json({message: "Yet to be implemented"});
const isbn = req.params.isbn;

res.send(books[isbn].reviews)

//return res.status(300).json({message: "Review via isbn"});
});

module.exports.general = public_users;