This commit is contained in:
Max Hunt 2020-04-27 11:35:15 +01:00
parent 57b0b525ff
commit f1bc5ff5ec
6 changed files with 206 additions and 2 deletions

View File

@ -117,6 +117,32 @@ app.get('/my-product', function(request, responce){
} }
}) })
app.get('/edit-item', function(request, responce){
if (request.query.uToken && request.query.productid) {
admin.auth().verifyIdToken(request.query.uToken)
.then(function(decodedToken) {
let uid = decodedToken.uid;
var dbRef = database.ref("/products/"+request.query.productid)
dbRef.once('value', function(snapshot){
data = snapshot.val()
if (data.owner == uid) {
responce.render('edit-item.ejs', {item:data, key:request.query.productid})
}
else {
responce.send('<h1 style="color:red;" >Unauthorized user</h1><a href="home">Home</a>')
}
})
})
.catch(function(error) {
console.log(error)
responce.send("<h1>Bad Auth Token</h1><a href='home'>Home</a>")
});
}
else {
responce.send("<h1>No Auth Token Provided</h1><a href='home'>Home</a>")
}
})
app.get('/product', function(request, responce){ app.get('/product', function(request, responce){
if (request.query.productid) { if (request.query.productid) {
var dbRef = database.ref("/products/"+request.query.productid) var dbRef = database.ref("/products/"+request.query.productid)

View File

@ -0,0 +1,103 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>GG Prototype</title>
<meta name="description" content="GG Prototype Web">
<meta name="author" content="Max">
<link rel="stylesheet" href="css/style.css">
<script src="https://www.gstatic.com/firebasejs/7.14.1/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.14.1/firebase-analytics.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.14.1/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.14.1/firebase-storage.js"></script>
<script defer src="https://www.gstatic.com/firebasejs/7.14.1/firebase-database.js"></script>
<script src="js/fInit.js"></script>
</head>
<body>
<main>
<div class="page">
<div class="navbar">
<div class="logon-crumbs">
<div id="uname-field" style="display: none;">
<a id="uname-dom" class="user-name" href="javascript:;" onclick="my_products();">Unregistered user</a>
<div class="user-logout">
<a onclick={signout()}>Log out</a>
</div>
</div>
<div id="login-field" style="display: block;">
<input id="fuid" type="text" placeholder="Username">
<input id="fpwd" type="password" placeholder="Password">
<button id="blogin" onclick={signinwithemail()} class="btn-login">&#x27a4;</button>
<button id="blogin_g" onclick={signinwithgoogle()} class="btn-g-login"><img src="media/g_logon.png" class="img-g-login" alt="img"></button>
<button id="blogin_g" onclick={signinwithfb()} class="btn-fb-login"><img src="media/fb_logon.png" class="img-g-login" alt="img"></button>
</div>
</div>
<div class="user-info">
<div class="notifications">
&#x1F514; | <%= 0%>
</div>
<div class="cart">
&#x1F6d2; | <%= 0%>
</div>
</div>
</div>
<div class="space"></div>
<div id="productID" style="display: none;" product_id="<%= key%>"></div>
<div class="new-product-field">
<p>Edit product</p>
<div class="npf-short">
<input required type="text" id="pName" placeholder="Name" value="<%= item.name%>">
</div>
<div class="npf-long">
<input required type="text" id="pDesc" placeholder="Description" value="<%= item.desc%>">
</div>
<input required type="text" id="pLoc" placeholder="Location" value="<%= item.location%>">
<input required type="text" id="pStock" placeholder="Quantity in stock (default: 1)" value="<%= item.stock%>">
<div class="npf-short">
<input required type="text" id="pPrice" placeholder="Price £" value="<%= item.price%>">
</div>
<button id="pSend" onclick={productUpdateEventHandler()}>Update</button>
</div>
<div class="space"></div>
</div>
</main>
<footer>
<div class="links">
<a href="#">Help</a>
<a href="#">Contact</a>
<a href="#">Legal</a>
</div>
<div class="legal">
<a>© GG Sales 2019-2020. All Rights Reserved. </a>
<a class="link" href="#">User Agreement</a>
<a> ,</a>
<a class="link" href="#">Privacy</a>
<a> ,</a>
<a class="link" href="#">Cookies</a>
</div>
<div class="location">
GG Sales US 🇺🇸
</div>
</footer>
<script src="js/fAuth.js"></script>
<script src="js/fdb.js"></script>
</body>
</html>

View File

@ -24,7 +24,7 @@
<div class="navbar"> <div class="navbar">
<div class="logon-crumbs"> <div class="logon-crumbs">
<div id="uname-field" style="display: none;"> <div id="uname-field" style="display: none;">
<a id="uname-dom" class="user-name" href="javascript:;" onclick="my_products();">Unregistered user</a> <a id="uname-dom" class="user-name" href="javascript:;" onclick={my_products()}>Unregistered user</a>
<div class="user-logout"> <div class="user-logout">
<a onclick={signout()}>Log out</a> <a onclick={signout()}>Log out</a>
</div> </div>

View File

@ -61,6 +61,45 @@ function productSubmitEventHandler(){
}) })
} }
function productUpdateEventHandler() {
const submitBtn = document.getElementById('pSend')
if (submitBtn.innerHTML == "Update") {
const nameField = document.getElementById('pName')
const descField = document.getElementById('pDesc')
const locField = document.getElementById('pLoc')
const stockField = document.getElementById('pStock')
const priceField = document.getElementById('pPrice')
// const imgBtn = document.getElementById('pImg')
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
var database = firebase.database()
var productRef = database.ref("/products/"+item_id)
productRef.update({
name: nameField.value,
desc: descField.value,
location: locField.value,
stock: stockField.value,
price: priceField.value
})
.then(function(){
submitBtn.setAttribute("style", "width: 300px; background: #00DD00;cursor: pointer;")
submitBtn.innerHTML = "Done!, Go Home..."
submitBtn.disabled = false
})
}
else {
window.location.replace('home')
}
}
function addItem(item){ function addItem(item){
var database = firebase.database() var database = firebase.database()
var itemRef = database.ref('/products') var itemRef = database.ref('/products')
@ -145,6 +184,16 @@ function purchaseItem() {
} }
function edit_item() {
firebase.auth().currentUser.getIdToken().then(function(idToken) {
var item_id_element = document.getElementById("productID")
var item_id = item_id_element.getAttribute("product_id")
console.log("edit-item?uToken=" + idToken + '&productid=' + item_id)
window.location.replace("edit-item?uToken=" + idToken + '&productid=' + item_id)
})
.catch(e => {console.log(e)})
}
function my_product(productID) { function my_product(productID) {
firebase.auth().currentUser.getIdToken().then(function(idToken) { firebase.auth().currentUser.getIdToken().then(function(idToken) {
console.log("my-products?uToken=" + idToken + '&productid=' + productID) console.log("my-products?uToken=" + idToken + '&productid=' + productID)

View File

@ -73,7 +73,7 @@
<p>Status: <%= publicField %></p> <p>Status: <%= publicField %></p>
<p>Price: £<%= item.price %></p> <p>Price: £<%= item.price %></p>
<div class="product-mgmt-buttons"> <div class="product-mgmt-buttons">
<div class="edit-btn"><button onclick={x()} id="editBtn">Edit</button> </div> <div class="edit-btn"><button onclick={edit_item()} id="editBtn">Edit</button> </div>
<div class="sell-btn"><button onclick={y()} id="sellBtn">Sell</button> </div> <div class="sell-btn"><button onclick={y()} id="sellBtn">Sell</button> </div>
<div class="ship-btn"><button onclick={z()} id="shipBtn">Ship</button> </div> <div class="ship-btn"><button onclick={z()} id="shipBtn">Ship</button> </div>
</div> </div>

View File

@ -114,6 +114,32 @@ app.get('/my-product', function(request, responce){
} }
}) })
app.get('/edit-item', function(request, responce){
if (request.query.uToken && request.query.productid) {
admin.auth().verifyIdToken(request.query.uToken)
.then(function(decodedToken) {
let uid = decodedToken.uid;
var dbRef = database.ref("/products/"+request.query.productid)
dbRef.once('value', function(snapshot){
data = snapshot.val()
if (data.owner == uid) {
responce.render('edit-item.ejs', {item:data, key:request.query.productid})
}
else {
responce.send('<h1 style="color:red;" >Unauthorized user</h1><a href="home">Home</a>')
}
})
})
.catch(function(error) {
console.log(error)
responce.send("<h1>Bad Auth Token</h1><a href='home'>Home</a>")
});
}
else {
responce.send("<h1>No Auth Token Provided</h1><a href='home'>Home</a>")
}
})
app.get('/product', function(request, responce){ app.get('/product', function(request, responce){
if (request.query.productid) { if (request.query.productid) {
var dbRef = database.ref("/products/"+request.query.productid) var dbRef = database.ref("/products/"+request.query.productid)