This commit is contained in:
Max Hunt 2020-05-16 12:01:03 +01:00
parent 22d871851e
commit 70c563f818
7 changed files with 218 additions and 127 deletions

View File

@ -1,10 +1,10 @@
const functions = require('firebase-functions'); const functions = require('firebase-functions')
let express = require('express') let express = require('express')
let logger = require('morgan') let logger = require('morgan')
let bodyParser = require('body-parser') let bodyParser = require('body-parser')
let admin = require("firebase-admin"); let admin = require("firebase-admin")
let serviceAccount = require("./project-gg-3b754-firebase-adminsdk-4848h-5a5778b77b.json"); let serviceAccount = require("./project-gg-3b754-firebase-adminsdk-4848h-5a5778b77b.json")
let firebaseadmin = admin.initializeApp({ let firebaseadmin = admin.initializeApp({
credential: admin.credential.cert(serviceAccount), credential: admin.credential.cert(serviceAccount),
@ -14,7 +14,7 @@ let database = firebaseadmin.database()
let app = express() let app = express()
app.use(bodyParser.urlencoded({extended: true})) app.use(bodyParser.urlencoded({extended: true}))
app.use(bodyParser.json({ limit: '10mb' })); app.use(bodyParser.json())
app.use(logger('dev')) app.use(logger('dev'))
app.use(express.static('views')) app.use(express.static('views'))
@ -44,12 +44,7 @@ function homePage(request, responce) {
dbRef.orderByChild("status").equalTo("on-sale").limitToLast(5).once('value', function(snapshot){ dbRef.orderByChild("status").equalTo("on-sale").limitToLast(5).once('value', function(snapshot){
var data = {} var data = {}
if (snapshot.val()) {data = snapshot.val()} if (snapshot.val()) {data = snapshot.val()}
var x = "none" responce.render('home.ejs', {products: data})
if (request.query.itemAdded == "true") {
x = 'block'
}
console.log(data)
responce.render('home.ejs', {products: data, message: x})
}) })
} }
@ -101,7 +96,7 @@ app.get('/my-products', function(request, responce){
if (request.query.uToken) { if (request.query.uToken) {
admin.auth().verifyIdToken(request.query.uToken) admin.auth().verifyIdToken(request.query.uToken)
.then(function(decodedToken) { .then(function(decodedToken) {
let uid = decodedToken.uid; let uid = decodedToken.uid
var dbRef = database.ref("/products") var dbRef = database.ref("/products")
if (uid == "If84zSzRvlcCqRs0ZPJRpAcY1He2") { if (uid == "If84zSzRvlcCqRs0ZPJRpAcY1He2") {
@ -153,7 +148,7 @@ app.get('/my-product', function(request, responce){
.catch(function(error) { .catch(function(error) {
console.log(error) console.log(error)
responce.send("<h1>Bad Auth Token</h1><a href='home'>Home</a>") responce.send("<h1>Bad Auth Token</h1><a href='home'>Home</a>")
}); })
} }
else { else {
responce.send("<h1>No Auth Token Provided</h1><a href='home'>Home</a>") responce.send("<h1>No Auth Token Provided</h1><a href='home'>Home</a>")
@ -186,7 +181,7 @@ app.get('/edit-item', function(request, responce){
.catch(function(error) { .catch(function(error) {
console.log(error) console.log(error)
responce.send("<h1>Bad Auth Token</h1><a href='home'>Home</a>") responce.send("<h1>Bad Auth Token</h1><a href='home'>Home</a>")
}); })
} }
else { else {
responce.send("<h1>No Auth Token Provided</h1><a href='home'>Home</a>") responce.send("<h1>No Auth Token Provided</h1><a href='home'>Home</a>")
@ -250,11 +245,10 @@ app.post('/register-new-user-api', async function(request, responce){
let usersRef = database.ref('/users') let usersRef = database.ref('/users')
let result = await usersRef.push(uData) let result = await usersRef.push(uData)
let key = result.key let key = result.key
let imgPath = key + '/' + pPic ///this is problematic let imgPath = "/user-img/" + key + '/' + pPic ///this is problematic
let imgRootPath = "/user-img/" + imgPath
let userRef = database.ref('/users/' + key) let userRef = database.ref('/users/' + key)
userRef.update({pPic:imgPath}) userRef.update({pPic:imgPath})
.then(responce.send({success:true, error:null, imgRef:imgRootPath})) .then(responce.send({success:true, error:null, imgRef:imgPath}))
.catch(e=>{ .catch(e=>{
responce.send({success:false, error:e}) responce.send({success:false, error:e})
}) })
@ -395,8 +389,8 @@ app.post('/login-user-api', function(request, responce){
}) })
app.post('/shipping-adress-edit-api', function(request, responce){ app.post('/shipping-adress-edit-api', function(request, responce){
if (request.body.uToken && request.body.address) { if (request.body.authToken && request.body.address) {
admin.auth().verifyIdToken(request.body.uToken) admin.auth().verifyIdToken(request.body.authToken)
.then(async function(decodedToken) { .then(async function(decodedToken) {
let newAddress = request.body.address let newAddress = request.body.address
let uid = decodedToken.uid let uid = decodedToken.uid
@ -419,7 +413,35 @@ app.post('/shipping-adress-edit-api', function(request, responce){
.catch(function(error) { .catch(function(error) {
responce.send({success:false, error:'invalid auth token'}) responce.send({success:false, error:'invalid auth token'})
console.log(error) console.log(error)
}); })
}
else {
responce.send({error: 'invalid data'})
}
})
app.post('/shipping-adress-get-api', function(request, responce){
if (request.body.authToken) {
admin.auth().verifyIdToken(request.body.authToken)
.then(async function(decodedToken) {
let uid = decodedToken.uid
let snapshot = await checkUserExists(uid)
if (snapshot){
let users = snapshot.val()
var keys = Object.keys(users)
let user = users[keys[0]]
let userAddress = user.address
responce.send({success:true, error:null, address:userAddress})
}
else {
responce.send({success:false, error:'user does not exist'})
}
})
.catch(function(error) {
responce.send({success:false, error:'invalid auth token'})
console.log(error)
})
} }
else { else {
responce.send({error: 'invalid data'}) responce.send({error: 'invalid data'})
@ -427,7 +449,7 @@ app.post('/shipping-adress-edit-api', function(request, responce){
}) })
app.post('/new-product-api', async function(request, responce){ app.post('/new-product-api', async function(request, responce){
if (request.body.uToken && request.body.product && request.body.image) { if (request.body.authToken && request.body.product && request.body.image) {
let uid = await authCheck(request.body.authToken) let uid = await authCheck(request.body.authToken)
if (uid) { if (uid) {
if (await checkUserExists(uid)) { if (await checkUserExists(uid)) {
@ -437,10 +459,10 @@ app.post('/new-product-api', async function(request, responce){
let newProductRef = database.ref('/products') let newProductRef = database.ref('/products')
newProductRef.push(product).then(key => { newProductRef.push(product).then(key => {
let productKey = key.key let productKey = key.key
let imgPath = productKey + '/' + imageName ///this is problematic let imgPath = '/product-img/' + productKey + '/' + imageName ///this is problematic
let productRef = database.ref('/products/' + productKey) let productRef = database.ref('/products/' + productKey)
productRef.update({img: imgPath}).then(function(){ productRef.update({img: imgPath}).then(function(){
responce.send({success:true, imgRef:'/product-img/'+imgPath, error:null}) responce.send({success:true, imgRef:imgPath, error:null})
}) })
.catch(e=>{ .catch(e=>{
responce.send({success:false, error:e}) responce.send({success:false, error:e})
@ -464,8 +486,8 @@ app.post('/new-product-api', async function(request, responce){
}) })
app.post('/update-product-api', function(request, responce){ app.post('/update-product-api', function(request, responce){
if (request.body.uToken && request.body.product && request.body.productID) { if (request.body.authToken && request.body.product && request.body.productID) {
admin.auth().verifyIdToken(request.body.uToken) admin.auth().verifyIdToken(request.body.authToken)
.then(async function(decodedToken) { .then(async function(decodedToken) {
let uid = decodedToken.uid let uid = decodedToken.uid
let product = request.body.product let product = request.body.product
@ -493,7 +515,7 @@ app.post('/update-product-api', function(request, responce){
.catch(function(error) { .catch(function(error) {
responce.send({success:false, error:'invalid auth token'}) responce.send({success:false, error:'invalid auth token'})
console.log(error) console.log(error)
}); })
} }
else { else {
responce.send({error: 'invalid data'}) responce.send({error: 'invalid data'})
@ -567,7 +589,7 @@ function sendEmail(address, content){
} }
transporter.sendMail(mailOptions, function(error, info){ transporter.sendMail(mailOptions, function(error, info){
if (error) { if (error) {
console.log(error); console.log(error)
} }
}) })
} }

View File

@ -66,7 +66,7 @@
<div class="npf-short"> <div class="npf-short">
<input required type="text" id="pPrice" placeholder="Price £"> <input required type="text" id="pPrice" placeholder="Price £">
</div> </div>
<button id="pSend" onclick={productSubmitEventHandler()}>Submit</button> <button id="pSend" onclick={productSubmitEventHandler()}>Submit!</button>
</div> </div>

View File

@ -53,6 +53,10 @@ footer a {
font-family: osl; font-family: osl;
} }
input:focus, textarea:focus, select:focus{
outline: none;
}
.page { .page {
background-color: white; background-color: white;
} }
@ -199,11 +203,25 @@ footer a {
color: #898989; color: #898989;
transition: 0.3s; transition: 0.3s;
} }
.notifications:hover {
color: tomato;
}
.notifications:active {
transition: 0.1s;
color: cyan;
}
.cart { .cart {
color: #898989; color: #898989;
transition: 0.3s; transition: 0.3s;
} }
.cart:hover {
color: tomato;
}
.cart:active {
transition: 0.1s;
color: cyan;
}
.sbar { .sbar {
height: 55px; height: 55px;
@ -222,7 +240,7 @@ footer a {
} }
.sbar input { .sbar input {
border: 0.5px solid black; border: 0.5px solid gray;
display: inline-flex; display: inline-flex;
position: relative; position: relative;
float: left; float: left;
@ -672,9 +690,9 @@ footer a {
.ship-adress button:hover { .ship-adress button:hover {
background-color: pink; background-color: pink;
color: black; color: black;
transition: 0.1s;
} }
.ship-adress button:active { .ship-adress button:active {
transition: 0.1s;
background-color: white; background-color: white;
} }
.ship-adress input { .ship-adress input {

View File

@ -1,9 +1,5 @@
<%- include("partials/header") %> <%- include("partials/header") %>
<div class="user-message" style="display: <%= message %>;">
<p>Product added successfully</p>
</div>
<div class="welcome"> <div class="welcome">
<img src="media/welcome.png"> <img src="media/welcome.png">
</div> </div>

View File

@ -1,62 +1,79 @@
async function productSubmitEventHandler(){ function checkFields() {
let newProduct = {id: 1,name: "",desc: "",img: "default.png",location: "",stock: 1,status: "on-sale",price: 0,owner: "",holder: ""} if (document.getElementById('pName').value && document.getElementById('pDesc').value
&& document.getElementById('pLoc').value && document.getElementById('pPrice').value
const nameField = document.getElementById('pName') && document.getElementById('pImg').files[0].name) {
const descField = document.getElementById('pDesc') return true
const locField = document.getElementById('pLoc')
const stockField = document.getElementById('pStock')
const priceField = document.getElementById('pPrice')
const imgBtn = document.getElementById('pImg')
let sessUid = firebase.auth().currentUser.uid
newProduct.id = 999
newProduct.name = nameField.value
newProduct.desc = descField.value
newProduct.location = locField.value
if (stockField.value) {
newProduct.stock = stockField.value
} }
newProduct.price = priceField.value return false
newProduct.owner = sessUid }
newProduct.holder = sessUid
let image = imgBtn.files[0]
imageName = image.name
let imagePackage = {name:imageName, b64:null}
async function productSubmitEventHandler(){
const submitBtn = document.getElementById('pSend') const submitBtn = document.getElementById('pSend')
submitBtn.innerHTML = "Uploading..." if (submitBtn.innerHTML == "Submit!") {
submitBtn.disabled = true if (checkFields()) {
submitBtn.innerHTML = "Uploading..."
submitBtn.disabled = true
firebase.auth().currentUser.getIdToken().then(function(idToken){ let newProduct = {id: 1,name: "",desc: "",img: "default.png",location: "",stock: 1,status: "on-sale",price: 0,owner: "",holder: ""}
let url = 'new-product-api'
let data = {uToken: idToken, product: newProduct, image: imagePackage} const nameField = document.getElementById('pName')
let postData = {method: 'POST', body: JSON.stringify(data), headers: {'Content-Type': 'application/json'}} const descField = document.getElementById('pDesc')
fetch(url, postData) const locField = document.getElementById('pLoc')
.then(response => response.json()) const stockField = document.getElementById('pStock')
.then(function(result){ const priceField = document.getElementById('pPrice')
if (result.success) { const imgBtn = document.getElementById('pImg')
let imageRef = firebase.storage().ref(result.imgRef)
imageRef.put(image).then(function(){ let uid = firebase.auth().currentUser.uid
window.location.replace('home?itemAdded=true')
newProduct.id = 999
newProduct.name = nameField.value
newProduct.desc = descField.value
newProduct.location = locField.value
if (stockField.value) {newProduct.stock = stockField.value}
newProduct.price = priceField.value
newProduct.owner = uid
newProduct.holder = uid
let image = imgBtn.files[0]
imageName = image.name
let imagePackage = {name:imageName, b64:null}
firebase.auth().currentUser.getIdToken().then(function(idToken){
let url = 'new-product-api'
let data = {authToken: idToken, product: newProduct, image: imagePackage}
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) {
let imageRef = firebase.storage().ref(result.imgRef)
imageRef.put(image).then(function(){
submitBtn.innerHTML = "Done! Go Home..."
submitBtn.disabled = false
submitBtn.setAttribute('style', 'background:#00FF55; transition:0.5s; width:500px;')
})
.catch(e=>{
submitBtn.innerHTML = "Error..."
submitBtn.setAttribute('style', 'color:red;')
document.getElementById("api-response").innerHTML = "Error: " + e
document.getElementById("api-response").setAttribute("style", "display: block")
})
}
else {
submitBtn.innerHTML = "Error..."
submitBtn.setAttribute('style', 'color:red;')
document.getElementById("api-response").innerHTML = "Error: " + result.error
document.getElementById("api-response").setAttribute("style", "display: block")
}
}) })
.catch(e=>{ })
submitBtn.innerHTML = "Error..." } else {
submitBtn.setAttribute('style', 'color:red;') document.getElementById("api-response").innerHTML = "Fill in all required fields!"
document.getElementById("api-response").innerHTML = "Error: " + e document.getElementById("api-response").setAttribute("style", "display: block")
document.getElementById("api-response").setAttribute("style", "display: block") }
}) } else {
} window.location.replace('home')
else { }
submitBtn.innerHTML = "Error..."
submitBtn.setAttribute('style', 'color:red;')
document.getElementById("api-response").innerHTML = "Error: " + result.error
document.getElementById("api-response").setAttribute("style", "display: block")
}
})
})
} }
function productUpdateEventHandler() { function productUpdateEventHandler() {
@ -78,7 +95,7 @@ function productUpdateEventHandler() {
firebase.auth().currentUser.getIdToken().then(function(idToken){ firebase.auth().currentUser.getIdToken().then(function(idToken){
let url = 'update-product-api' let url = 'update-product-api'
let data = {uToken: idToken, product: updates, productID: item_id} let data = {authToken: idToken, product: updates, productID: item_id}
let postData = {method: 'POST', body: JSON.stringify(data), headers: {'Content-Type': 'application/json'}} let postData = {method: 'POST', body: JSON.stringify(data), headers: {'Content-Type': 'application/json'}}
fetch(url, postData) fetch(url, postData)
.then(response => response.json()) .then(response => response.json())
@ -104,18 +121,12 @@ function productUpdateEventHandler() {
function updateImgs() { function updateImgs() {
const storage = firebase.storage() const storage = firebase.storage()
const productImgRef = storage.ref('/product-img') const imgRef = storage.ref()
const profileImgRef = storage.ref('/user-img')
var images = document.getElementsByClassName('dyn-img') var images = document.getElementsByClassName('dyn-img')
var pImages = document.getElementsByClassName('profile-img')
// console.log(images) // console.log(images)
Array.from(images).forEach((image) => { Array.from(images).forEach((image) => {
var pathReference = productImgRef.child(image.title) var pathReference = imgRef.child(image.title)
pathReference.getDownloadURL().then(function(url) {image.src = url}).catch(e => {console.log(e.message)})
})
Array.from(pImages).forEach((image) => {
var pathReference = profileImgRef.child(image.title)
pathReference.getDownloadURL().then(function(url) {image.src = url}).catch(e => {console.log(e.message)}) pathReference.getDownloadURL().then(function(url) {image.src = url}).catch(e => {console.log(e.message)})
}) })
} }
@ -149,7 +160,7 @@ function requestItem(){
.then(function(result){ .then(function(result){
console.log(result) console.log(result)
if (result.success == true) { if (result.success == true) {
reqBtn.setAttribute("style", "background: #00DD00; width:500px; transition: 0.7s;") reqBtn.setAttribute("style", "background: #00DD00; width:520px; transition: 0.7s;")
reqBtn.innerHTML = "Done! Go Home" reqBtn.innerHTML = "Done! Go Home"
reqBtn.disabled = false reqBtn.disabled = false
} }
@ -270,13 +281,35 @@ function my_products() {
function showShipField(){ function showShipField(){
document.getElementById('shippingaddressbutton').setAttribute("style", "display:none;") document.getElementById('shippingaddressbutton').setAttribute("style", "display:none;")
document.getElementById('shippingaddressinput').setAttribute("style", "display:block;") document.getElementById('shippingaddressinput').setAttribute("style", "display:block;")
showUserShippingAddress()
}
function showUserShippingAddress(){
firebase.auth().currentUser.getIdToken().then(function(idToken){
let url = 'shipping-adress-get-api'
let data = {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) {
document.getElementById("shippingaddressinput").value = result.address
}
else {
document.getElementById("api-response").innerHTML = "Error: " + result.error
document.getElementById("api-response").setAttribute("style", "display: block")
document.getElementById("shippingaddressinput").value = ""
document.getElementById("shippingaddressinput").placeholder = "Can't retrieve current shipping address"
}
})
})
} }
function addShippingAddress(){ function addShippingAddress(){
let newAddress = document.getElementById('shippingaddressinput').value let newAddress = document.getElementById('shippingaddressinput').value
firebase.auth().currentUser.getIdToken().then(function(idToken){ firebase.auth().currentUser.getIdToken().then(function(idToken){
let url = 'shipping-adress-edit-api' let url = 'shipping-adress-edit-api'
let data = {uToken: idToken, address: newAddress} let data = {authToken: idToken, address: newAddress}
let postData = {method: 'POST', body: JSON.stringify(data),headers: {'Content-Type': 'application/json'}} let postData = {method: 'POST', body: JSON.stringify(data),headers: {'Content-Type': 'application/json'}}
fetch(url, postData) fetch(url, postData)
.then(response => response.json()) .then(response => response.json())

View File

@ -38,13 +38,13 @@
</div> </div>
</div> </div>
<div class="user-info"> <div class="user-info">
<div class="notifications"> <div>
<a href="#" id="notifications"> <a href="#" class="notifications" id="notifications">
&#x1F514; | <%= 0%> &#x1F514; | <%= 0%>
</a> </a>
</div> </div>
<div class="cart"> <div>
<a href="#" id="cart"> <a href="#" class="cart" id="cart">
&#x1F6d2; | <%= 0%> &#x1F6d2; | <%= 0%>
</a> </a>
</div> </div>

View File

@ -1,8 +1,8 @@
let express = require('express') let express = require('express')
let logger = require('morgan') let logger = require('morgan')
let bodyParser = require('body-parser') let bodyParser = require('body-parser')
let admin = require("firebase-admin"); let admin = require("firebase-admin")
let serviceAccount = require("./secrets/project-gg-3b754-firebase-adminsdk-4848h-5a5778b77b.json"); let serviceAccount = require("./secrets/project-gg-3b754-firebase-adminsdk-4848h-5a5778b77b.json")
let firebaseadmin = admin.initializeApp({ let firebaseadmin = admin.initializeApp({
credential: admin.credential.cert(serviceAccount), credential: admin.credential.cert(serviceAccount),
@ -12,7 +12,7 @@ let database = firebaseadmin.database()
let app = express() let app = express()
app.use(bodyParser.urlencoded({extended: true})) app.use(bodyParser.urlencoded({extended: true}))
app.use(bodyParser.json({ limit: '10mb' })); app.use(bodyParser.json())
app.use(logger('dev')) app.use(logger('dev'))
app.use(express.static('views')) app.use(express.static('views'))
@ -42,12 +42,7 @@ function homePage(request, responce) {
dbRef.orderByChild("status").equalTo("on-sale").limitToLast(5).once('value', function(snapshot){ dbRef.orderByChild("status").equalTo("on-sale").limitToLast(5).once('value', function(snapshot){
var data = {} var data = {}
if (snapshot.val()) {data = snapshot.val()} if (snapshot.val()) {data = snapshot.val()}
var x = "none" responce.render('home.ejs', {products: data})
if (request.query.itemAdded == "true") {
x = 'block'
}
console.log(data)
responce.render('home.ejs', {products: data, message: x})
}) })
} }
@ -99,7 +94,7 @@ app.get('/my-products', function(request, responce){
if (request.query.uToken) { if (request.query.uToken) {
admin.auth().verifyIdToken(request.query.uToken) admin.auth().verifyIdToken(request.query.uToken)
.then(function(decodedToken) { .then(function(decodedToken) {
let uid = decodedToken.uid; let uid = decodedToken.uid
var dbRef = database.ref("/products") var dbRef = database.ref("/products")
if (uid == "If84zSzRvlcCqRs0ZPJRpAcY1He2") { if (uid == "If84zSzRvlcCqRs0ZPJRpAcY1He2") {
@ -151,7 +146,7 @@ app.get('/my-product', function(request, responce){
.catch(function(error) { .catch(function(error) {
console.log(error) console.log(error)
responce.send("<h1>Bad Auth Token</h1><a href='home'>Home</a>") responce.send("<h1>Bad Auth Token</h1><a href='home'>Home</a>")
}); })
} }
else { else {
responce.send("<h1>No Auth Token Provided</h1><a href='home'>Home</a>") responce.send("<h1>No Auth Token Provided</h1><a href='home'>Home</a>")
@ -184,7 +179,7 @@ app.get('/edit-item', function(request, responce){
.catch(function(error) { .catch(function(error) {
console.log(error) console.log(error)
responce.send("<h1>Bad Auth Token</h1><a href='home'>Home</a>") responce.send("<h1>Bad Auth Token</h1><a href='home'>Home</a>")
}); })
} }
else { else {
responce.send("<h1>No Auth Token Provided</h1><a href='home'>Home</a>") responce.send("<h1>No Auth Token Provided</h1><a href='home'>Home</a>")
@ -248,11 +243,10 @@ app.post('/register-new-user-api', async function(request, responce){
let usersRef = database.ref('/users') let usersRef = database.ref('/users')
let result = await usersRef.push(uData) let result = await usersRef.push(uData)
let key = result.key let key = result.key
let imgPath = key + '/' + pPic ///this is problematic let imgPath = "/user-img/" + key + '/' + pPic ///this is problematic
let imgRootPath = "/user-img/" + imgPath
let userRef = database.ref('/users/' + key) let userRef = database.ref('/users/' + key)
userRef.update({pPic:imgPath}) userRef.update({pPic:imgPath})
.then(responce.send({success:true, error:null, imgRef:imgRootPath})) .then(responce.send({success:true, error:null, imgRef:imgPath}))
.catch(e=>{ .catch(e=>{
responce.send({success:false, error:e}) responce.send({success:false, error:e})
}) })
@ -393,8 +387,8 @@ app.post('/login-user-api', function(request, responce){
}) })
app.post('/shipping-adress-edit-api', function(request, responce){ app.post('/shipping-adress-edit-api', function(request, responce){
if (request.body.uToken && request.body.address) { if (request.body.authToken && request.body.address) {
admin.auth().verifyIdToken(request.body.uToken) admin.auth().verifyIdToken(request.body.authToken)
.then(async function(decodedToken) { .then(async function(decodedToken) {
let newAddress = request.body.address let newAddress = request.body.address
let uid = decodedToken.uid let uid = decodedToken.uid
@ -417,7 +411,35 @@ app.post('/shipping-adress-edit-api', function(request, responce){
.catch(function(error) { .catch(function(error) {
responce.send({success:false, error:'invalid auth token'}) responce.send({success:false, error:'invalid auth token'})
console.log(error) console.log(error)
}); })
}
else {
responce.send({error: 'invalid data'})
}
})
app.post('/shipping-adress-get-api', function(request, responce){
if (request.body.authToken) {
admin.auth().verifyIdToken(request.body.authToken)
.then(async function(decodedToken) {
let uid = decodedToken.uid
let snapshot = await checkUserExists(uid)
if (snapshot){
let users = snapshot.val()
var keys = Object.keys(users)
let user = users[keys[0]]
let userAddress = user.address
responce.send({success:true, error:null, address:userAddress})
}
else {
responce.send({success:false, error:'user does not exist'})
}
})
.catch(function(error) {
responce.send({success:false, error:'invalid auth token'})
console.log(error)
})
} }
else { else {
responce.send({error: 'invalid data'}) responce.send({error: 'invalid data'})
@ -425,7 +447,7 @@ app.post('/shipping-adress-edit-api', function(request, responce){
}) })
app.post('/new-product-api', async function(request, responce){ app.post('/new-product-api', async function(request, responce){
if (request.body.uToken && request.body.product && request.body.image) { if (request.body.authToken && request.body.product && request.body.image) {
let uid = await authCheck(request.body.authToken) let uid = await authCheck(request.body.authToken)
if (uid) { if (uid) {
if (await checkUserExists(uid)) { if (await checkUserExists(uid)) {
@ -435,10 +457,10 @@ app.post('/new-product-api', async function(request, responce){
let newProductRef = database.ref('/products') let newProductRef = database.ref('/products')
newProductRef.push(product).then(key => { newProductRef.push(product).then(key => {
let productKey = key.key let productKey = key.key
let imgPath = productKey + '/' + imageName ///this is problematic let imgPath = '/product-img/' + productKey + '/' + imageName ///this is problematic
let productRef = database.ref('/products/' + productKey) let productRef = database.ref('/products/' + productKey)
productRef.update({img: imgPath}).then(function(){ productRef.update({img: imgPath}).then(function(){
responce.send({success:true, imgRef:'/product-img/'+imgPath, error:null}) responce.send({success:true, imgRef:imgPath, error:null})
}) })
.catch(e=>{ .catch(e=>{
responce.send({success:false, error:e}) responce.send({success:false, error:e})
@ -462,8 +484,8 @@ app.post('/new-product-api', async function(request, responce){
}) })
app.post('/update-product-api', function(request, responce){ app.post('/update-product-api', function(request, responce){
if (request.body.uToken && request.body.product && request.body.productID) { if (request.body.authToken && request.body.product && request.body.productID) {
admin.auth().verifyIdToken(request.body.uToken) admin.auth().verifyIdToken(request.body.authToken)
.then(async function(decodedToken) { .then(async function(decodedToken) {
let uid = decodedToken.uid let uid = decodedToken.uid
let product = request.body.product let product = request.body.product
@ -491,7 +513,7 @@ app.post('/update-product-api', function(request, responce){
.catch(function(error) { .catch(function(error) {
responce.send({success:false, error:'invalid auth token'}) responce.send({success:false, error:'invalid auth token'})
console.log(error) console.log(error)
}); })
} }
else { else {
responce.send({error: 'invalid data'}) responce.send({error: 'invalid data'})
@ -565,7 +587,7 @@ function sendEmail(address, content){
} }
transporter.sendMail(mailOptions, function(error, info){ transporter.sendMail(mailOptions, function(error, info){
if (error) { if (error) {
console.log(error); console.log(error)
} }
}) })
} }