From 78b6a213d53f870477d71706dd35d0ae663483f6 Mon Sep 17 00:00:00 2001 From: Aryan Date: Wed, 3 Oct 2018 13:49:38 +0530 Subject: [PATCH 1/3] code cleaned and middleware added --- functions/index.js | 190 ++++--- functions/middlewares/auth.js | 40 ++ package-lock.json | 931 +--------------------------------- 3 files changed, 131 insertions(+), 1030 deletions(-) create mode 100644 functions/middlewares/auth.js diff --git a/functions/index.js b/functions/index.js index 4b078a9d..4a0f8580 100644 --- a/functions/index.js +++ b/functions/index.js @@ -1,142 +1,132 @@ const functions = require('firebase-functions'); const admin = require('firebase-admin'); const jwt = require('jsonwebtoken'); +const express = require('express'); +const bodyParser = require('body-parser'); +const request = require('request'); +const isAuthenticated = require('./middlewares/auth'); admin.initializeApp(); let database = admin.database(); -//login start -exports.googleLogin = functions.https.onRequest(function(req,response){ - let accToken = req.query.accessToken; - const request = require('request'); - request('https://www.googleapis.com/plus/v1/people/me?access_token='+accToken, { json: true }, (err, res, body) => { +let app = express(); +app.use(bodyParser.urlencoded({extended: false})); + + +const googleUrl = 'https://www.googleapis.com/plus/v1/people/me?access_token='; +const key = 'abab'; + +/* +* /googleLogin +* get: +* params: +* accessToken: string +* description: +* for user login +* responses: +* 200: +* description: user logged in +* return: +* token: string +* 400: +* description: error + */ +app.get('/googleLogin', (req, response) => { + request(googleUrl + req.query.accessToken, {json: true}, (err, res, body) => { let data; - if(err) - { - return console.log(err); + if (err) { + return res.status(400).json({success: false, err: err}); } - console.log(body); - if(body.error != null) - { - console.log('error in accessToken'); - data={ - authenticatedRequest:false, - }; - return response.json(data); + if (body.error != null) { + return response.json({ + success: false, err: 'unauthenticated request' + }); } let email1 = body.emails[0].value; - let email = email1.replace(/\./g,','); - console.log(email); - let email_child = "users/"+email; + let email = email1.replace(/\./g, ','); + let email_child = "users/" + email; let ref = database.ref(); - ref.once('value',function(snapshot){ - if(snapshot.hasChild(email_child)) - { - console.log('present'); + ref.once('value', (snapshot) => { + if (snapshot.hasChild(email_child)) { let reff = database.ref(email_child); - let onB; - reff.once('value',function(snap) - { - console.log(snap.val().onBoard); - onB=snap.val().onBoard; - console.log(onB); - data={ - onBoard:onB, - authenticatedRequest:true, - isRegistered:true, - body:body + + reff.once('value', (snap) => { + data = { + onBoard: snap.val().onBoard, + authenticatedRequest: true, + isRegistered: true, + body: body }; - const token = jwt.sign( data ,"abab", { expiresIn: "12h"}); - response.json(token); + + const token = jwt.sign(data, key, {expiresIn: "12h"}); + + response.status(200).json({ + success: true, token: token + }); }); - console.log('onboard is'+onB); } - else - { + else { database.ref(email_child).set({ - onBoard:false, + onBoard: false, email: body.emails[0].value, - name: body.name.givenName+" "+body.name.familyName, + name: body.name.givenName + " " + body.name.familyName, }); - console.log('not present'); - data={ - onBoard:false, - authenticatedRequest:true, - isRegistered:false, - body:body + data = { + onBoard: false, + authenticatedRequest: true, + isRegistered: false, + body: body }; - response.json(data); + response.status(200).json({ + success: true, data: data + }); } }); }); }); -//login end - - -let express = require('express'); -let bodyParser = require('body-parser'); -let app = express(); -app.use(bodyParser.urlencoded({extended:false})); - - -// middleware start -function isAuthenticated(req , res , next) { - if(req.body.accessToken === undefined || req.body.accessToken === '') res.json({error: true}); - else { - jwt.verify(req.body.accessToken, "abab", (err, data) => { - if (err) { - res.json({error: true}); - } - else - { - if (data.error != null) { - return res.json({ - authenticatedRequest: false, - }); - } - else { - let email = data.body.emails[0].value; - let name = data.body.name.givenName+" "+data.body.name.familyName; - console.log(email); - req.body.email1 = email; - req.body.name = name; - next(); - } - } - }); - } -} -// middleware end - - -app.post('/', isAuthenticated ,function(req,response) -{ +/* +* / +* post: +* body: +* phone: Number +* college: string +* year: Number +* description: +* onboarding +* responses: +* 200: +* description: data updated +* return: +* status: boolean +* 400: +* description: incomplete parameters + */ +app.post('/', isAuthenticated, (req, response) => { if (req.body.phone === undefined || req.body.college === undefined || req.body.year === undefined) { - return response.send('please pass valid/complete url parameters'); + return response.status(400).json({ + success: false, err: 'please pass valid/complete url parameters' + }); } - else - { - //console.log(req.body.email1); - //console.log(req.body.name); + else { let email1 = req.body.email1; let email = email1.replace(/\./g, ','); let ref = database.ref('users/'); - let email_child = "users/"+email; + let email_child = "users/" + email; + ref.once('value', function (snapshot) { - console.log(snapshot.val()); - if (snapshot.hasChild(email)) - { - console.log('present'); + if (snapshot.hasChild(email)) { database.ref(email_child).update({ onBoard: true, phone: req.body.phone, college: req.body.college, year: req.body.year, }); - response.send('database updated'); + response.status(200).json({ + success: true + }); } }); } diff --git a/functions/middlewares/auth.js b/functions/middlewares/auth.js new file mode 100644 index 00000000..7131eba8 --- /dev/null +++ b/functions/middlewares/auth.js @@ -0,0 +1,40 @@ +const jwt = require('jsonwebtoken'); + +const key = 'abab'; + +const isAuthenticated = (req, res, next) => { + const token = req.headers.authorization; + + if (token) { + jwt.verify(token, key, (err, data) => { + if (err) { + res.status(401).json({ + success: false, err: 'unauthenticated request' + }); + } + else { + if (data.error != null) { + return res.status(401).json({ + success: false, err: 'unauthenticated request' + }); + } + else { + const email = data.body.emails[0].value; + const name = data.body.name.givenName + " " + data.body.name.familyName; + + req.body.email1 = email; + req.body.name = name; + + next(); + } + } + }); + } + else { + res.status(401).json({ + success: false, err: 'unauthenticated request' + }); + } +}; + +module.exports = isAuthenticated; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index afd02752..48e341a0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,932 +1,3 @@ { - "requires": true, - "lockfileVersion": 1, - "dependencies": { - "@firebase/app": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.3.4.tgz", - "integrity": "sha512-Q6sNpWZ3x+FeuBkLCCRrsOraGJOKVLUCc9Amj8zu2vAC1v2uWifRR6kZ60TrpaIxtY4N6pcPTaG0YIUT5lgeSA==", - "requires": { - "@firebase/app-types": "0.3.2", - "@firebase/util": "0.2.2", - "dom-storage": "2.1.0", - "tslib": "1.9.0", - "xmlhttprequest": "1.8.0" - } - }, - "@firebase/app-types": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.3.2.tgz", - "integrity": "sha512-ZD8lTgW07NGgo75bTyBJA8Lt9+NweNzot7lrsBtIvfciwUzaFJLsv2EShqjBeuhF7RpG6YFucJ6m67w5buCtzw==" - }, - "@firebase/auth": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.7.6.tgz", - "integrity": "sha512-tiX0ZuxlpcE+QLR6dFcSB2lLj/iBFOCSmNKjQSUltWa55psGJX6w5wwXDo+NBA0UFbGMkaC504cUJ3IsAIVyfQ==", - "requires": { - "@firebase/auth-types": "0.3.4" - } - }, - "@firebase/auth-types": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.3.4.tgz", - "integrity": "sha512-0r3gSQk9jw5orFHCTUIgao0zan6dHt2J0BO3t/uEzbod+uwqvUn/gh+yg+kK6HX92Fg8E7y030KX4Bw/aXt0Ew==" - }, - "@firebase/database": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.3.6.tgz", - "integrity": "sha512-r02JOqTLcd2/qn7QkkJvIAxMiMxmeyd5B76kl9hHAs+3cil5mUzHnI3svtb4h0VIJYDHFKJMlVl/bE3GfcTR3A==", - "requires": { - "@firebase/database-types": "0.3.2", - "@firebase/logger": "0.1.1", - "@firebase/util": "0.2.2", - "faye-websocket": "0.11.1", - "tslib": "1.9.0" - } - }, - "@firebase/database-types": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.3.2.tgz", - "integrity": "sha512-9ZYdvYQ6r3aaHJarhUM5Hf6lQWu3ZJme+RR0o8qfBb9L04TL3uNjt+AJFku1ysVPntTn+9GqJjiIB2/OC3JtwA==" - }, - "@firebase/firestore": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-0.8.1.tgz", - "integrity": "sha512-cKs6J7citpK6xYJWGMoXIhBdu4PuTJHpH4z3UjIdz5RP24mrENoCojOdbzVENxSfSQhyX41Ddovykz5OnZXscA==", - "requires": { - "@firebase/firestore-types": "0.7.0", - "@firebase/logger": "0.1.1", - "@firebase/webchannel-wrapper": "0.2.9", - "grpc": "1.13.1", - "tslib": "1.9.0" - } - }, - "@firebase/firestore-types": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-0.7.0.tgz", - "integrity": "sha512-jyKRcKnSh3CSEPL4xGOZNoOXEiv7YmFK/JEcdd/4cAH17/Xo+Pk67gk1E648LRKh6QPghgNvzNTY5R10mKbQNw==" - }, - "@firebase/functions": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.3.1.tgz", - "integrity": "sha512-6A38x7zPU6zCTyOgGx2v+z4ugcsWnciL6YkcZXLNlCLveUmFdL0DmaW5MEBSpSOOe8kOJMl7f3aaD6lWUHNOBg==", - "requires": { - "@firebase/functions-types": "0.2.0", - "@firebase/messaging-types": "0.2.3", - "isomorphic-fetch": "2.2.1", - "tslib": "1.9.0" - } - }, - "@firebase/functions-types": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.2.0.tgz", - "integrity": "sha512-q1FB3YKEAnWd+FpIL5Xn0B1BXO2IowrAdrSViXkFxNZVpp9iCzQ8Ytcbr3V1xUr3dnmoW/V7zkZJZGuwBgiVhw==" - }, - "@firebase/logger": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.1.1.tgz", - "integrity": "sha512-5jn3HHbEfdOwychyIEIkP1cik+MW/vvoOavTOzwDkH+fv6Bx+HBUOzh09M7sCYzXFtKzjbUax9+g39mJNBLklQ==" - }, - "@firebase/messaging": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.3.6.tgz", - "integrity": "sha512-Sz/fWOXMa3HxDZxE64Fm335kwP9um1rmun5PIka7od7I4hZ8US+SjYVyUe6jWTh1V/YjcqDi6Xkhoj2nF8yu9g==", - "requires": { - "@firebase/messaging-types": "0.2.3", - "@firebase/util": "0.2.2", - "tslib": "1.9.0" - } - }, - "@firebase/messaging-types": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.2.3.tgz", - "integrity": "sha512-avwCgZzcx2uxIW/wT3p3G/EyHftIrvMyiTS7AA7dxDlzfx+8dpAeTsb1+jsHJT4F6foSh5HG17Nw8sDzYuxH1Q==" - }, - "@firebase/polyfill": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.3.tgz", - "integrity": "sha512-xs8IZf1WEbufYXyfV8YjmiFZOaujRRq0T03NteihYfuGVTTym7z5SmvLvEHLEUjf2fgeobPEzZ2JgrCQHS+QHw==", - "requires": { - "core-js": "2.5.5", - "promise-polyfill": "7.1.2", - "whatwg-fetch": "2.0.4" - }, - "dependencies": { - "whatwg-fetch": { - "version": "2.0.4", - "resolved": "http://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", - "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" - } - } - }, - "@firebase/storage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.2.3.tgz", - "integrity": "sha512-2sq5jckWszW53gfQMkPNc7EumJ92oErRhzGJANbVzBumwR8qwKZU8/I+/uV9SPK1tVmSUc3S21jdoW5oOJVEuA==", - "requires": { - "@firebase/storage-types": "0.2.3", - "tslib": "1.9.0" - } - }, - "@firebase/storage-types": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.2.3.tgz", - "integrity": "sha512-RaZeam2LgsB7xwAtOQr4G0Geoyf7D5TnLF3a12By6Rh0Z9PqBSlWn0SVYGW3SkmxIdqvWZMZvCyamUlqQvQzWw==" - }, - "@firebase/util": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.2.2.tgz", - "integrity": "sha512-vfRjmCWuxtJx3txHocaNlDwCDwwv6KLL5YtlSNi73wBdvF3UfnpLGrth7G3X6gn5rDhOKamRg2+9L8cfsjSS1A==", - "requires": { - "tslib": "1.9.0" - } - }, - "@firebase/webchannel-wrapper": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.2.9.tgz", - "integrity": "sha512-Hx30hgRw078+39G6GqHuBaW7xCQQjGx7gALtCeKR0fklDzpRazqudjLKV8Rh5LbcdczrgpsOmLuZQAlqbCBaFw==" - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "ascli": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz", - "integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=", - "requires": { - "colour": "0.7.1", - "optjs": "3.2.2" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "bytebuffer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz", - "integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=", - "requires": { - "long": "3.2.0" - } - }, - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wrap-ansi": "2.1.0" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" - }, - "colour": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz", - "integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g=" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "core-js": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.5.tgz", - "integrity": "sha1-sU3ek2xkDAV5prUMq8wTLdYSfjs=" - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" - }, - "dom-storage": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz", - "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==" - }, - "encoding": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", - "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", - "requires": { - "iconv-lite": "0.4.24" - } - }, - "faye-websocket": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.1.tgz", - "integrity": "sha1-8O/hjE9W5PQK/H4Gxxn9XuYYjzg=", - "requires": { - "websocket-driver": "0.7.0" - } - }, - "firebase": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/firebase/-/firebase-5.5.1.tgz", - "integrity": "sha512-2n8/7+qCcXpEC/4fNB2qWgX0yQx7U2EUoyh6YxgctSyd5gyqtpbjcTMqrCnjMHA514eduVZmjoI+C8GeKXZEUw==", - "requires": { - "@firebase/app": "0.3.4", - "@firebase/auth": "0.7.6", - "@firebase/database": "0.3.6", - "@firebase/firestore": "0.8.1", - "@firebase/functions": "0.3.1", - "@firebase/messaging": "0.3.6", - "@firebase/polyfill": "0.3.3", - "@firebase/storage": "0.2.3" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "grpc": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/grpc/-/grpc-1.13.1.tgz", - "integrity": "sha512-yl0xChnlUISTefOPU2NQ1cYPh5m/DTatEUV6jdRyQPE9NCrtPq7Gn6J2alMTglN7ufYbJapOd00dvhGurHH6HQ==", - "requires": { - "lodash": "4.17.11", - "nan": "2.11.0", - "node-pre-gyp": "0.10.3", - "protobufjs": "5.0.3" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.3.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "requires": { - "balanced-match": "1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.0.1", - "bundled": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true - }, - "debug": { - "version": "2.6.9", - "bundled": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "requires": { - "minipass": "2.3.3" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "requires": { - "aproba": "1.2.0", - "console-control-strings": "1.1.0", - "has-unicode": "2.0.1", - "object-assign": "4.1.1", - "signal-exit": "3.0.2", - "string-width": "1.0.2", - "strip-ansi": "3.0.1", - "wide-align": "1.1.3" - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true - }, - "iconv-lite": { - "version": "0.4.23", - "bundled": true, - "requires": { - "safer-buffer": "2.1.2" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "requires": { - "minimatch": "3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true - }, - "ini": { - "version": "1.3.5", - "bundled": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "requires": { - "brace-expansion": "1.1.11" - } - }, - "minimist": { - "version": "1.2.0", - "bundled": true - }, - "minipass": { - "version": "2.3.3", - "bundled": true, - "requires": { - "safe-buffer": "5.1.2", - "yallist": "3.0.2" - } - }, - "minizlib": { - "version": "1.1.0", - "bundled": true, - "requires": { - "minipass": "2.3.3" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "bundled": true - } - } - }, - "ms": { - "version": "2.0.0", - "bundled": true - }, - "needle": { - "version": "2.2.1", - "bundled": true, - "requires": { - "debug": "2.6.9", - "iconv-lite": "0.4.23", - "sax": "1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.10.3", - "bundled": true, - "requires": { - "detect-libc": "1.0.3", - "mkdirp": "0.5.1", - "needle": "2.2.1", - "nopt": "4.0.1", - "npm-packlist": "1.1.11", - "npmlog": "4.1.2", - "rc": "1.2.8", - "rimraf": "2.6.2", - "semver": "5.5.0", - "tar": "4.4.4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "requires": { - "abbrev": "1.1.1", - "osenv": "0.1.5" - } - }, - "npm-bundled": { - "version": "1.0.3", - "bundled": true - }, - "npm-packlist": { - "version": "1.1.11", - "bundled": true, - "requires": { - "ignore-walk": "3.0.1", - "npm-bundled": "1.0.3" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "requires": { - "are-we-there-yet": "1.1.5", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "requires": { - "deep-extend": "0.6.0", - "ini": "1.3.5", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "requires": { - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "2.0.0", - "safe-buffer": "5.1.2", - "string_decoder": "1.1.1", - "util-deprecate": "1.0.2" - } - }, - "rimraf": { - "version": "2.6.2", - "bundled": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true - }, - "sax": { - "version": "1.2.4", - "bundled": true - }, - "semver": { - "version": "5.5.0", - "bundled": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "requires": { - "safe-buffer": "5.1.2" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true - }, - "tar": { - "version": "4.4.4", - "bundled": true, - "requires": { - "chownr": "1.0.1", - "fs-minipass": "1.2.5", - "minipass": "2.3.3", - "minizlib": "1.1.0", - "mkdirp": "0.5.1", - "safe-buffer": "5.1.2", - "yallist": "3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true - }, - "yallist": { - "version": "3.0.2", - "bundled": true - } - } - }, - "http-parser-js": { - "version": "0.4.13", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.13.tgz", - "integrity": "sha1-O9bW/ebjFyyTNMOzO2wZPYD+ETc=" - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": "2.1.2" - } - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" - }, - "isomorphic-fetch": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", - "integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=", - "requires": { - "node-fetch": "1.7.3", - "whatwg-fetch": "3.0.0" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "requires": { - "invert-kv": "1.0.0" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "long": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz", - "integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s=" - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "1.1.11" - } - }, - "nan": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.0.tgz", - "integrity": "sha512-F4miItu2rGnV2ySkXOQoA8FKz/SR2Q2sWP0sbTxNxz/tuokeC8WxOhPMcwi0qIyGtVn/rrSeLbvVkznqCdwYnw==" - }, - "node-fetch": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", - "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", - "requires": { - "encoding": "0.1.12", - "is-stream": "1.1.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1.0.2" - } - }, - "optjs": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz", - "integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4=" - }, - "os-locale": { - "version": "1.4.0", - "resolved": "http://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "requires": { - "lcid": "1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "promise-polyfill": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-7.1.2.tgz", - "integrity": "sha512-FuEc12/eKqqoRYIGBrUptCBRhobL19PS2U31vMNTfyck1FxPyMfgsXyW4Mav85y/ZN1hop3hOwRlUDok23oYfQ==" - }, - "protobufjs": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz", - "integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==", - "requires": { - "ascli": "1.0.1", - "bytebuffer": "5.0.1", - "glob": "7.1.3", - "yargs": "3.32.0" - } - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "2.1.1" - } - }, - "tslib": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.0.tgz", - "integrity": "sha512-f/qGG2tUkrISBlQZEjEqoZ3B2+npJjIf04H1wuAv9iA8i04Icp+61KRXxFdha22670NJopsZCIjhC3SnjPRKrQ==" - }, - "websocket-driver": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", - "integrity": "sha1-DK+dLXVdk67gSdS90NP+LMoqJOs=", - "requires": { - "http-parser-js": "0.4.13", - "websocket-extensions": "0.1.3" - } - }, - "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" - }, - "whatwg-fetch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", - "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==" - }, - "window-size": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", - "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=" - }, - "wrap-ansi": { - "version": "2.1.0", - "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", - "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "xmlhttprequest": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" - }, - "yargs": { - "version": "3.32.0", - "resolved": "http://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", - "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", - "requires": { - "camelcase": "2.1.1", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "os-locale": "1.4.0", - "string-width": "1.0.2", - "window-size": "0.1.4", - "y18n": "3.2.1" - } - } - } + "lockfileVersion": 1 } From d3876caeaa9ec72704df529e8723464a7a024363 Mon Sep 17 00:00:00 2001 From: Aryan Date: Wed, 3 Oct 2018 13:59:46 +0530 Subject: [PATCH 2/3] config file added --- functions/config.js | 8 ++++++++ functions/index.js | 4 ++-- functions/middlewares/auth.js | 5 ++--- 3 files changed, 12 insertions(+), 5 deletions(-) create mode 100644 functions/config.js diff --git a/functions/config.js b/functions/config.js new file mode 100644 index 00000000..45d0f680 --- /dev/null +++ b/functions/config.js @@ -0,0 +1,8 @@ + + +const config = { + key: 'abab', + +}; + +module.exports = config; \ No newline at end of file diff --git a/functions/index.js b/functions/index.js index 4a0f8580..c808f614 100644 --- a/functions/index.js +++ b/functions/index.js @@ -5,6 +5,7 @@ const express = require('express'); const bodyParser = require('body-parser'); const request = require('request'); const isAuthenticated = require('./middlewares/auth'); +const config = require('./config'); admin.initializeApp(); let database = admin.database(); @@ -14,7 +15,6 @@ app.use(bodyParser.urlencoded({extended: false})); const googleUrl = 'https://www.googleapis.com/plus/v1/people/me?access_token='; -const key = 'abab'; /* * /googleLogin @@ -60,7 +60,7 @@ app.get('/googleLogin', (req, response) => { body: body }; - const token = jwt.sign(data, key, {expiresIn: "12h"}); + const token = jwt.sign(data, config.key, {expiresIn: "12h"}); response.status(200).json({ success: true, token: token diff --git a/functions/middlewares/auth.js b/functions/middlewares/auth.js index 7131eba8..3345d71e 100644 --- a/functions/middlewares/auth.js +++ b/functions/middlewares/auth.js @@ -1,12 +1,11 @@ const jwt = require('jsonwebtoken'); - -const key = 'abab'; +const config = require('../config'); const isAuthenticated = (req, res, next) => { const token = req.headers.authorization; if (token) { - jwt.verify(token, key, (err, data) => { + jwt.verify(token, config.key, (err, data) => { if (err) { res.status(401).json({ success: false, err: 'unauthenticated request' From 9da6e50ad9da65abb83469345793a6a94df5108a Mon Sep 17 00:00:00 2001 From: Aryan Date: Wed, 3 Oct 2018 21:29:07 +0530 Subject: [PATCH 3/3] optimized the code --- functions/index.js | 200 ++++++++-------------------------- functions/middlewares/auth.js | 5 +- 2 files changed, 50 insertions(+), 155 deletions(-) diff --git a/functions/index.js b/functions/index.js index 62c743a8..851bce5e 100644 --- a/functions/index.js +++ b/functions/index.js @@ -1,11 +1,8 @@ const functions = require('firebase-functions'); const admin = require('firebase-admin'); -const jwt = require('jsonwebtoken'); const express = require('express'); const bodyParser = require('body-parser'); -const request = require('request'); const isAuthenticated = require('./middlewares/auth'); -const config = require('./config'); admin.initializeApp(); let database = admin.database(); @@ -14,168 +11,65 @@ let app = express(); app.use(bodyParser.urlencoded({extended: false})); -const googleUrl = 'https://www.googleapis.com/plus/v1/people/me?access_token='; - -/* -* /googleLogin -* get: -* params: -* accessToken: string -* description: -* for user login -* responses: -* 200: -* description: user logged in -* return: -* token: string -* 400: -* description: error - */ -app.get('/googleLogin', (req, response) => { - request(googleUrl + req.query.accessToken, {json: true}, (err, res, body) => { - let data; - if (err) { - return res.status(400).json({success: false, err: err}); - } - if (body.error != null) { - return response.json({ - success: false, err: 'unauthenticated request' - }); - } - - let email1 = body.emails[0].value; - let email = email1.replace(/\./g, ','); - let email_child = "users/" + email; - let ref = database.ref(); - - ref.once('value', (snapshot) => { - if (snapshot.hasChild(email_child)) { - let reff = database.ref(email_child); - - reff.once('value', (snap) => { - data = { - onBoard: snap.val().onBoard, - authenticatedRequest: true, - isRegistered: true, - body: body - }; - - const token = jwt.sign(data, config.key, {expiresIn: "12h"}); - - response.status(200).json({ - success: true, token: token - }); - }); - } - else { - database.ref(email_child).set({ - onBoard: false, - email: body.emails[0].value, - name: body.name.givenName + " " + body.name.familyName, - }); - data = { - onBoard: false, - authenticatedRequest: true, - isRegistered: false, - body: body - }; - response.status(200).json({ - success: true, data: data - }); - } - }); - }); -}); - -/* -* / -* post: -* body: -* phone: Number -* college: string -* year: Number -* description: -* onboarding -* responses: -* 200: -* description: data updated -* return: -* status: boolean -* 400: -* description: incomplete parameters - */ -app.post('/', isAuthenticated, (req, response) => { - if (req.body.phone === undefined || req.body.college === undefined || req.body.year === undefined) { - return response.status(400).json({ - success: false, err: 'please pass valid/complete url parameters' - }); - } - else { - let email1 = req.body.email1; - let email = email1.replace(/\./g, ','); - let ref = database.ref('users/'); - let email_child = "users/" + email; - - ref.once('value', function (snapshot) { - if (snapshot.hasChild(email)) { - database.ref(email_child).update({ - onBoard: true, - phone: req.body.phone, - college: req.body.college, - year: req.body.year, - }); - response.status(200).json({ - success: true - }); - } - }); - } -}); - -exports.signUp = functions.https.onRequest(app); - - - //<--------Random Fact Generation----------> //Generates random fact about techspardha. -exports.randomFact = functions.https.onRequest((request , response) => { - const numberOfLines = 8; - const randomIndex = Math.floor(Math.random() * numberOfLines); - database.ref('/facts/' + randomIndex).on('value',function(snapshot){ - console.log(snapshot.val()); - response.status(401).json({ - message : snapshot.val() +app.get('/randomFact', (request, response) => { + const numberOfLines = 8; + const randomIndex = Math.floor(Math.random() * numberOfLines); + database.ref('/facts/' + randomIndex).on('value', (snapshot) => { + response.status(200).json({ + success: true, + message: snapshot.val() + }); }); - }); }); //<------Returning the array of all the videos------> //Returns the array of videos containing title and url of a video. -exports.getVideo = functions.https.onRequest((request , response) => { - let items = []; - database.ref('/videos').on('value', function(snapshot) { - snapshot.forEach(function(childSnapshot) { - items.push(childSnapshot.key,{ - title : childSnapshot.val().title, - url : childSnapshot.val().url - }); +app.get('/video', (request, response) => { + let items = []; + database.ref('/videos').on('value', (snapshot) => { + snapshot.forEach((childSnapshot) => { + items.push(childSnapshot.key, { + title: childSnapshot.val().title, + url: childSnapshot.val().url + }); + }); }); - }); - response.status(401).json(items); -}); + response.status(200).json({ + success: true, + items: items + }); +}); //<-----Adding query to database-------> //only add newly asked query to the database. -exports.addQuery = functions.https.onRequest((request,response)=>{ - const query = request.query.text; - var newPostKey = admin.database().ref().child('queries').push().key; - var updates = {}; - updates['/queries/' + newPostKey] = query; - database.ref().update(updates); - response.status(401).json({ - message : "query successfully added" - }); +app.post('/query', isAuthenticated, (request, response) => { + const query = request.body.text; + if (query) { + let newPostKey = admin.database().ref().child('queries').push().key; + let updates = {}; + + let email = request.body.email; + email = email.replace(/,/g, '.'); + + updates['/queries/' + newPostKey] = {email: email, query: query}; + database.ref().update(updates); + response.status(200).json({ + success: true, + message: "query successfully added" + }); + } + else { + response.status(400).json({ + success: false, + message: "query text not defined" + }) + } }); + +exports.api = functions.https.onRequest(app); + diff --git a/functions/middlewares/auth.js b/functions/middlewares/auth.js index 3345d71e..84f09819 100644 --- a/functions/middlewares/auth.js +++ b/functions/middlewares/auth.js @@ -18,10 +18,11 @@ const isAuthenticated = (req, res, next) => { }); } else { - const email = data.body.emails[0].value; + let email = data.body.emails[0].value; + email = email.replace(/\./g, ','); const name = data.body.name.givenName + " " + data.body.name.familyName; - req.body.email1 = email; + req.body.email = email; req.body.name = name; next();