From 969ba92770727fb9fd9260d8ad40b6ddb4bd8dfd Mon Sep 17 00:00:00 2001 From: Akshar Kommajosyula Date: Tue, 18 May 2021 17:04:13 +0530 Subject: [PATCH 01/44] added login/sign up related packages --- backend/package-lock.json | 82 +++++++++++++++++++++++++++++++++++++++ backend/package.json | 11 ++++-- 2 files changed, 90 insertions(+), 3 deletions(-) diff --git a/backend/package-lock.json b/backend/package-lock.json index 333e823..0071187 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -118,6 +118,11 @@ "safe-buffer": "5.1.2" } }, + "bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms=" + }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -349,6 +354,11 @@ "xdg-basedir": "^4.0.0" } }, + "connect-flash": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/connect-flash/-/connect-flash-0.1.1.tgz", + "integrity": "sha1-2GMPJtlaf4UfmVax6MxnMvO2qjA=" + }, "content-disposition": { "version": "0.5.3", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", @@ -556,6 +566,38 @@ "vary": "~1.1.2" } }, + "express-ejs-layouts": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/express-ejs-layouts/-/express-ejs-layouts-2.5.0.tgz", + "integrity": "sha512-27Kza3FR8UqvQsq1ewaxC2IwpgrQttYDEFN5s8D74Fv1VPdzsXFWsiKhPMlNauG+DrgMAmh7FhQl5hKHffd+wQ==" + }, + "express-session": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.17.1.tgz", + "integrity": "sha512-UbHwgqjxQZJiWRTMyhvWGvjBQduGCSBDhhZXYenziMFjxst5rMV+aJZ6hKPHZnPyHGsrqRICxtX8jtEbm/z36Q==", + "requires": { + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-headers": "~1.0.2", + "parseurl": "~1.3.3", + "safe-buffer": "5.2.0", + "uid-safe": "~2.1.5" + }, + "dependencies": { + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" + }, + "safe-buffer": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", + "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" + } + } + }, "filelist": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", @@ -1125,6 +1167,28 @@ "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, + "passport": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/passport/-/passport-0.4.1.tgz", + "integrity": "sha512-IxXgZZs8d7uFSt3eqNjM9NQ3g3uQCW5avD8mRNoXV99Yig50vjuaez6dQK2qC0kVWPRTujxY0dWgGfT09adjYg==", + "requires": { + "passport-strategy": "1.x.x", + "pause": "0.0.1" + } + }, + "passport-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", + "integrity": "sha1-H+YyaMkudWBmJkN+O5BmYsFbpu4=", + "requires": { + "passport-strategy": "1.x.x" + } + }, + "passport-strategy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", + "integrity": "sha1-tVOaqPwiWj0a0XlHbd8ja0QPUuQ=" + }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -1135,6 +1199,11 @@ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, + "pause": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz", + "integrity": "sha1-HUCLP9t2kjuVQ9lvtMnf1TXZy10=" + }, "picomatch": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", @@ -1186,6 +1255,11 @@ "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" }, + "random-bytes": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz", + "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs=" + }, "range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -1505,6 +1579,14 @@ "is-typedarray": "^1.0.0" } }, + "uid-safe": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", + "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", + "requires": { + "random-bytes": "~1.0.0" + } + }, "undefsafe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.3.tgz", diff --git a/backend/package.json b/backend/package.json index bb6ff75..0855b76 100644 --- a/backend/package.json +++ b/backend/package.json @@ -4,19 +4,24 @@ "description": "Backend for Elysian Website", "main": "server.js", "scripts": { - "start": "nodemon server.js", - "dev": "cross-env NODE_ENV=development nodemon server" + "start": "nodemon server.js" }, "author": "Akshar", "license": "ISC", "dependencies": { + "bcryptjs": "^2.4.3", + "connect-flash": "^0.1.1", "cors": "^2.8.5", "cross-env": "^7.0.3", "dotenv": "^9.0.2", "ejs": "^3.1.6", "express": "^4.17.1", + "express-ejs-layouts": "^2.5.0", + "express-session": "^1.17.1", "mongoose": "^5.12.9", "morgan": "^1.10.0", - "nodemon": "^2.0.7" + "nodemon": "^2.0.7", + "passport": "^0.4.1", + "passport-local": "^1.0.0" } } From 5e6430cbb4912ac78c260b7cf1e78ad5b17e6030 Mon Sep 17 00:00:00 2001 From: Akshar Kommajosyula Date: Tue, 18 May 2021 17:05:28 +0530 Subject: [PATCH 02/44] added login/signup features --- backend/app.js | 113 +++++++++++++++++++++++++++++++++++++++++----- backend/server.js | 36 +++++++++++---- 2 files changed, 128 insertions(+), 21 deletions(-) diff --git a/backend/app.js b/backend/app.js index 078ed6b..2f65a8d 100644 --- a/backend/app.js +++ b/backend/app.js @@ -1,5 +1,9 @@ var mongoose = require('mongoose'); -var prodSchema = require('./models/product'); +const bcrypt = require('bcryptjs'); +var prodSchema = require('./models/Product'); +const User = require('./models/User'); +const passport = require('passport'); +const { ensureAuthenticated } = require('./config/auth'); module.exports = function(app){ app.get('/products', async (req,res) => { @@ -10,6 +14,99 @@ module.exports = function(app){ app.get('/', (req,res) => { res.render('index'); }); + + + app.post('/register', (req,res) => { + //console.log(req.body); + const { firstname, lastname, email, contact, password, password2 } = req.body; + let errors = []; + // console.log({ firstname, lastname, email, contact, password, password2 }); + + //Check if any fields are empty + if(!firstname || !lastname || !email || !contact || !password || !password2){ + errors.push({ msg: 'Please fill in all fields.' }); + } + + //Check if passwords match + if(password !== password2){ + errors.push({ msg: 'Passwords do no match.' }) + } + + //Check password length + if(password.length < 6){ + errors.push({ msg: 'Password should be atleast 6 characters.'}) + } + + if(errors.length > 0){ + // console.log(errors); + res.render('signup', { + errors, + firstname, + lastname, + email, + contact, + password, + password2, + }); + } + else{ + User.findOne({email: email}).then(user => { + if(user){ + errors.push({msg: 'E-mail already exists.'}) + res.render('signup', { + errors, + firstname, + lastname, + email, + contact, + password, + password2, + }); + } + else{ + const newUser = new User({ + firstName: firstname, + lastName: lastname, + email, + password, + contact, + }); + + bcrypt.genSalt(10, (err,salt) => + bcrypt.hash(newUser.password, salt, (err, hash) => { + if(err) throw err; + + newUser.password = hash; + newUser.save() + .then((user) => { + req.flash('success_msg', 'Sign up successful! You can now login.') + res.redirect('/login'); + }) + .catch(err => console.log(err)); + })) + } + }) + } + + }); + app.post('/auth', (req,res,next) => { + passport.authenticate('local', { + successRedirect: '/', + failureRedirect: '/login', + failureFlash: true, + })(req,res,next); + }); + app.get('/logout', (req,res) => { + req.logout(); + req.flash('success_msg', 'You have logged out.'); + re.redirect('login'); + }) + + + + app.get('/logout', (req,res) => { + res.render('logout'); + }); app.get('/contactus', (req,res) => { res.render('contactus'); }); @@ -19,55 +116,47 @@ module.exports = function(app){ app.get('/signup', (req,res) => { res.render('signup'); }); - app.get('/cart', (req,res) => { + app.get('/cart', ensureAuthenticated, (req,res) => { res.render('cart'); }); - app.get('/wishlist', (req,res) => { + app.get('/wishlist', ensureAuthenticated, (req,res) => { res.render('wishlist'); }); app.get('/beaded', async (req,res) => { var prods = await prodSchema.find({category: 'Beaded'}); - //console.log(prods); res.render('categories/beaded', {'prods': prods}); }); app.get('/bracelets', async (req,res) => { var prods = await prodSchema.find({category: 'Bracelets'}); - //console.log(prods); res.render('categories/bracelets', {'prods': prods}); }); app.get('/earcuffs', async (req,res) => { var prods = await prodSchema.find({category: 'Earcuffs'}); - //console.log(prods); res.render('categories/ear_cuffs', {'prods': prods}); }); app.get('/necklaces', async (req,res) => { var prods = await prodSchema.find({category: 'Necklaces'}); - //console.log(prods); res.render('categories/necklaces', {'prods': prods}); }); app.get('/pearls', async (req,res) => { var prods = await prodSchema.find({category: 'Pearls'}); - //console.log(prods); res.render('categories/pearls', {'prods': prods}); }); app.get('/polymerclay', async (req,res) => { var prods = await prodSchema.find({category: 'Polymer Clay'}); - //console.log(prods); res.render('categories/polymer_clay', {'prods': prods}); }); app.get('/tassels', async (req,res) => { var prods = await prodSchema.find({category: 'Tassels'}); - //console.log(prods); res.render('categories/tassels', {'prods': prods}); }); app.get('/threads', async (req,res) => { var prods = await prodSchema.find({category: 'Threads'}); - //console.log(prods); res.render('categories/threads', {'prods': prods}); }); app.get('/wiredearrings', async (req,res) => { var prods = await prodSchema.find({category: 'Wired Earrings'}); - //console.log(prods); res.render('categories/wired_earrings', {'prods': prods}); }); + }; \ No newline at end of file diff --git a/backend/server.js b/backend/server.js index 7ce1dcb..dc5e521 100644 --- a/backend/server.js +++ b/backend/server.js @@ -1,24 +1,42 @@ const express = require('express') const connectDB = require('./config/db') -const cors = require('cors') -const morgan = require('morgan') +const passport = require('passport') +const flash = require('connect-flash') +const session = require('express-session') require('dotenv').config() -var productsController = require('./app') + const app = express() -connectDB() +require('./config/passport')(passport) -if(process.env.NODE_ENV === 'development'){ - app.use(morgan('dev')) -} +var controller = require('./app') + +connectDB() -app.use(cors()) app.set('view engine', 'ejs') app.use(express.static('public')) app.use(express.urlencoded({extended: true})) app.use(express.json()) -productsController(app) +app.use(session({ + secret: 'secret', + resave: true, + saveUninitialized: true, + })) + +app.use(passport.initialize()); +app.use(passport.session()); + +app.use(flash()) + +app.use((req, res, next) => { + res.locals.success_msg = req.flash('success_msg') + res.locals.error_msg = req.flash('error_msg') + res.locals.error = req.flash('error') + next() +}); + +controller(app) const PORT = process.env.PORT || 3000 From ebe1c50b1cacc7ca98cff77e47f664e1a57264be Mon Sep 17 00:00:00 2001 From: Akshar Kommajosyula Date: Tue, 18 May 2021 17:14:53 +0530 Subject: [PATCH 03/44] minor edits --- backend/models/Cart.js | 53 +++++++++++++++++ backend/models/add_items.js | 112 +++++++++++++++++++++++++++++++++--- backend/models/user.js | 60 +++++++++++-------- 3 files changed, 192 insertions(+), 33 deletions(-) create mode 100644 backend/models/Cart.js diff --git a/backend/models/Cart.js b/backend/models/Cart.js new file mode 100644 index 0000000..83c108b --- /dev/null +++ b/backend/models/Cart.js @@ -0,0 +1,53 @@ +var mongoose = require('mongoose') +var Schema = mongoose.Schema; + +const cartSchema = Schema( + { + userID: + { + type: String, + required: true, + }, + items: + { + type: Array, + required: true, + }, + amount: + { + type: Number, + // required: true, + }, + }, +) + +const itemSchema = new Schema( + { + sku: { + type: String, + // required: true, + }, + quantity: { + type: Number, + required: true, + }, + price: { + type: Number, + required: true, + }, + discount: { + type: Number, + required: true, + }, + preTax: { + type: Number, + required: true, + }, + postTax: { + type: Number, + required: true, + }, + } +) + +module.exports = mongoose.model('cart',cartSchema) \ No newline at end of file diff --git a/backend/models/add_items.js b/backend/models/add_items.js index 460947f..12101e8 100644 --- a/backend/models/add_items.js +++ b/backend/models/add_items.js @@ -15,14 +15,110 @@ db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function() { console.log("Connection Successful!"); - - // a document instance - var product = new Product({name: 'Aster', price: 150, stock: 0, description: 'Pearl hoops.', category: ['Pearls'], size: '4cm diameter' , imgPath: 'images/15.jpg'}); - - // save model to database - product.save(function (err, prod) { - if (err) return console.error(err); - console.log(prod.name + " saved to collection."); + + var list = [ + { + name: 'Ornella', + price: 140, + stock: 0, + description: 'Coin-Pearl C-shapped hoops.', + category: ['Pearls', 'Necklaces'], + imgPath: 'images/3.jpg' + }, + { + name: 'Magnolia', + price: 250, + stock: 0, + description: 'Coin pendent-curved pearl neclace (separate).', + category: ['Pearls', 'Necklaces'], + imgPath: 'images/4.jpg' + }, + { + name: 'Ajax', + price: 100, + stock: 0, + description: 'Pearl Pendant.', + category: ['Pearls', 'Necklaces'], + imgPath: 'images/54.jpg' + }, + { + name: 'Ajax-Ares Combo', + price: 200, + stock: 0, + description: 'Pearl Pendant Combo.', + category: ['Pearls', 'Necklaces'], + imgPath: 'images/55.jpg' + }, + { + name: 'Ares', + price: 120, + stock: 0, + description: 'Pearl Pendant.', + category: ['Pearls', 'Necklaces'], + imgPath: 'images/56.jpg' + }, + { + name: 'Veronica', + price: 250, + stock: 0, + description: 'Coin pendant-toggle hook pearl chain.', + category: ['Pearls', 'Necklaces'], + size: 'customizable', + imgPath: 'images/64.jpg' + }, + { + name: 'Alister', + price: 180, + stock: 0, + description: 'Coin pendant gold plated and pearl chain .', + category: ['Pearls', 'Necklaces'], + size: 'customizable', + imgPath: 'images/65.jpg' + }, + { + name: 'Cyrus', + price: 180, + stock: 0, + description: 'Coin pendant pearl chain.', + category: ['Pearls', 'Necklaces'], + size: 'customizable', + imgPath: 'images/66.jpg' + }, + { + name: 'Rose', + price: 250, + stock: 0, + description: 'Coin pendant and pearl chain (seperate).', + category: ['Pearls', 'Necklaces'], + size: 'customizable', + imgPath: 'images/67.jpg' + }, + { + name: 'Grace', + price: 150, + stock: 0, + description: 'Coin-Pearl pendant chain (combined).', + category: ['Pearls', 'Necklaces'], + size: 'customizable', + imgPath: 'images/69.jpg' + }, + ]; + + list.forEach(function(item) { + var product = new Product({ + name: item.name, + price: item.price, + stock: item.stock, + description: item.description, + category: item.category, + imgPath: item.imgPath, + }); + + // save model to database + product.save(function (err, prod) { + if (err) return console.error(err); + console.log(prod.name + " saved to collection."); + }); }); }); \ No newline at end of file diff --git a/backend/models/user.js b/backend/models/user.js index d624d16..9ff0a28 100644 --- a/backend/models/user.js +++ b/backend/models/user.js @@ -1,74 +1,84 @@ var mongoose = require('mongoose') var Schema = mongoose.Schema; -const userSchema = new Schema( +const addressSchema = new Schema( { - _id: + city: { type: String, required: true, }, - firstName: + state: { type: String, - required:true, + required: true, }, - lastName: + country: { type: String, required: true, }, - hashPass: + addLine1: { type: String, - // required: true, + required: true, }, - billingAddress: + addLine2: { - type: [addressSchema], + type: String, required: true, }, - shippingAddress: + pinCode: { - type: [addressSchema], - // required: true, + type: Number, + required: true, }, - }, + } ) -const addressSchema = new Schema( +const userSchema = new Schema( { - city: + firstName: { type: String, - required: true, + required:true, }, - state: + lastName: { type: String, required: true, }, - country: + email: { type: String, required: true, }, - addLine1: + password: { type: String, required: true, }, - addLine2: + contact: { - type: String, + type: Number, required: true, }, - pinCode: + date: { - type: Number, - required: true, + type: Date, + default: Date.now }, - } + billingAddress: + { + type: [addressSchema], + // required: true, + }, + shippingAddress: + { + type: [addressSchema], + // required: true, + }, + }, ) module.exports = mongoose.model('users',userSchema) \ No newline at end of file From 744da0200c877cd06bf4c0bf0c3961562b7c5e66 Mon Sep 17 00:00:00 2001 From: Akshar Kommajosyula Date: Tue, 18 May 2021 17:16:23 +0530 Subject: [PATCH 04/44] added template --- backend/views/partials/header.js | 0 backend/views/partials/messages.ejs | 29 +++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 backend/views/partials/header.js create mode 100644 backend/views/partials/messages.ejs diff --git a/backend/views/partials/header.js b/backend/views/partials/header.js new file mode 100644 index 0000000..e69de29 diff --git a/backend/views/partials/messages.ejs b/backend/views/partials/messages.ejs new file mode 100644 index 0000000..dccbc24 --- /dev/null +++ b/backend/views/partials/messages.ejs @@ -0,0 +1,29 @@ +<% if(typeof errors != 'undefined') { %> + <% errors.forEach(function(error) { %> + + <% }); %> +<% } %> + +<% if(success_msg != '') { %> + +<% } %> + +<% if(error_msg != '') { %> + +<% } %> + +<% if(error != '') { %> + +<% } %> \ No newline at end of file From 325bbaf669652ad3aa072089f20604ac2fcf1793 Mon Sep 17 00:00:00 2001 From: Akshar Kommajosyula Date: Tue, 18 May 2021 17:16:53 +0530 Subject: [PATCH 05/44] minor edits --- backend/views/cart.ejs | 6 +- backend/views/categories/beaded.ejs | 4 +- backend/views/categories/bracelets.ejs | 4 +- backend/views/categories/ear_cuffs.ejs | 4 +- backend/views/categories/necklaces.ejs | 4 +- backend/views/categories/pearls.ejs | 4 +- backend/views/categories/polymer_clay.ejs | 8 +-- backend/views/categories/tassels.ejs | 4 +- backend/views/categories/threads.ejs | 4 +- backend/views/categories/wired_earrings.ejs | 4 +- backend/views/contactus.ejs | 4 +- backend/views/dashboard.ejs | 3 + backend/views/index.ejs | 4 +- backend/views/login.ejs | 23 ++++++-- backend/views/products.ejs | 8 ++- backend/views/signup.ejs | 64 ++++++++++++++++++--- backend/views/wishlist.ejs | 4 +- 17 files changed, 123 insertions(+), 33 deletions(-) create mode 100644 backend/views/dashboard.ejs diff --git a/backend/views/cart.ejs b/backend/views/cart.ejs index 5f784a0..3fe30ca 100644 --- a/backend/views/cart.ejs +++ b/backend/views/cart.ejs @@ -67,8 +67,10 @@
- logo - + + logo + +
diff --git a/backend/views/categories/beaded.ejs b/backend/views/categories/beaded.ejs index ff0d442..1f62ddb 100644 --- a/backend/views/categories/beaded.ejs +++ b/backend/views/categories/beaded.ejs @@ -68,7 +68,9 @@
- logo + + logo +
diff --git a/backend/views/categories/bracelets.ejs b/backend/views/categories/bracelets.ejs index 0d9883e..bec6b75 100644 --- a/backend/views/categories/bracelets.ejs +++ b/backend/views/categories/bracelets.ejs @@ -68,7 +68,9 @@
- logo + + logo +
diff --git a/backend/views/categories/ear_cuffs.ejs b/backend/views/categories/ear_cuffs.ejs index 28e7ebf..9570bc8 100644 --- a/backend/views/categories/ear_cuffs.ejs +++ b/backend/views/categories/ear_cuffs.ejs @@ -67,7 +67,9 @@
- logo + + logo +
diff --git a/backend/views/categories/necklaces.ejs b/backend/views/categories/necklaces.ejs index b559655..f27e4f7 100644 --- a/backend/views/categories/necklaces.ejs +++ b/backend/views/categories/necklaces.ejs @@ -67,7 +67,9 @@
- logo + + logo +
diff --git a/backend/views/categories/pearls.ejs b/backend/views/categories/pearls.ejs index a9633c6..f3584ad 100644 --- a/backend/views/categories/pearls.ejs +++ b/backend/views/categories/pearls.ejs @@ -67,7 +67,9 @@
- logo + + logo +
diff --git a/backend/views/categories/polymer_clay.ejs b/backend/views/categories/polymer_clay.ejs index 7f7fe06..1c8e25b 100644 --- a/backend/views/categories/polymer_clay.ejs +++ b/backend/views/categories/polymer_clay.ejs @@ -67,7 +67,9 @@
- logo + + logo + -
<% prods.forEach(function(prod){%> @@ -103,8 +104,7 @@ <% }); %>
- - +

diff --git a/backend/views/categories/tassels.ejs b/backend/views/categories/tassels.ejs index 96bde62..7a89ba2 100644 --- a/backend/views/categories/tassels.ejs +++ b/backend/views/categories/tassels.ejs @@ -67,7 +67,9 @@

- logo + + logo +
diff --git a/backend/views/categories/threads.ejs b/backend/views/categories/threads.ejs index 65901dc..8843a81 100644 --- a/backend/views/categories/threads.ejs +++ b/backend/views/categories/threads.ejs @@ -67,7 +67,9 @@
- logo + + logo +
diff --git a/backend/views/categories/wired_earrings.ejs b/backend/views/categories/wired_earrings.ejs index 73bb409..b1e384e 100644 --- a/backend/views/categories/wired_earrings.ejs +++ b/backend/views/categories/wired_earrings.ejs @@ -68,7 +68,9 @@
- logo + + logo +
diff --git a/backend/views/contactus.ejs b/backend/views/contactus.ejs index 74de89b..8ed5e9f 100644 --- a/backend/views/contactus.ejs +++ b/backend/views/contactus.ejs @@ -67,7 +67,9 @@
- logo + + logo +
diff --git a/backend/views/dashboard.ejs b/backend/views/dashboard.ejs new file mode 100644 index 0000000..1379b60 --- /dev/null +++ b/backend/views/dashboard.ejs @@ -0,0 +1,3 @@ +

Dashboard

+

Welcome <% user.name %>

+
Logout \ No newline at end of file diff --git a/backend/views/index.ejs b/backend/views/index.ejs index 10c2050..787c02e 100644 --- a/backend/views/index.ejs +++ b/backend/views/index.ejs @@ -69,7 +69,9 @@
- logo + + logo +
diff --git a/backend/views/login.ejs b/backend/views/login.ejs index 97b2e4f..b276be9 100644 --- a/backend/views/login.ejs +++ b/backend/views/login.ejs @@ -67,7 +67,9 @@
- logo + + logo + -
+ + <%- include ('partials/messages.ejs') %> +
- +
- +

diff --git a/backend/views/signup.ejs b/backend/views/signup.ejs index fd02306..6994e4e 100644 --- a/backend/views/signup.ejs +++ b/backend/views/signup.ejs @@ -67,7 +67,9 @@
- logo + + logo + - + <%- include ('partials/messages.ejs') %> +
- +
- +
- +
- +
- +
- +
+


@@ -131,7 +177,7 @@

- Copyrights under Elysian, All Rights Reserved + Copyrights under Elysian, All Rights Reserved.

+ + + + + + + + + + + + + +
+ +
+
+

+ Copyrights under Elysian, All Rights Reserved. +

+
+ + + From 9404d86668c8b3d552628e96ba9547090ebc25ef Mon Sep 17 00:00:00 2001 From: Akshar Kommajosyula Date: Mon, 24 May 2021 14:06:18 +0530 Subject: [PATCH 13/44] added layout templates --- backend/views/categories/beaded.ejs | 132 ++----------------- backend/views/categories/bracelets.ejs | 131 ++----------------- backend/views/categories/ear_cuffs.ejs | 130 ++----------------- backend/views/categories/necklaces.ejs | 130 ++----------------- backend/views/categories/pearls.ejs | 132 ++----------------- backend/views/categories/polymer_clay.ejs | 133 ++------------------ backend/views/categories/tassels.ejs | 133 ++------------------ backend/views/categories/threads.ejs | 132 ++----------------- backend/views/categories/wired_earrings.ejs | 133 ++------------------ 9 files changed, 67 insertions(+), 1119 deletions(-) diff --git a/backend/views/categories/beaded.ejs b/backend/views/categories/beaded.ejs index 1f62ddb..6047f33 100644 --- a/backend/views/categories/beaded.ejs +++ b/backend/views/categories/beaded.ejs @@ -1,128 +1,10 @@ - - - Elysian - - - - - - - - - - - - - - - - - - - - -
-
- <% prods.forEach(function(prod){%> -
-
- image -
-

<%=prod.name%>

-

Rs. <%=prod.price%>

- -
-
-
- <% }); %> -
-
- -
-
-

- Copyrights under Elysian, All Rights Reserved. -

-
- - + <%- include('../layouts/head') %> + + <%- include('../layouts/header') %> + <%- include('../layouts/items') %> + <%- include('../layouts/footer') %> + <%- include('../layouts/responsive') %> + - diff --git a/backend/views/categories/bracelets.ejs b/backend/views/categories/bracelets.ejs index bec6b75..6047f33 100644 --- a/backend/views/categories/bracelets.ejs +++ b/backend/views/categories/bracelets.ejs @@ -1,127 +1,10 @@ - - - Elysian - - - - - - - - - - - - - - - - - - - - -
-
- <% prods.forEach(function(prod){%> -
-
- image -
-

<%=prod.name%>

-

Rs. <%=prod.price%>

- -
-
-
- <% }); %> -
-
- -
-
-

- Copyrights under Elysian, All Rights Reserved. -

-
- - + <%- include('../layouts/head') %> + + <%- include('../layouts/header') %> + <%- include('../layouts/items') %> + <%- include('../layouts/footer') %> + <%- include('../layouts/responsive') %> + diff --git a/backend/views/categories/ear_cuffs.ejs b/backend/views/categories/ear_cuffs.ejs index 9570bc8..6047f33 100644 --- a/backend/views/categories/ear_cuffs.ejs +++ b/backend/views/categories/ear_cuffs.ejs @@ -1,126 +1,10 @@ - - Elysian - - - - - - - - - - - - - - - - - - - - -
-
- <% prods.forEach(function(prod){%> -
-
- image -
-

<%=prod.name%>

-

Rs. <%=prod.price%>

- -
-
-
- <% }); %> -
-
- -
-
-

- Copyrights under Elysian, All Rights Reserved. -

-
- - + <%- include('../layouts/head') %> + + <%- include('../layouts/header') %> + <%- include('../layouts/items') %> + <%- include('../layouts/footer') %> + <%- include('../layouts/responsive') %> + diff --git a/backend/views/categories/necklaces.ejs b/backend/views/categories/necklaces.ejs index f27e4f7..6047f33 100644 --- a/backend/views/categories/necklaces.ejs +++ b/backend/views/categories/necklaces.ejs @@ -1,126 +1,10 @@ - - Elysian - - - - - - - - - - - - - - - - - - - - -
-
- <% prods.forEach(function(prod){%> -
-
- image -
-

<%=prod.name%>

-

Rs. <%=prod.price%>

- -
-
-
- <% }); %> -
-
- -
-
-

- Copyrights under Elysian, All Rights Reserved. -

-
- - + <%- include('../layouts/head') %> + + <%- include('../layouts/header') %> + <%- include('../layouts/items') %> + <%- include('../layouts/footer') %> + <%- include('../layouts/responsive') %> + diff --git a/backend/views/categories/pearls.ejs b/backend/views/categories/pearls.ejs index f3584ad..6047f33 100644 --- a/backend/views/categories/pearls.ejs +++ b/backend/views/categories/pearls.ejs @@ -1,128 +1,10 @@ - - Elysian - - - - - - - - - - - - - - - - - - - - -
-
- <% prods.forEach(function(prod){%> -
-
- image -
-

<%=prod.name%>

-

Rs. <%=prod.price%>

- -
-
-
- <% }); %> -
-
- - -
-
-

- Copyrights under Elysian, All Rights Reserved. -

-
- - + <%- include('../layouts/head') %> + + <%- include('../layouts/header') %> + <%- include('../layouts/items') %> + <%- include('../layouts/footer') %> + <%- include('../layouts/responsive') %> + - diff --git a/backend/views/categories/polymer_clay.ejs b/backend/views/categories/polymer_clay.ejs index 1c8e25b..f5d9d4b 100644 --- a/backend/views/categories/polymer_clay.ejs +++ b/backend/views/categories/polymer_clay.ejs @@ -1,127 +1,10 @@ - - Elysian - - - - - - - - - - - - - - - - - - - -
-
- <% prods.forEach(function(prod){%> -
-
- image -
-

<%=prod.name%>

-

Rs. <%=prod.price%>

- -
-
-
- <% }); %> -
-
- -
-
-

- Copyrights under Elysian, All Rights Reserved. -

-
- - - - - + <%- include('../layouts/head') %> + + <%- include('../layouts/header') %> + <%- include('../layouts/items') %> + <%- include('../layouts/footer') %> + <%- include('../layouts/responsive') %> + + \ No newline at end of file diff --git a/backend/views/categories/tassels.ejs b/backend/views/categories/tassels.ejs index 7a89ba2..f5d9d4b 100644 --- a/backend/views/categories/tassels.ejs +++ b/backend/views/categories/tassels.ejs @@ -1,127 +1,10 @@ - - Elysian - - - - - - - - - - - - - - - - - - - - -
-
- <% prods.forEach(function(prod){%> -
-
- image -
-

<%=prod.name%>

-

Rs. <%=prod.price%>

- -
-
-
- <% }); %> -
-
- -
-
-

- Copyrights under Elysian, All Rights Reserved. -

-
- - - - + <%- include('../layouts/head') %> + + <%- include('../layouts/header') %> + <%- include('../layouts/items') %> + <%- include('../layouts/footer') %> + <%- include('../layouts/responsive') %> + + \ No newline at end of file diff --git a/backend/views/categories/threads.ejs b/backend/views/categories/threads.ejs index 8843a81..f5d9d4b 100644 --- a/backend/views/categories/threads.ejs +++ b/backend/views/categories/threads.ejs @@ -1,126 +1,10 @@ - - Elysian - - - - - - - - - - - - - - - - - - - - -
-
- <% prods.forEach(function(prod){%> -
-
- image -
-

<%=prod.name%>

-

Rs. <%=prod.price%>

- -
-
-
- <% }); %> -
-
- -
-
-

- Copyrights under Elysian, All Rights Reserved. -

-
- - - + <%- include('../layouts/head') %> + + <%- include('../layouts/header') %> + <%- include('../layouts/items') %> + <%- include('../layouts/footer') %> + <%- include('../layouts/responsive') %> + + \ No newline at end of file diff --git a/backend/views/categories/wired_earrings.ejs b/backend/views/categories/wired_earrings.ejs index b1e384e..f5d9d4b 100644 --- a/backend/views/categories/wired_earrings.ejs +++ b/backend/views/categories/wired_earrings.ejs @@ -1,127 +1,10 @@ - - - Elysian - - - - - - - - - - - - - - - - - - - - -
-
- <% prods.forEach(function(prod){%> -
-
- image -
-

<%=prod.name%>

-

Rs. <%=prod.price%>

- -
-
-
- <% }); %> -
-
- -
-
-

- Copyrights under Elysian, All Rights Reserved. -

-
- - - + <%- include('../layouts/head') %> + + <%- include('../layouts/header') %> + <%- include('../layouts/items') %> + <%- include('../layouts/footer') %> + <%- include('../layouts/responsive') %> + + \ No newline at end of file From 6f0491fd24f7e6194ffbc8f2e772a79d6e367e49 Mon Sep 17 00:00:00 2001 From: Akshar Kommajosyula Date: Mon, 24 May 2021 14:06:59 +0530 Subject: [PATCH 14/44] created page layout templates --- backend/views/layouts/footer.ejs | 6 +++ backend/views/layouts/head.ejs | 59 ++++++++++++++++++++++++++++ backend/views/layouts/header.ejs | 37 +++++++++++++++++ backend/views/layouts/items.ejs | 21 ++++++++++ backend/views/layouts/responsive.ejs | 10 +++++ 5 files changed, 133 insertions(+) create mode 100644 backend/views/layouts/footer.ejs create mode 100644 backend/views/layouts/head.ejs create mode 100644 backend/views/layouts/header.ejs create mode 100644 backend/views/layouts/items.ejs create mode 100644 backend/views/layouts/responsive.ejs diff --git a/backend/views/layouts/footer.ejs b/backend/views/layouts/footer.ejs new file mode 100644 index 0000000..e021d27 --- /dev/null +++ b/backend/views/layouts/footer.ejs @@ -0,0 +1,6 @@ +
+
+

+ Copyrights under Elysian, All Rights Reserved. +

+
\ No newline at end of file diff --git a/backend/views/layouts/head.ejs b/backend/views/layouts/head.ejs new file mode 100644 index 0000000..9dd1b26 --- /dev/null +++ b/backend/views/layouts/head.ejs @@ -0,0 +1,59 @@ + + Elysian + + + + + + + + + + + + + \ No newline at end of file diff --git a/backend/views/layouts/header.ejs b/backend/views/layouts/header.ejs new file mode 100644 index 0000000..53e6dcf --- /dev/null +++ b/backend/views/layouts/header.ejs @@ -0,0 +1,37 @@ + + \ No newline at end of file diff --git a/backend/views/layouts/items.ejs b/backend/views/layouts/items.ejs new file mode 100644 index 0000000..5fa79d1 --- /dev/null +++ b/backend/views/layouts/items.ejs @@ -0,0 +1,21 @@ +
+
+ <% if(prods.length == 0){ %> +

+ Sorry, all products in this category are currently out of stock. They will be available soon! +

+ <% } %> + <% prods.forEach(function(prod){%> +
+
+ image +
+

<%=prod.name%>

+

₹<%=prod.price%>

+ Add to cart +
+
+
+ <% }); %> +
+
\ No newline at end of file diff --git a/backend/views/layouts/responsive.ejs b/backend/views/layouts/responsive.ejs new file mode 100644 index 0000000..64a7cd9 --- /dev/null +++ b/backend/views/layouts/responsive.ejs @@ -0,0 +1,10 @@ + \ No newline at end of file From ef8edb61d1dbe0c247db806d01ec38e387312b31 Mon Sep 17 00:00:00 2001 From: Akshar Kommajosyula Date: Mon, 24 May 2021 14:09:50 +0530 Subject: [PATCH 15/44] created user profile page --- backend/views/my_profile.ejs | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 backend/views/my_profile.ejs diff --git a/backend/views/my_profile.ejs b/backend/views/my_profile.ejs new file mode 100644 index 0000000..6d919f5 --- /dev/null +++ b/backend/views/my_profile.ejs @@ -0,0 +1,12 @@ + + + <%- include('layouts/head') %> + + <%- include('layouts/header') %> + +

<%= user.firstName %>'s Profile %>

+ + <%- include('layouts/footer') %> + <%- include('layouts/responsive') %> + + From c078e21f4816cac230bf638a13e13df469d4279c Mon Sep 17 00:00:00 2001 From: Akshar Kommajosyula Date: Mon, 24 May 2021 14:11:36 +0530 Subject: [PATCH 16/44] made cart page dynamic and added updation functionalities --- backend/views/cart.ejs | 208 ++++++++++++++--------------------------- 1 file changed, 69 insertions(+), 139 deletions(-) diff --git a/backend/views/cart.ejs b/backend/views/cart.ejs index 3fe30ca..8f8198a 100644 --- a/backend/views/cart.ejs +++ b/backend/views/cart.ejs @@ -1,151 +1,81 @@ - - - Elysian - - - - - - - - - - - - - - + <%- include('layouts/head') %> - - - - - + <%- include('layouts/header') %> +s

Cart

- -
- - - - - - - - - - - - - - - -

Item

Price

Quantity

Total

Product

Rs.0.00

1

Rs.0.00

-
-
-
-
- - - + <% if(products && session.cart.totalQty){ %> +
+ + + + + + + + + + + <% products.forEach(function(prod){ %> + + + + + + + + + <% }) %> + +

PREVIEW

ITEM

PRICE

QUANTITY

TOTAL

+ + +

image

<%= prod.item.name %>

₹<%= prod.item.price %>

+ + + <%= prod.qty %> + + +

₹<%= prod.price %>

+ + +

+
+ <% }else{ %> +

+ Your cart is empty. Add items to the cart to view it here. +

+ <% } %> + <% if(products && session.cart.totalQty){ %> +
+
+
+
+ +
+
-
-
-
-
-

SUBTOTAL Rs.0.00

-

Shipping, taxes, and discount codes calculated at checkout.

-

- Continue Shopping +
+
+
+

Subtotal: ₹<%= totalPrice %>

+

Shipping, taxes, and discount codes calculated at checkout.

+ Check Out + +
-
+ <% } %> -
-
-

- Copyrights under Elysian, All Rights Reserved -

-
- + <%- include('layouts/footer') %> + <%- include('layouts/responsive') %> From 7ea112c5f46ada199594fff6c6bbc7d3d625048f Mon Sep 17 00:00:00 2001 From: Akshar Kommajosyula Date: Mon, 24 May 2021 14:12:25 +0530 Subject: [PATCH 17/44] added layout templates --- backend/views/contactus.ejs | 108 +------------------------- backend/views/dashboard.ejs | 3 - backend/views/index.ejs | 129 ++++--------------------------- backend/views/login.ejs | 109 ++------------------------ backend/views/partials/header.js | 0 backend/views/products.ejs | 125 ++---------------------------- backend/views/signup.ejs | 109 ++------------------------ backend/views/wishlist.ejs | 117 +++------------------------- 8 files changed, 42 insertions(+), 658 deletions(-) delete mode 100644 backend/views/dashboard.ejs delete mode 100644 backend/views/partials/header.js diff --git a/backend/views/contactus.ejs b/backend/views/contactus.ejs index 8ed5e9f..6b5c695 100644 --- a/backend/views/contactus.ejs +++ b/backend/views/contactus.ejs @@ -1,94 +1,8 @@ - - Elysian - - - - - - - - - - - - - - + <%- include('layouts/head') %> - - - - - + <%- include('layouts/header') %>

Contact Us


@@ -116,21 +30,7 @@
-
-
-

- Copyrights under Elysian, All Rights Reserved -

-
- + <%- include('layouts/footer') %> + <%- include('layouts/responsive') %> diff --git a/backend/views/dashboard.ejs b/backend/views/dashboard.ejs deleted file mode 100644 index 1379b60..0000000 --- a/backend/views/dashboard.ejs +++ /dev/null @@ -1,3 +0,0 @@ -

Dashboard

-

Welcome <% user.name %>

-Logout \ No newline at end of file diff --git a/backend/views/index.ejs b/backend/views/index.ejs index 787c02e..841fcf3 100644 --- a/backend/views/index.ejs +++ b/backend/views/index.ejs @@ -1,96 +1,9 @@ - - Elysian - - - - - - - - - - - - - - + <%- include('layouts/head') %> - - - + <%- include('layouts/header') %> -