From ab8eaf26986c9251b1dff00f517c215e6a268a5a Mon Sep 17 00:00:00 2001 From: Max Hunt Date: Fri, 15 May 2020 18:24:51 +0100 Subject: [PATCH] Update --- firebase-debug.log | 16 --- functions/index.js | 84 ++++++++++----- functions/views/404.ejs | 24 +---- functions/views/add-item.ejs | 26 +---- functions/views/css/style.css | 94 +++++++++++++++- functions/views/edit-item.ejs | 24 +---- functions/views/js/fAuth.js | 69 +++++++----- functions/views/js/fdb.js | 148 +++++++++++++------------- functions/views/media/profile.png | Bin 0 -> 41253 bytes functions/views/partials/header.ejs | 8 +- functions/views/user-registration.ejs | 74 +++++++++++++ server.js | 78 +++++++++----- 12 files changed, 404 insertions(+), 241 deletions(-) delete mode 100644 firebase-debug.log create mode 100644 functions/views/media/profile.png create mode 100644 functions/views/user-registration.ejs diff --git a/firebase-debug.log b/firebase-debug.log deleted file mode 100644 index bee8046..0000000 --- a/firebase-debug.log +++ /dev/null @@ -1,16 +0,0 @@ -[debug] [2020-05-14T19:57:05.341Z] ---------------------------------------------------------------------- -[debug] [2020-05-14T19:57:05.343Z] Command: /usr/local/bin/node /usr/local/bin/firebase deploy -[debug] [2020-05-14T19:57:05.343Z] CLI Version: 8.2.0 -[debug] [2020-05-14T19:57:05.343Z] Platform: darwin -[debug] [2020-05-14T19:57:05.343Z] Node Version: v12.16.2 -[debug] [2020-05-14T19:57:05.344Z] Time: Thu May 14 2020 20:57:05 GMT+0100 (British Summer Time) -[debug] [2020-05-14T19:57:05.344Z] ---------------------------------------------------------------------- -[debug] [2020-05-14T19:57:05.344Z] -[debug] [2020-05-14T19:57:05.353Z] > command requires scopes: ["email","openid","https://www.googleapis.com/auth/cloudplatformprojects.readonly","https://www.googleapis.com/auth/firebase","https://www.googleapis.com/auth/cloud-platform"] -[debug] [2020-05-14T19:57:05.354Z] > authorizing via signed-in user -[debug] [2020-05-14T19:57:05.354Z] [iam] checking project project-gg-3b754 for permissions ["cloudfunctions.functions.create","cloudfunctions.functions.delete","cloudfunctions.functions.get","cloudfunctions.functions.list","cloudfunctions.functions.update","cloudfunctions.operations.get","firebase.projects.get","firebasehosting.sites.update"] -[debug] [2020-05-14T19:57:05.356Z] >>> HTTP REQUEST POST https://cloudresourcemanager.googleapis.com/v1/projects/project-gg-3b754:testIamPermissions - {"permissions":["cloudfunctions.functions.create","cloudfunctions.functions.delete","cloudfunctions.functions.get","cloudfunctions.functions.list","cloudfunctions.functions.update","cloudfunctions.operations.get","firebase.projects.get","firebasehosting.sites.update"]} -[debug] [2020-05-14T19:57:06.307Z] <<< HTTP RESPONSE 200 {"content-type":"application/json; charset=UTF-8","vary":"X-Origin, Referer, Origin,Accept-Encoding","date":"Thu, 14 May 2020 19:57:05 GMT","server":"ESF","cache-control":"private","x-xss-protection":"0","x-frame-options":"SAMEORIGIN","x-content-type-options":"nosniff","server-timing":"gfet4t7; dur=669","alt-svc":"h3-27=\":443\"; ma=2592000,h3-25=\":443\"; ma=2592000,h3-T050=\":443\"; ma=2592000,h3-Q050=\":443\"; ma=2592000,h3-Q049=\":443\"; ma=2592000,h3-Q048=\":443\"; ma=2592000,h3-Q046=\":443\"; ma=2592000,h3-Q043=\":443\"; ma=2592000,quic=\":443\"; ma=2592000; v=\"46,43\"","accept-ranges":"none","transfer-encoding":"chunked"} -[debug] [2020-05-14T19:57:06.308Z] >>> HTTP REQUEST POST https://iam.googleapis.com/v1/projects/project-gg-3b754/serviceAccounts/project-gg-3b754@appspot.gserviceaccount.com:testIamPermissions - {"permissions":["iam.serviceAccounts.actAs"]} diff --git a/functions/index.js b/functions/index.js index 16002ee..195e6ff 100644 --- a/functions/index.js +++ b/functions/index.js @@ -48,6 +48,7 @@ function homePage(request, responce) { if (request.query.itemAdded == "true") { x = 'block' } + console.log(data) responce.render('home.ejs', {products: data, message: x}) }) } @@ -111,7 +112,7 @@ 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}) }) @@ -120,7 +121,7 @@ app.get('/my-products', function(request, responce){ .catch(function(error) { console.log(error) responce.send("

Bad Auth Token

Home") - }); + }) } else { responce.send("

No Auth Token Provided

Home") @@ -131,7 +132,7 @@ app.get('/my-product', function(request, responce){ if (request.query.uToken && request.query.productid) { admin.auth().verifyIdToken(request.query.uToken) .then(async function(decodedToken) { - let uid = decodedToken.uid; + let uid = decodedToken.uid let pid = request.query.productid if (await verifyExists(pid)){ if (await verifyOwner(uid, pid)) { @@ -220,6 +221,53 @@ app.get('/product', function(request, responce){ } }) +app.get('/registration', function(request, responce){ + responce.render('user-registration.ejs') +}) + + +app.post('/register-new-user-api', async function(request, responce){ + let rBody = request.body + if (rBody.authToken && rBody.data.fName && rBody.data.lName && rBody.data.address && rBody.data.pPic) { + let uid = false + decodedToken = await admin.auth().verifyIdToken(rBody.authToken).catch(e=>{console.log(e)}) + uid = decodedToken.uid + email = decodedToken.email + if (uid) { + if (await checkUserExists(uid) == false) { + let fName = rBody.data.fName + let lName = rBody.data.lName + let address = rBody.data.address + let pPic = rBody.data.pPic + let uData = { + fName:fName, + lName:lName, + UID:uid, + email:email, + address:address, + pPic:"x" + } + let usersRef = database.ref('/users') + let result = await usersRef.push(uData) + let key = result.key + let imgPath = key + '/' + pPic + let imgRootPath = "/user-img/" + imgPath + let userRef = database.ref('/users/' + key) + userRef.update({pPic:imgPath}) + .then(responce.send({success:true, error:null, imgRef:imgRootPath})) + .catch(e=>{ + responce.send({success:false, error:e}) + }) + } else { + responce.send({success:false, error:'user exists'}) + } + } else { + responce.send({success:false, error:'invalid auth token'}) + } + } else { + responce.send({success:false, error:'invalid data'}) + } +}) app.post('/request-api', async function(request, responce){ if (request.body.prodID && request.body.authToken && request.body.usrMsg) { @@ -397,7 +445,7 @@ app.post('/new-product-api', function(request, responce){ let imageName = image.name let newProductRef = database.ref('/products') - let key = await newProductRef.push(product).then(key => { + newProductRef.push(product).then(key => { let productKey = key.key let imgPath = productKey + '/' + imageName let productRef = database.ref('/products/' + productKey) @@ -478,21 +526,15 @@ async function checkNewUser(user){ let snapshot = await checkUserExists(user.uid) if (snapshot){ let users = snapshot.val() - var keys = Object.keys(users) - uData = users[keys[0]] - let retData = {success:true, userName:uData.fName + " " + uData.lName, address:uData.address} + let keys = Object.keys(users) + let uData = users[keys[0]] + let uName = uData.fName + let retData = {success:true, registered:true, name:uName} return retData } else { - console.log("Creating new user") - let uData = { - fName:user.displayName, - lName:"", - UID:user.uid, - email:user.email, - address:"" - } - return await createNewUser(uData) + let retData = {success:true, registered:false} + return retData } } @@ -503,16 +545,6 @@ async function checkUserExists(uid){ else {return false} } -async function createNewUser(uData){ - let userRef = database.ref('/users') - let x = await userRef.push(uData) - return {success:true, userName:uData.fName + " " + uData.lName, address:uData.address} -} - -async function authorisedToPurchase(uid, pid){ - return true -} - async function verifyExists(pid) { let productRef = database.ref("/products/"+pid) let snapshot = await productRef.once('value') diff --git a/functions/views/404.ejs b/functions/views/404.ejs index a10d989..86ae517 100644 --- a/functions/views/404.ejs +++ b/functions/views/404.ejs @@ -8,26 +8,4 @@ - - - - - - \ No newline at end of file +<%- include("partials/footer") %> \ No newline at end of file diff --git a/functions/views/add-item.ejs b/functions/views/add-item.ejs index f4e7ffc..8577031 100644 --- a/functions/views/add-item.ejs +++ b/functions/views/add-item.ejs @@ -52,7 +52,7 @@

Please log in to continue

-
- 🔔 | <%= 0%> + + 🔔 | <%= 0%> +
- 🛒 | <%= 0%> + + 🛒 | <%= 0%> +
βŠ• diff --git a/functions/views/user-registration.ejs b/functions/views/user-registration.ejs new file mode 100644 index 0000000..4c69b17 --- /dev/null +++ b/functions/views/user-registration.ejs @@ -0,0 +1,74 @@ + + + + + + + GG Prototype + + + + + + + + + + + + + + + +
+
+ + +

Please log in to continue

+ + +
+
+<%- include("partials/footer") %> \ No newline at end of file diff --git a/server.js b/server.js index d2100c5..59de210 100644 --- a/server.js +++ b/server.js @@ -219,6 +219,53 @@ app.get('/product', function(request, responce){ } }) +app.get('/registration', function(request, responce){ + responce.render('user-registration.ejs') +}) + + +app.post('/register-new-user-api', async function(request, responce){ + let rBody = request.body + if (rBody.authToken && rBody.data.fName && rBody.data.lName && rBody.data.address && rBody.data.pPic) { + let uid = false + decodedToken = await admin.auth().verifyIdToken(rBody.authToken).catch(e=>{console.log(e)}) + uid = decodedToken.uid + email = decodedToken.email + if (uid) { + if (await checkUserExists(uid) == false) { + let fName = rBody.data.fName + let lName = rBody.data.lName + let address = rBody.data.address + let pPic = rBody.data.pPic + let uData = { + fName:fName, + lName:lName, + UID:uid, + email:email, + address:address, + pPic:"x" + } + let usersRef = database.ref('/users') + let result = await usersRef.push(uData) + let key = result.key + let imgPath = key + '/' + pPic + let imgRootPath = "/user-img/" + imgPath + let userRef = database.ref('/users/' + key) + userRef.update({pPic:imgPath}) + .then(responce.send({success:true, error:null, imgRef:imgRootPath})) + .catch(e=>{ + responce.send({success:false, error:e}) + }) + } else { + responce.send({success:false, error:'user exists'}) + } + } else { + responce.send({success:false, error:'invalid auth token'}) + } + } else { + responce.send({success:false, error:'invalid data'}) + } +}) app.post('/request-api', async function(request, responce){ if (request.body.prodID && request.body.authToken && request.body.usrMsg) { @@ -396,7 +443,7 @@ app.post('/new-product-api', function(request, responce){ let imageName = image.name let newProductRef = database.ref('/products') - let key = await newProductRef.push(product).then(key => { + newProductRef.push(product).then(key => { let productKey = key.key let imgPath = productKey + '/' + imageName let productRef = database.ref('/products/' + productKey) @@ -477,21 +524,15 @@ async function checkNewUser(user){ let snapshot = await checkUserExists(user.uid) if (snapshot){ let users = snapshot.val() - var keys = Object.keys(users) - uData = users[keys[0]] - let retData = {success:true, userName:uData.fName + " " + uData.lName, address:uData.address} + let keys = Object.keys(users) + let uData = users[keys[0]] + let uName = uData.fName + let retData = {success:true, registered:true, name:uName} return retData } else { - console.log("Creating new user") - let uData = { - fName:user.displayName, - lName:"", - UID:user.uid, - email:user.email, - address:"" - } - return await createNewUser(uData) + let retData = {success:true, registered:false} + return retData } } @@ -502,17 +543,6 @@ async function checkUserExists(uid){ else {return false} } -async function createNewUser(uData){ - let userRef = database.ref('/users') - let x = await userRef.push(uData) - return {success:true, userName:uData.fName + " " + uData.lName, address:uData.address} -} - - -async function authorisedToPurchase(uid, pid){ - return true -} - async function verifyExists(pid) { let productRef = database.ref("/products/"+pid) let snapshot = await productRef.once('value')