-
-
-
-
-
-
-
-
-
-
-
-
-
- 🔔 | <%= 0%>
-
-
- 🛒 | <%= 0%>
-
-
-
-
-
-
-
-
+<%- include("partials/header") %>
diff --git a/functions/views/css/style.css b/functions/views/css/style.css
index c8c7c7e..c3c4dcd 100644
--- a/functions/views/css/style.css
+++ b/functions/views/css/style.css
@@ -511,6 +511,19 @@ footer a {
font-size: 20px;
padding-top: 38px;
}
+
+.product-page-info input {
+ margin-top: 20px;
+ height: 40px;
+ width: 500px;
+ font-size: 15px;
+ padding-left: 10px;
+ margin-bottom: -10px;
+ font-family: osl;
+ border-radius: 0;
+ border: 0.5px solid grey;
+}
+
.product-page-description {
margin-top: 10px;
}
@@ -563,11 +576,19 @@ footer a {
}
.purchase-message {
- color: #00df90;
- text-align: center;
- font-size: 25px;
- font-family: osl;
- padding-bottom: 10px;
+ color: #00df90;
+ text-align: center;
+ font-size: 25px;
+ font-family: osl;
+ padding-bottom: 10px;
+}
+
+.error-message {
+ color: #df0000;
+ text-align: center;
+ font-size: 25px;
+ font-family: osl;
+ padding-bottom: 10px;
}
.product-mgmt-buttons {
@@ -576,7 +597,7 @@ footer a {
.product-mgmt-buttons button {
margin-top: 38px;
height: 40px;
- width: 100px;
+ width: 150px;
display: block;
font-size: 19px;
font-family: osl;
diff --git a/functions/views/home.ejs b/functions/views/home.ejs
index f83cdbb..597f271 100644
--- a/functions/views/home.ejs
+++ b/functions/views/home.ejs
@@ -1,65 +1,8 @@
-
+<%- include("partials/header") %>
-
-
-
-
-
GG Prototype
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 🔔 | <%= 0%>
-
-
- 🛒 | <%= 0%>
-
-
-
-
Product added successfully
-
-
-

@@ -150,26 +93,4 @@
-
-
-
-
-
-
\ No newline at end of file
+<%- include("partials/footer") %>
\ No newline at end of file
diff --git a/functions/views/js/fdb.js b/functions/views/js/fdb.js
index 16141d6..525fed5 100644
--- a/functions/views/js/fdb.js
+++ b/functions/views/js/fdb.js
@@ -88,8 +88,6 @@ function productUpdateEventHandler() {
const item_id_element = document.getElementById("productID")
const item_id = item_id_element.getAttribute("product_id")
- const sessUid = firebase.auth().currentUser.uid
-
submitBtn.innerHTML = "Updating..."
submitBtn.disabled = true
@@ -137,64 +135,59 @@ function updateImgs() {
})
}
-updateImgs();
+updateImgs()
-function purchaseItem() {
- const purchaseBtn = document.getElementById('remember-to-add-auth-verificartion-to-js-handler')
- if (purchaseBtn.innerHTML == "Buy!") {
- purchaseBtn.setAttribute("style", "background: #ff813d; width:300px;")
- purchaseBtn.innerHTML = "Confirm?"
+function requestItem(){
+ const reqBtn = document.getElementById('req-btn')
+ const bMessage = document.getElementById('bMsg')
+ if (reqBtn.innerHTML == "Request!") {
+ if (firebase.auth().currentUser) {
+ reqBtn.setAttribute("style", "background: #87e5ff; width:300px;")
+ reqBtn.innerHTML = "Send?"
+ bMessage.setAttribute('style', 'display: block;')
+ } else {
+ reqBtn.innerHTML = "Please sign in"
+ reqBtn.setAttribute("style", "background: #FFa5af; width:300px;")
+ }
}
- else if (purchaseBtn.innerHTML == "Confirm?") {
+ else if (reqBtn.innerHTML == "Send?") {
if (firebase.auth().currentUser) {
firebase.auth().currentUser.getIdToken().then(function(idToken) {
- var item_id_element = document.getElementById("productID")
- var item_id = item_id_element.getAttribute("product_id")
- const url = 'purchase-api'
- // The data we are going to send in our request
- let data = {
- item: item_id,
- user: idToken
- }
- // The parameters we are gonna pass to the fetch function
- let postData = {
- method: 'POST',
- body: JSON.stringify(data),
- headers: {'Content-Type': 'application/json'}
- }
+ reqBtn.innerHTML = "Sending..."
+ reqBtn.disabled = true
+ let userMessage = bMessage.value
+ let item_id = document.getElementById("productID").getAttribute("product_id")
+ const url = 'request-api'
+ let data = {prodID: item_id, authToken: idToken, usrMsg: userMessage}
+ let postData = {method: 'POST', body: JSON.stringify(data), headers: {'Content-Type': 'application/json'}}
fetch(url, postData)
.then(response => response.json())
.then(function(result){
console.log(result)
if (result.success == true) {
- purchaseBtn.setAttribute("style", "background: #00DD00; width:500px; transition: 0.7s;")
- purchaseBtn.innerHTML = "Item Purchased, Congratulations!"
+ reqBtn.setAttribute("style", "background: #00DD00; width:500px; transition: 0.7s;")
+ reqBtn.innerHTML = "Done! Go Home"
+ reqBtn.disabled = false
}
else {
- purchaseBtn.setAttribute("style", "background: red;")
- purchaseBtn.disabled = true
- purchaseBtn.innerHTML = "ERROR"
+ reqBtn.setAttribute("style", "background: red;")
+ reqBtn.disabled = true
+ reqBtn.innerHTML = "ERROR"
document.getElementById("api-response").innerHTML = "Error: " + result.error
document.getElementById("api-response").setAttribute("style", "display: block")
}
})
})
+ } else {
+ reqBtn.innerHTML = "Please sign in"
}
- else {
- purchaseBtn.innerHTML = "Please log in to continue"
- purchaseBtn.setAttribute("style", "width: 500px;");
- }
-
- }
- else if (purchaseBtn.innerHTML == "Item Purchased, Congratulations!") {
- window.location.replace("home")
}
else {
- purchaseBtn.disabled = true
+ window.location.replace('home')
}
-
}
+
function edit_item() {
firebase.auth().currentUser.getIdToken().then(function(idToken) {
var item_id_element = document.getElementById("productID")
@@ -204,39 +197,78 @@ function edit_item() {
.catch(e => {console.log(e)})
}
-function place_item_on_sale() {
+function toggle_sale() {
firebase.auth().currentUser.getIdToken().then(function(idToken) {
- var item_id_element = document.getElementById("productID")
- var item_id = item_id_element.getAttribute("product_id")
- var place_on_sale_button = document.getElementById("sellBtn")
- const url = 'place-on-sale-api'
- let data = {
- item: item_id,
- user: idToken
- }
- let postData = {
- method: 'POST',
- body: JSON.stringify(data),
- headers: {'Content-Type': 'application/json'}
- }
+ let item_id = document.getElementById("productID").getAttribute("product_id")
+ let item_status = document.getElementById("productID").getAttribute("product_status")
+ let toggle_sale_btn = document.getElementById("toggleSaleBtn")
+ toggle_sale_btn.disabled = true
+ var toggle_status = true
+ if (item_status == 'on-sale') {toggle_status = false}
+ const url = 'toggle-sale-api'
+ let data = {prodID: item_id, authToken: idToken, targetState: toggle_status}
+ let postData = { method: 'POST', body: JSON.stringify(data),headers: {'Content-Type': 'application/json'}}
fetch(url, postData)
.then(response => response.json())
.then(function(result){
console.log(result)
if (result.success == true) {
- place_on_sale_button.setAttribute("style", "background: #00DD00; width:200px;")
- place_on_sale_button.innerHTML = "Item on sale!"
- place_on_sale_button.disabled = true
- }
- else {
- place_on_sale_button.setAttribute("style", "background: red;")
- place_on_sale_button.disabled = true
- place_on_sale_button.innerHTML = "ERROR"
- console.log(result.error)
+ toggle_sale_btn.setAttribute("style", "background: #00DD00; transition: 0.5s;")
+ toggle_sale_btn.innerHTML = "Done!"
+ let sold_btn = document.getElementById("soldBtn")
+ let edit_button = document.getElementById("editBtn")
+ sold_btn.disabled = true
+ edit_button.disabled = true
+ } else {
+ toggle_sale_btn.setAttribute("style", "background: red;")
+ toggle_sale_btn.innerHTML = "ERROR"
+ document.getElementById("api-response").innerHTML = "Error: " + result.error
+ document.getElementById("api-response").setAttribute("style", "display: block")
+
}
})
+ .catch (e=>{
+ toggle_sale_btn.setAttribute("style", "background: red;")
+ toggle_sale_btn.innerHTML = "ERROR"
+ document.getElementById("api-response").innerHTML = "Error: " + e
+ document.getElementById("api-response").setAttribute("style", "display: block")
+ })
+ })
+}
+
+function mark_as_sold(){
+ firebase.auth().currentUser.getIdToken().then(function(idToken) {
+ let item_id = document.getElementById("productID").getAttribute("product_id")
+ let sold_btn = document.getElementById("soldBtn")
+ const url = 'sold-api'
+ let data = {prodID: item_id, authToken: idToken}
+ let postData = { method: 'POST', body: JSON.stringify(data), headers: {'Content-Type': 'application/json'}}
+ fetch(url, postData)
+ .then(response => response.json())
+ .then(function(result){
+ if (result.success == true) {
+ sold_btn.setAttribute("style", "background: #00DD00; width:200px;")
+ sold_btn.innerHTML = "Sold!"
+ sold_btn.disabled = true
+ let sale_button = document.getElementById("toggleSaleBtn")
+ let edit_button = document.getElementById("editBtn")
+ sale_button.disabled = true
+ edit_button.disabled = true
+ }
+ else {
+ sold_btn.setAttribute("style", "background: red;")
+ sold_btn.innerHTML = "ERROR"
+ document.getElementById("api-response").innerHTML = "Error: " + e
+ document.getElementById("api-response").setAttribute("style", "display: block")
+ }
+ })
+ .catch (e=>{
+ sold_btn.setAttribute("style", "background: red;")
+ sold_btn.innerHTML = "ERROR"
+ document.getElementById("api-response").innerHTML = "Error: " + e
+ document.getElementById("api-response").setAttribute("style", "display: block")
+ })
})
- .catch(e => {console.log(e)})
}
function ship_item() {
diff --git a/functions/views/media/gg_logo.png b/functions/views/media/gg_logo.png
index b5951c4..94ce8fc 100644
Binary files a/functions/views/media/gg_logo.png and b/functions/views/media/gg_logo.png differ
diff --git a/functions/views/media/noimage.png b/functions/views/media/noimage.png
index e78160b..9f1e95c 100644
Binary files a/functions/views/media/noimage.png and b/functions/views/media/noimage.png differ
diff --git a/functions/views/media/welcome.png b/functions/views/media/welcome.png
index 01ebf59..d08ae83 100644
Binary files a/functions/views/media/welcome.png and b/functions/views/media/welcome.png differ
diff --git a/functions/views/my-product.ejs b/functions/views/my-product.ejs
index 936230b..8e88a78 100644
--- a/functions/views/my-product.ejs
+++ b/functions/views/my-product.ejs
@@ -1,65 +1,7 @@
-
+<%- include("partials/header") %>
-
-
-
-
-
GG Prototype
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 🔔 | <%= 0%>
-
-
- 🛒 | <%= 0%>
-
-
-
-
-
-
-
-
-
-
+
+
@@ -67,21 +9,22 @@
<%= item.name %>
Seller: You
Location: <%= item.location %>
-
In stock: <%= item.stock %>
+
Quantity: <%= item.stock %>
Status: <%= item.status %>
Price: Β£<%= item.price %>
-
@@ -92,26 +35,4 @@
-
-
-
-
-
-
\ No newline at end of file
+<%- include("partials/footer") %>
\ No newline at end of file
diff --git a/functions/views/my-products.ejs b/functions/views/my-products.ejs
index 123efbe..c96a2b9 100644
--- a/functions/views/my-products.ejs
+++ b/functions/views/my-products.ejs
@@ -1,64 +1,4 @@
-
-
-
-
-
-
-
GG Prototype
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 🔔 | <%= 0%>
-
-
- 🛒 | <%= 0%>
-
-
-
-
-
-
-
-
-
+<%- include("partials/header") %>
@@ -91,26 +31,4 @@
-
-
-
-
-
-
\ No newline at end of file
+<%- include("partials/footer") %>
\ No newline at end of file
diff --git a/functions/views/partials/footer.ejs b/functions/views/partials/footer.ejs
new file mode 100644
index 0000000..0f7bd63
--- /dev/null
+++ b/functions/views/partials/footer.ejs
@@ -0,0 +1,22 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/functions/views/partials/header.ejs b/functions/views/partials/header.ejs
new file mode 100644
index 0000000..2213840
--- /dev/null
+++ b/functions/views/partials/header.ejs
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
GG Prototype
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 🔔 | <%= 0%>
+
+
+ 🛒 | <%= 0%>
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/functions/views/product.ejs b/functions/views/product.ejs
index 2df14ea..8649640 100644
--- a/functions/views/product.ejs
+++ b/functions/views/product.ejs
@@ -1,63 +1,5 @@
-
+<%- include("partials/header") %>
-
-
-
-
-
GG Prototype
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 🔔 | <%= 0%>
-
-
- 🛒 | <%= 0%>
-
-
-
-
-
-
-
-
@@ -67,9 +9,10 @@
<%= item.name %>
Seller: <%= seller %>
Location: <%= item.location %>
-
In stock: <%= item.stock %>
+
Quantity: <%= item.stock %>
Price: Β£<%= item.price %>
-
+
+
@@ -80,26 +23,4 @@
-
-
-
-
-
-
\ No newline at end of file
+<%- include("partials/footer") %>
\ No newline at end of file
diff --git a/functions/views/search.ejs b/functions/views/search.ejs
index d401357..063fd69 100644
--- a/functions/views/search.ejs
+++ b/functions/views/search.ejs
@@ -1,64 +1,4 @@
-
-
-
-
-
-
-
GG Prototype
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 🔔 | <%= 0%>
-
-
- 🛒 | <%= 0%>
-
-
-
-
-
-
-
-
-
+<%- include("partials/header") %>
Search results:
@@ -75,35 +15,9 @@
<% }) %>
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+<%- include("partials/footer") %>
\ No newline at end of file
diff --git a/server.js b/server.js
index a1f6f29..63509f8 100644
--- a/server.js
+++ b/server.js
@@ -9,7 +9,6 @@ let firebaseadmin = admin.initializeApp({
databaseURL: "https://project-gg-3b754.firebaseio.com"
})
let database = firebaseadmin.database()
-let auth = admin.auth();
let app = express()
app.use(bodyParser.urlencoded({extended: true}))
@@ -27,7 +26,7 @@ let transporter = nodemailer.createTransport({
user: 'noreply.projectgg@gmail.com',
pass: 'kynpef-5paqha-xaVxip'
}
-});
+})
app.get("/", function(request, responce) {
@@ -111,31 +110,16 @@ app.get('/my-products', function(request, responce){
}
else {
dbRef.orderByChild('owner').equalTo(uid).once('value', function(snapshot){
- var data = {
- 'x': {
- desc: '',
- holder: '',
- id: 999,
- img: '',
- location: '',
- name: 'No products listed π’',
- owner: '',
- price: '',
- public: '',
- stock: ''
- },
- }
+ var data = {'x': {holder: '',id: 999,img: '',location: '',name: 'No products listed π’',owner: '',price: '',stock: ''}}
if (snapshot.val()) {data = snapshot.val()}
responce.render('my-products.ejs', {products: data})
})
}
-
-
})
.catch(function(error) {
console.log(error)
responce.send("
Bad Auth Token
Home")
- });
+ })
}
else {
responce.send("
No Auth Token Provided
Home")
@@ -235,109 +219,112 @@ app.get('/product', function(request, responce){
}
})
-app.post('/purchase-api', function(request, responce){
- if (request.body.item && request.body.user) {
- admin.auth().verifyIdToken(request.body.user)
- .then(function(decodedToken) {
- let uid = decodedToken.uid;
- let product = request.body.item
- var productRef = database.ref("/products/"+product)
- productRef.once('value', function(snapshot) {
- var exists = (snapshot.val() !== null)
- if (exists){
- var productRef = database.ref("/products/"+product)
- productRef.update({owner:uid, status:"sold"})
- .then(function(){
- responce.send({success:true, error:null})
- })
- .catch(e => {console.log(e)})
+
+app.post('/request-api', async function(request, responce){
+ if (request.body.prodID && request.body.authToken && request.body.usrMsg) {
+ let bMsg = request.body.usrMsg
+ let uid = await authCheck(request.body.authToken)
+ if (uid) {
+ let pid = request.body.prodID
+ let productRef = database.ref("/products/"+ pid)
+ var snapshot = await productRef.once('value')
+ if (snapshot.exists()) {
+ let product = snapshot.val()
+ let productName = product.name
+ let productSeller = product.owner
+ let usersRef = database.ref("/users")
+ snapshot = await usersRef.orderByChild("UID").equalTo(productSeller).once('value')
+ if (snapshot.exists()) {
+ let vals = snapshot.val()
+ let keys = Object.keys(vals)
+ let seller = vals[keys[0]]
+ let sellerName = seller.fName
+ let sellerEmail = seller.email
+ snapshot = await usersRef.orderByChild("UID").equalTo(uid).once('value')
+ if (snapshot.exists()) {
+ let vals = snapshot.val()
+ let keys = Object.keys(vals)
+ let buyer = vals[keys[0]]
+ let buyerName = buyer.fName + ' ' + buyer.lName
+ let buyerEmail = buyer.email
+ let content = contentMaker(sellerName, buyerName, buyerEmail, productName, pid, bMsg)
+ let rsp = sendEmail(sellerEmail, content)
+ console.log(rsp)
+ responce.send({success:true, error:null})
+ } else {
+ responce.send({success:false, error:'Something very bad has happened..... Item buyer apparantly doesn\'t exist in the database'})
}
- else {
- responce.send({success:false, error:'Item does not exist'})
- }
- })
- .catch(e => {console.log(e)})
- })
- .catch(function(err) {
- responce.send({success:false, error:'invalid auth token'})
- });
- }
- else {
+ } else {
+ responce.send({success:false, error:'Something very bad has happened..... Item owner apparantly doesn\'t exist in the database'})
+ }
+ } else {
+ responce.send({success:false, error:'Item does not exist'})
+ }
+ } else {
+ responce.send({success:false, error:'invalid auth token'})
+ }
+ } else {
responce.send({success:false, error:'invalid data'})
}
})
-app.post('/place-on-sale-api', function(request, responce){
- if (request.body.item && request.body.user) {
- admin.auth().verifyIdToken(request.body.user)
- .then(function(decodedToken) {
- let uid = decodedToken.uid;
- let productID = request.body.item
- var productRef = database.ref("/products/"+productID)
-
- productRef.once('value',function(snapshot){
- let item = snapshot.val()
- if (item){
- let itemOwner = item.owner
- if (uid == itemOwner){
- productRef.update({status:"on-sale"})
- .then(function(){
- responce.send({success:true, error:null})
- })
- .catch(e => {console.log(e)})
- }
- else {
- responce.send({success:false, error:'You do not own this item'})
- }
+app.post('/toggle-sale-api', async function(request, responce){
+ if (request.body.prodID && request.body.authToken && (request.body.targetState != null)) {
+ let uid = await authCheck(request.body.authToken)
+ if (uid) {
+ let pid = request.body.prodID
+ let targetState = request.body.targetState
+ let productRef = database.ref("/products/"+ pid)
+ var snapshot = await productRef.once('value')
+ if (snapshot.exists()) {
+ let product = snapshot.val()
+ if (product.owner == uid && product.status != "sold") {
+ let status = "x"
+ if (targetState == true) {
+ status = "on-sale"
+ } else {
+ status = "off-sale"
}
- else {
- responce.send({success:false, error:'Item does not exist'})
- }
- })
- .catch(e=>{
- console.log(e)
- responce.send({success:false, error:'other, ' + e})
- })
- })
- .catch(function(error) {
- responce.send({success:false, error:'invalid auth token'})
- })
+ productRef.update({status:status})
+ .then(responce.send({success:true, error:null}))
+ .catch(e => {responce.send({success:false, error:e})})
+ } else {
+ responce.send({success:false, error:'Unauthorized'})
+ }
+ } else {
+ responce.send({success:false, error:'Item does not exist'})
+ }
+ } else {
+ responce.send({success:false, error:'invalid auth token'})
}
- else {
+ } else {
responce.send({success:false, error:'invalid data'})
}
})
-app.post('/ship-api', function(request, responce){
- if (request.body.item && request.body.user) {
- admin.auth().verifyIdToken(request.body.user)
- .then(async function(decodedToken) {
- let uid = decodedToken.uid;
- let pid = request.body.item
-
- if (await verifyExists(pid)){
- if (await verifyOwner(uid, pid)) {
- let productRef = database.ref("/products/"+pid)
- productRef.update({status:"shipped"})
- .then(function(){
- processItemShipEmail(pid, uid)
- responce.send({success:true, error:null})
- })
- .catch(e => {console.log(e)})
- }
- else {
- responce.send({success:false, error:'You do not own this item'})
- }
+app.post('/sold-api', async function(request, responce){
+ if (request.body.prodID && request.body.authToken) {
+ let uid = await authCheck(request.body.authToken)
+ if (uid) {
+ let pid = request.body.prodID
+ let productRef = database.ref("/products/"+ pid)
+ var snapshot = await productRef.once('value')
+ if (snapshot.exists()) {
+ let product = snapshot.val()
+ if (product.owner == uid) {
+ productRef.update({status:"sold"})
+ .then(responce.send({success:true, error:null}))
+ .catch(e => {responce.send({success:false, error:e})})
+ } else {
+ responce.send({success:false, error:'Unauthorized'})
}
- else {
- responce.send({success:false, error:'Item does not exist'})
- }
- })
- .catch(function(error) {
- responce.send({success:false, error:'invalid auth token'})
- })
+ } else {
+ responce.send({success:false, error:'Item does not exist'})
+ }
+ } else {
+ responce.send({success:false, error:'invalid auth token'})
}
- else {
+ } else {
responce.send({success:false, error:'invalid data'})
}
})
@@ -363,7 +350,7 @@ app.post('/login-user-api', function(request, responce){
});
}
else {
- responce.send({error: 'invalid data'})
+ responce.send({success:false, error: 'invalid data'})
}
})
@@ -475,37 +462,17 @@ app.post('/update-product-api', function(request, responce){
}
})
+function contentMaker(sName, bName, bEmail, pName, pid, bMsg){
+ let text = "Hi " + sName + "\n \n" + bName + " is interested in your product " + pName + " (ID: " + pid + ")\n\nUser email: " + bEmail +"\n\nUser message:\n" + bMsg
+ return text
+}
-
-
-
-
-app.post('/demo-api', function(request, responce){
- if (request.body.item && request.body.user) {
- admin.auth().verifyIdToken(request.body.user)
- .then(async function(decodedToken) {
- if (await verifyExists(request.body.item)){
- if (await verifyOwner(decodedToken.uid, request.body.item)) {
- responce.send({success:true, error:null, data:"x"})
- }
- else {
- responce.send({success:false, error:'You do not own this item'})
- }
- }
- else {
- responce.send({success:false, error:'Item does not exist'})
- }
- })
- .catch(function(error) {
- responce.send({success:false, error:'invalid auth token'})
- console.log(error)
- });
- }
- else {
- responce.send({success:false, error: 'invalid data'})
- }
-})
-
+async function authCheck(token) {
+ let uid = false
+ decodedToken = await admin.auth().verifyIdToken(token).catch(e=>{console.log(e)})
+ uid = decodedToken.uid
+ return uid
+}
async function checkNewUser(user){
let snapshot = await checkUserExists(user.uid)
@@ -572,47 +539,25 @@ async function verifyOwner(uid, pid) {
function sendEmail(address, content){
var mailOptions = {
- from: 'noreply.projectgg@gmail.com',
+ from: 'Project GG',
to: address,
- subject: 'Your Item has been requested',
+ subject: 'Someone\'s interested!',
text: content
}
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
- } else {
- console.log('Email sent: ' + info.response);
- }
+ }
})
}
-function processItemShipEmail(itemID, buyerID){
- let productRef = database.ref("/products/"+itemID)
- productRef.once('value',function(snapshot){
- let item = snapshot.val()
- let itemName = item.name
- let itemHolder = item.holder
- let usersRef = database.ref("/users")
- usersRef.orderByChild("UID").equalTo(itemHolder).once('value', function(snapshot){
- vals = snapshot.val()
- var keys = Object.keys(vals)
- uData = vals[keys[0]]
- let holderEmail = uData.email
- let clientRef = database.ref("/users")
- usersRef.orderByChild("UID").equalTo(buyerID).once('value', function(snapshot){
- cvals = snapshot.val()
- var ckeys = Object.keys(cvals)
- cData = cvals[ckeys[0]]
- let clientAddress = cData.address
- let emailContent = "Please ship Item: " + itemName + " (ItemID: " + itemID + ")\nShipping address: " + clientAddress
- sendEmail(holderEmail, emailContent)
- })
- })
- })
-}
app.get('*', function(request, responce){
- responce.render('404.ejs')
+ responce.status(404).render('404.ejs')
+})
+
+app.post('*', function(request, responce){
+ responce.status(404).send({success:false, error:"404"})
})
var port = 5000