Update
This commit is contained in:
parent
22d871851e
commit
70c563f818
@ -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)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -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 {
|
||||||
|
|||||||
@ -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>
|
||||||
|
|||||||
@ -1,4 +1,19 @@
|
|||||||
|
function checkFields() {
|
||||||
|
if (document.getElementById('pName').value && document.getElementById('pDesc').value
|
||||||
|
&& document.getElementById('pLoc').value && document.getElementById('pPrice').value
|
||||||
|
&& document.getElementById('pImg').files[0].name) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
async function productSubmitEventHandler(){
|
async function productSubmitEventHandler(){
|
||||||
|
const submitBtn = document.getElementById('pSend')
|
||||||
|
if (submitBtn.innerHTML == "Submit!") {
|
||||||
|
if (checkFields()) {
|
||||||
|
submitBtn.innerHTML = "Uploading..."
|
||||||
|
submitBtn.disabled = true
|
||||||
|
|
||||||
let newProduct = {id: 1,name: "",desc: "",img: "default.png",location: "",stock: 1,status: "on-sale",price: 0,owner: "",holder: ""}
|
let newProduct = {id: 1,name: "",desc: "",img: "default.png",location: "",stock: 1,status: "on-sale",price: 0,owner: "",holder: ""}
|
||||||
|
|
||||||
const nameField = document.getElementById('pName')
|
const nameField = document.getElementById('pName')
|
||||||
@ -6,33 +21,26 @@ async function productSubmitEventHandler(){
|
|||||||
const locField = document.getElementById('pLoc')
|
const locField = document.getElementById('pLoc')
|
||||||
const stockField = document.getElementById('pStock')
|
const stockField = document.getElementById('pStock')
|
||||||
const priceField = document.getElementById('pPrice')
|
const priceField = document.getElementById('pPrice')
|
||||||
|
|
||||||
const imgBtn = document.getElementById('pImg')
|
const imgBtn = document.getElementById('pImg')
|
||||||
|
|
||||||
let sessUid = firebase.auth().currentUser.uid
|
let uid = firebase.auth().currentUser.uid
|
||||||
|
|
||||||
newProduct.id = 999
|
newProduct.id = 999
|
||||||
newProduct.name = nameField.value
|
newProduct.name = nameField.value
|
||||||
newProduct.desc = descField.value
|
newProduct.desc = descField.value
|
||||||
newProduct.location = locField.value
|
newProduct.location = locField.value
|
||||||
if (stockField.value) {
|
if (stockField.value) {newProduct.stock = stockField.value}
|
||||||
newProduct.stock = stockField.value
|
|
||||||
}
|
|
||||||
newProduct.price = priceField.value
|
newProduct.price = priceField.value
|
||||||
newProduct.owner = sessUid
|
newProduct.owner = uid
|
||||||
newProduct.holder = sessUid
|
newProduct.holder = uid
|
||||||
|
|
||||||
let image = imgBtn.files[0]
|
let image = imgBtn.files[0]
|
||||||
imageName = image.name
|
imageName = image.name
|
||||||
let imagePackage = {name:imageName, b64:null}
|
let imagePackage = {name:imageName, b64:null}
|
||||||
|
|
||||||
const submitBtn = document.getElementById('pSend')
|
|
||||||
submitBtn.innerHTML = "Uploading..."
|
|
||||||
submitBtn.disabled = true
|
|
||||||
|
|
||||||
firebase.auth().currentUser.getIdToken().then(function(idToken){
|
firebase.auth().currentUser.getIdToken().then(function(idToken){
|
||||||
let url = 'new-product-api'
|
let url = 'new-product-api'
|
||||||
let data = {uToken: idToken, product: newProduct, image: imagePackage}
|
let data = {authToken: idToken, product: newProduct, image: imagePackage}
|
||||||
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())
|
||||||
@ -40,7 +48,9 @@ async function productSubmitEventHandler(){
|
|||||||
if (result.success) {
|
if (result.success) {
|
||||||
let imageRef = firebase.storage().ref(result.imgRef)
|
let imageRef = firebase.storage().ref(result.imgRef)
|
||||||
imageRef.put(image).then(function(){
|
imageRef.put(image).then(function(){
|
||||||
window.location.replace('home?itemAdded=true')
|
submitBtn.innerHTML = "Done! Go Home..."
|
||||||
|
submitBtn.disabled = false
|
||||||
|
submitBtn.setAttribute('style', 'background:#00FF55; transition:0.5s; width:500px;')
|
||||||
})
|
})
|
||||||
.catch(e=>{
|
.catch(e=>{
|
||||||
submitBtn.innerHTML = "Error..."
|
submitBtn.innerHTML = "Error..."
|
||||||
@ -57,6 +67,13 @@ async function productSubmitEventHandler(){
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
} else {
|
||||||
|
document.getElementById("api-response").innerHTML = "Fill in all required fields!"
|
||||||
|
document.getElementById("api-response").setAttribute("style", "display: block")
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
window.location.replace('home')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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())
|
||||||
|
|||||||
@ -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">
|
||||||
🔔 | <%= 0%>
|
🔔 | <%= 0%>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="cart">
|
<div>
|
||||||
<a href="#" id="cart">
|
<a href="#" class="cart" id="cart">
|
||||||
🛒 | <%= 0%>
|
🛒 | <%= 0%>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
72
server.js
72
server.js
@ -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)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user