From 2c40abe6f40b0151a7df734eaa45ee8572550f6a Mon Sep 17 00:00:00 2001 From: Vish Misir Date: Sat, 18 Nov 2017 20:22:19 -0500 Subject: [PATCH 1/7] login template --- backend/controllers/login.js | 9 +- backend/db/config/config.json | 4 +- backend/views/login.pug | 4 +- package-lock.json | 985 ++-------------------------------- package.json | 7 +- 5 files changed, 46 insertions(+), 963 deletions(-) diff --git a/backend/controllers/login.js b/backend/controllers/login.js index 393a425..91400ee 100644 --- a/backend/controllers/login.js +++ b/backend/controllers/login.js @@ -2,10 +2,10 @@ const express = require('express'); const router = express.Router(); const passport = require('../middlewares/auth'); - router.get('/', function (req, res) { res.render('login'); }); + router.post('/', function (req, res) { passport.authenticate('local', { successRedirect: '/timeline', @@ -13,4 +13,9 @@ router.post('/', function (req, res) { })(req, res); }); -module.exports = router; \ No newline at end of file +router.get('/google', function (req, res) { + // handle with passport + res.send('Logging in with Google'); +}); + +module.exports = router; diff --git a/backend/db/config/config.json b/backend/db/config/config.json index d9040ec..a2e6ca2 100644 --- a/backend/db/config/config.json +++ b/backend/db/config/config.json @@ -1,8 +1,8 @@ { "development": { "username": "techsin", - "password": null, - "database": "dailysos", + "password": 1, + "database": "dailysos_development", "host": "127.0.0.1", "dialect": "postgres" }, diff --git a/backend/views/login.pug b/backend/views/login.pug index 9230c36..4cf4554 100644 --- a/backend/views/login.pug +++ b/backend/views/login.pug @@ -17,7 +17,7 @@ block body h3 Quickly Login with these instead .btns a.btn.fb(href="#") Facebook - a.btn.google(href="#") Google + a.btn.google(href="/login/google") Google a.btn.reddit(href="#") Reddit a.btn.github(href="#") Github - \ No newline at end of file + diff --git a/package-lock.json b/package-lock.json index 7eb6971..b93bbbc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,14 +5,14 @@ "requires": true, "dependencies": { "@types/geojson": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-1.0.5.tgz", - "integrity": "sha512-Vv/xcob92T/Vncg/AvPMYS0R2a+PYBnnTGNb7bE8jyqEXqq08Tp1frhx6+ExKCImyQq6iLfqjeXt/Wtsh8Sjgw==" + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-1.0.6.tgz", + "integrity": "sha512-Xqg/lIZMrUd0VRmSRbCAewtwGZiAk3mEUDvV4op1tGl+LvyPcb/MIOSxTl9z+9+J+R4/vpjiCAT4xeKzH9ji1w==" }, "@types/node": { - "version": "8.0.34", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.34.tgz", - "integrity": "sha512-Jnmm57+nHqvJUPwUzt1CLoLzFtF2B2vgG7cWFut+a4nqTp9/L6pL0N+o0Jt3V7AQnCKMsPEqQpLFZYleBCdq3w==" + "version": "8.0.50", + "resolved": "https://registry.npmjs.org/@types/node/-/node-8.0.50.tgz", + "integrity": "sha512-N9OVsMBspboNvYaLAQnLEhb2eQ96lavogMR5LoH5k8nb1PvBZHSBFhzhsq2LNzGTBBOtBviOc1GiSu+wlM/pGw==" }, "abbrev": { "version": "1.1.1", @@ -2186,7 +2186,6 @@ "requires": { "anymatch": "1.3.2", "async-each": "1.0.1", - "fsevents": "1.1.2", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -2436,14 +2435,6 @@ "integrity": "sha1-PbJPlz9LkjsOgvYZzg3wJBHKYj0=", "dev": true }, - "connect-pg-simple": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/connect-pg-simple/-/connect-pg-simple-4.2.1.tgz", - "integrity": "sha1-vX62jZgybdsBq7ljzTAW9+weKSY=", - "requires": { - "pg": "6.4.2" - } - }, "connect-session-sequelize": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/connect-session-sequelize/-/connect-session-sequelize-5.0.1.tgz", @@ -3757,905 +3748,6 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, - "fsevents": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", - "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", - "dev": true, - "optional": true, - "requires": { - "nan": "2.7.0", - "node-pre-gyp": "0.6.36" - }, - "dependencies": { - "abbrev": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "ajv": { - "version": "4.11.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "co": "4.6.0", - "json-stable-stringify": "1.0.1" - } - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "aproba": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "1.0.0", - "readable-stream": "2.2.9" - } - }, - "asn1": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "assert-plus": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "asynckit": { - "version": "0.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws-sign2": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "aws4": { - "version": "1.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "balanced-match": { - "version": "0.4.2", - "bundled": true, - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "tweetnacl": "0.14.5" - } - }, - "block-stream": { - "version": "0.0.9", - "bundled": true, - "dev": true, - "requires": { - "inherits": "2.0.3" - } - }, - "boom": { - "version": "2.10.1", - "bundled": true, - "dev": true, - "requires": { - "hoek": "2.16.3" - } - }, - "brace-expansion": { - "version": "1.1.7", - "bundled": true, - "dev": true, - "requires": { - "balanced-match": "0.4.2", - "concat-map": "0.0.1" - } - }, - "buffer-shims": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "caseless": { - "version": "0.12.0", - "bundled": true, - "dev": true, - "optional": true - }, - "co": { - "version": "4.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "combined-stream": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "requires": { - "delayed-stream": "1.0.0" - } - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "cryptiles": { - "version": "2.0.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "boom": "2.10.1" - } - }, - "dashdash": { - "version": "1.14.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "debug": { - "version": "2.6.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "2.0.0" - } - }, - "deep-extend": { - "version": "0.4.2", - "bundled": true, - "dev": true, - "optional": true - }, - "delayed-stream": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "ecc-jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "extend": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "extsprintf": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "bundled": true, - "dev": true, - "optional": true - }, - "form-data": { - "version": "2.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asynckit": "0.4.0", - "combined-stream": "1.0.5", - "mime-types": "2.1.15" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "fstream": { - "version": "1.0.11", - "bundled": true, - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "inherits": "2.0.3", - "mkdirp": "0.5.1", - "rimraf": "2.6.1" - } - }, - "fstream-ignore": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fstream": "1.0.11", - "inherits": "2.0.3", - "minimatch": "3.0.4" - } - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "1.1.1", - "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.2" - } - }, - "getpass": { - "version": "0.1.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "glob": { - "version": "7.1.2", - "bundled": true, - "dev": 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" - } - }, - "graceful-fs": { - "version": "4.1.11", - "bundled": true, - "dev": true - }, - "har-schema": { - "version": "1.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "har-validator": { - "version": "4.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ajv": "4.11.8", - "har-schema": "1.0.5" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "hawk": { - "version": "3.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "boom": "2.10.1", - "cryptiles": "2.0.5", - "hoek": "2.16.3", - "sntp": "1.0.9" - } - }, - "hoek": { - "version": "2.16.3", - "bundled": true, - "dev": true - }, - "http-signature": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "0.2.0", - "jsprim": "1.4.0", - "sshpk": "1.13.0" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "dev": true - }, - "ini": { - "version": "1.3.4", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "is-typedarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true - }, - "isstream": { - "version": "0.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "jodid25519": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsbn": "0.1.1" - } - }, - "jsbn": { - "version": "0.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "json-schema": { - "version": "0.2.3", - "bundled": true, - "dev": true, - "optional": true - }, - "json-stable-stringify": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "jsonify": "0.0.0" - } - }, - "json-stringify-safe": { - "version": "5.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "jsonify": { - "version": "0.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "jsprim": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.0.2", - "json-schema": "0.2.3", - "verror": "1.3.6" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "mime-db": { - "version": "1.27.0", - "bundled": true, - "dev": true - }, - "mime-types": { - "version": "2.1.15", - "bundled": true, - "dev": true, - "requires": { - "mime-db": "1.27.0" - } - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "requires": { - "brace-expansion": "1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "node-pre-gyp": { - "version": "0.6.36", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "mkdirp": "0.5.1", - "nopt": "4.0.1", - "npmlog": "4.1.0", - "rc": "1.2.1", - "request": "2.81.0", - "rimraf": "2.6.1", - "semver": "5.3.0", - "tar": "2.2.1", - "tar-pack": "3.4.0" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1.1.0", - "osenv": "0.1.4" - } - }, - "npmlog": { - "version": "4.1.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "1.1.4", - "console-control-strings": "1.1.0", - "gauge": "2.7.4", - "set-blocking": "2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "oauth-sign": { - "version": "0.8.2", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "requires": { - "wrappy": "1.0.2" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "1.0.2", - "os-tmpdir": "1.0.2" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "performance-now": { - "version": "0.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "1.0.7", - "bundled": true, - "dev": true - }, - "punycode": { - "version": "1.4.1", - "bundled": true, - "dev": true, - "optional": true - }, - "qs": { - "version": "6.4.0", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "0.4.2", - "ini": "1.3.4", - "minimist": "1.2.0", - "strip-json-comments": "2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.2.9", - "bundled": true, - "dev": true, - "requires": { - "buffer-shims": "1.0.0", - "core-util-is": "1.0.2", - "inherits": "2.0.3", - "isarray": "1.0.0", - "process-nextick-args": "1.0.7", - "string_decoder": "1.0.1", - "util-deprecate": "1.0.2" - } - }, - "request": { - "version": "2.81.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aws-sign2": "0.6.0", - "aws4": "1.6.0", - "caseless": "0.12.0", - "combined-stream": "1.0.5", - "extend": "3.0.1", - "forever-agent": "0.6.1", - "form-data": "2.1.4", - "har-validator": "4.2.1", - "hawk": "3.1.3", - "http-signature": "1.1.1", - "is-typedarray": "1.0.0", - "isstream": "0.1.2", - "json-stringify-safe": "5.0.1", - "mime-types": "2.1.15", - "oauth-sign": "0.8.2", - "performance-now": "0.2.0", - "qs": "6.4.0", - "safe-buffer": "5.0.1", - "stringstream": "0.0.5", - "tough-cookie": "2.3.2", - "tunnel-agent": "0.6.0", - "uuid": "3.0.1" - } - }, - "rimraf": { - "version": "2.6.1", - "bundled": true, - "dev": true, - "requires": { - "glob": "7.1.2" - } - }, - "safe-buffer": { - "version": "5.0.1", - "bundled": true, - "dev": true - }, - "semver": { - "version": "5.3.0", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sntp": { - "version": "1.0.9", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "hoek": "2.16.3" - } - }, - "sshpk": { - "version": "1.13.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "asn1": "0.2.3", - "assert-plus": "1.0.0", - "bcrypt-pbkdf": "1.0.1", - "dashdash": "1.14.1", - "ecc-jsbn": "0.1.1", - "getpass": "0.1.7", - "jodid25519": "1.0.2", - "jsbn": "0.1.1", - "tweetnacl": "0.14.5" - }, - "dependencies": { - "assert-plus": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" - } - }, - "string_decoder": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "stringstream": { - "version": "0.0.5", - "bundled": true, - "dev": true, - "optional": true - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "2.1.1" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "2.2.1", - "bundled": true, - "dev": true, - "requires": { - "block-stream": "0.0.9", - "fstream": "1.0.11", - "inherits": "2.0.3" - } - }, - "tar-pack": { - "version": "3.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "2.6.8", - "fstream": "1.0.11", - "fstream-ignore": "1.0.5", - "once": "1.4.0", - "readable-stream": "2.2.9", - "rimraf": "2.6.1", - "tar": "2.2.1", - "uid-number": "0.0.6" - } - }, - "tough-cookie": { - "version": "2.3.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "punycode": "1.4.1" - } - }, - "tunnel-agent": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "bundled": true, - "dev": true, - "optional": true - }, - "uid-number": { - "version": "0.0.6", - "bundled": true, - "dev": true, - "optional": true - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true - }, - "uuid": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "verror": { - "version": "1.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "extsprintf": "1.0.2" - } - }, - "wide-align": { - "version": "1.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "1.0.2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true - } - } - }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -4671,9 +3763,9 @@ } }, "generic-pool": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.1.8.tgz", - "integrity": "sha1-CYRLZUW8kXfsIYvTXUrYlMZb4nE=" + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.3.tgz", + "integrity": "sha1-eAw29p360FpaBF3Te+etyhGk9v8=" }, "get-caller-file": { "version": "1.0.2", @@ -6652,9 +5744,9 @@ "integrity": "sha1-VtoaLRy/AdOLfhr8McELz6GSkWc=" }, "moment-timezone": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.13.tgz", - "integrity": "sha1-mc5cfYJyYusPH3AgRBd/YHRde5A=", + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.14.tgz", + "integrity": "sha1-TrOP+VOLgBCLpGekWPPtQmjM/LE=", "requires": { "moment": "2.19.1" } @@ -6695,13 +5787,6 @@ "duplexer2": "0.0.2" } }, - "nan": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.7.0.tgz", - "integrity": "sha1-2Vv3IeyHfgjbJ27T/G63j5CDrUY=", - "dev": true, - "optional": true - }, "natives": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.0.tgz", @@ -7407,11 +6492,6 @@ "object-assign": "4.1.0" }, "dependencies": { - "generic-pool": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-2.4.3.tgz", - "integrity": "sha1-eAw29p360FpaBF3Te+etyhGk9v8=" - }, "object-assign": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", @@ -8363,9 +7443,9 @@ } }, "retry-as-promised": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.3.1.tgz", - "integrity": "sha1-91BZGD+XMHccCbrR7tV1N5McvJ0=", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.3.2.tgz", + "integrity": "sha1-zZdO5P2bX+A8vzGHHuSCIcB3N7c=", "requires": { "bluebird": "3.5.1", "debug": "2.6.9" @@ -8469,36 +7549,33 @@ } }, "sequelize": { - "version": "4.13.9", - "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-4.13.9.tgz", - "integrity": "sha512-oh6On5Npjx2cc0Mr8+vbii1pFAVkqthLnY+33s4bogRSGPdrRL6eBRDmjZT/X5c7JW9ZR7G+R9+Wq+hYsDae2g==", + "version": "4.22.5", + "resolved": "https://registry.npmjs.org/sequelize/-/sequelize-4.22.5.tgz", + "integrity": "sha512-PJbaIJVjVlFuaKJ9+nhslReGIEI5cNDnnoG9Dgh7SPHogN3UkAJM8MZKfgf2K81XsSbq4rfq5CLKvWgFUwwUlA==", "requires": { "bluebird": "3.5.1", "cls-bluebird": "2.0.1", "debug": "3.1.0", "depd": "1.1.1", "dottie": "2.0.0", - "generic-pool": "3.1.8", + "generic-pool": "3.2.0", "inflection": "1.12.0", "lodash": "4.17.4", "moment": "2.19.1", - "moment-timezone": "0.5.13", - "retry-as-promised": "2.3.1", + "moment-timezone": "0.5.14", + "retry-as-promised": "2.3.2", "semver": "5.4.1", "terraformer-wkt-parser": "1.1.2", "toposort-class": "1.0.1", "uuid": "3.1.0", - "validator": "8.2.0", + "validator": "9.1.1", "wkx": "0.4.2" }, "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } + "generic-pool": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/generic-pool/-/generic-pool-3.2.0.tgz", + "integrity": "sha512-JjcXDHT84icN/kFaF5+rNd1trZsgJFVqTSgM9dv6eayxSIQKMq0ilBJ+5pvf0SgimacMlZEsav4oL+4dUE4E2g==" }, "lodash": { "version": "4.17.4", @@ -9214,7 +8291,7 @@ "resolved": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.8.tgz", "integrity": "sha1-UeCtiXRvzyFh3G9lqnDkI3fItZM=", "requires": { - "@types/geojson": "1.0.5" + "@types/geojson": "1.0.6" } }, "terraformer-wkt-parser": { @@ -9698,9 +8775,9 @@ } }, "validator": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/validator/-/validator-8.2.0.tgz", - "integrity": "sha512-Yw5wW34fSv5spzTXNkokD6S6/Oq92d8q/t14TqsS3fAiA1RYnxSFSIZ+CY3n6PGGRCq5HhJTSepQvFUS2QUDxA==" + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/validator/-/validator-9.1.1.tgz", + "integrity": "sha512-1TGGX1GKilfmcEa9rm+9nI9AqIUQK8oj4jZI0DmTGLTPM5jmowBBhyBIHCks73+P1QPZk2i6oOYUq583uOetHQ==" }, "value-equal": { "version": "0.4.0", @@ -10188,7 +9265,7 @@ "resolved": "https://registry.npmjs.org/wkx/-/wkx-0.4.2.tgz", "integrity": "sha1-d201pjSlwi5lbkdEvetU+D/Szo0=", "requires": { - "@types/node": "8.0.34" + "@types/node": "8.0.50" } }, "wrap-ansi": { diff --git a/package.json b/package.json index c4fd7bf..0c17e60 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "main": "app.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", - "start": "node app.js" + "start": "node app.js", + "devstart": "nodemon app.js" }, "repository": { "type": "git", @@ -32,7 +33,7 @@ "morgan": "^1.9.0", "passport": "^0.4.0", "passport-local": "^1.0.0", - "pg": "6.4.2", + "pg": "^6.4.2", "pg-hstore": "^2.3.2", "pug": "^2.0.0-rc.4", "react": "^16.0.0", @@ -40,7 +41,7 @@ "react-ga": "^2.3.5", "react-router": "^4.2.0", "react-router-dom": "^4.2.2", - "sequelize": "^4.13.9", + "sequelize": "^4.22.5", "serve-favicon": "^2.4.5" }, "devDependencies": { From 0aedd1e1a44804f23ea668f36802fd1502c5de8a Mon Sep 17 00:00:00 2001 From: Vish Misir Date: Sun, 19 Nov 2017 13:30:28 -0500 Subject: [PATCH 2/7] configure passport --- .gitignore | 4 +++- backend/db/config/config.json | 23 ----------------------- config/passport-setup.js | 13 +++++++++++++ package-lock.json | 29 +++++++++++++++++++++++++++++ package.json | 1 + 5 files changed, 46 insertions(+), 24 deletions(-) delete mode 100644 backend/db/config/config.json create mode 100644 config/passport-setup.js diff --git a/.gitignore b/.gitignore index d159068..0c8a41d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,6 @@ npm-debug.log *.env .DS_Store Dockerfile -docker-compose.yml \ No newline at end of file +docker-compose.yml +backend/db/config/config.json +config/keys.js diff --git a/backend/db/config/config.json b/backend/db/config/config.json deleted file mode 100644 index a2e6ca2..0000000 --- a/backend/db/config/config.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "development": { - "username": "techsin", - "password": 1, - "database": "dailysos_development", - "host": "127.0.0.1", - "dialect": "postgres" - }, - "test": { - "username": "root", - "password": null, - "database": "database_test", - "host": "127.0.0.1", - "dialect": "postgres" - }, - "production": { - "username": "root", - "password": null, - "database": "database_production", - "host": "127.0.0.1", - "dialect": "postgres" - } -} diff --git a/config/passport-setup.js b/config/passport-setup.js new file mode 100644 index 0000000..470f445 --- /dev/null +++ b/config/passport-setup.js @@ -0,0 +1,13 @@ +const passport = require('passport'); +const GoogleStrategy = require('passport-google-oauth20'); +const keys = require('./keys'); + +passport.use( + new GoogleStrategy({ + clientID: keys.google.clientID, + clientSecret: keys.google.clientSecret, + callbackURL: 'login/google/redirect' + }), () => { + // passport callback function + } +); diff --git a/package-lock.json b/package-lock.json index b93bbbc..c9d26ca 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5991,6 +5991,11 @@ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, + "oauth": { + "version": "0.9.15", + "resolved": "https://registry.npmjs.org/oauth/-/oauth-0.9.15.tgz", + "integrity": "sha1-vR/vr2hslrdUda7VGWQS/2DPucE=" + }, "oauth-sign": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", @@ -6338,6 +6343,14 @@ "pause": "0.0.1" } }, + "passport-google-oauth20": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/passport-google-oauth20/-/passport-google-oauth20-1.0.0.tgz", + "integrity": "sha1-O5YOih1w0dvnlGFcgnxoxAOSpdA=", + "requires": { + "passport-oauth2": "1.4.0" + } + }, "passport-local": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/passport-local/-/passport-local-1.0.0.tgz", @@ -6346,6 +6359,17 @@ "passport-strategy": "1.0.0" } }, + "passport-oauth2": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.4.0.tgz", + "integrity": "sha1-9i+BWDy+EmCb585vFguTlaJ7hq0=", + "requires": { + "oauth": "0.9.15", + "passport-strategy": "1.0.0", + "uid2": "0.0.3", + "utils-merge": "1.0.1" + } + }, "passport-strategy": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz", @@ -8554,6 +8578,11 @@ "random-bytes": "1.0.0" } }, + "uid2": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.3.tgz", + "integrity": "sha1-SDEm4Rd03y9xuLY53NeZw3YWK4I=" + }, "ultron": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", diff --git a/package.json b/package.json index 0c17e60..766ba44 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "moment": "^2.19.1", "morgan": "^1.9.0", "passport": "^0.4.0", + "passport-google-oauth20": "^1.0.0", "passport-local": "^1.0.0", "pg": "^6.4.2", "pg-hstore": "^2.3.2", From 425fb474cf236716827d8fb436ee0903dccbff8f Mon Sep 17 00:00:00 2001 From: Vish Misir Date: Sun, 19 Nov 2017 14:41:08 -0500 Subject: [PATCH 3/7] implement callback route for Google OAuth --- backend/controllers/login.js | 10 +++++++--- backend/middlewares/auth.js | 14 +++++++++++++- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/backend/controllers/login.js b/backend/controllers/login.js index 91400ee..524142d 100644 --- a/backend/controllers/login.js +++ b/backend/controllers/login.js @@ -13,9 +13,13 @@ router.post('/', function (req, res) { })(req, res); }); -router.get('/google', function (req, res) { - // handle with passport - res.send('Logging in with Google'); +router.get('/google', passport.authenticate('google', { + scope: ['profile'] +})); + +// Callback route for Google OAuth +router.get('/google/redirect', function (req, res) { + res.send('Callback route for Google OAuth') }); module.exports = router; diff --git a/backend/middlewares/auth.js b/backend/middlewares/auth.js index cb1f787..166dfb2 100644 --- a/backend/middlewares/auth.js +++ b/backend/middlewares/auth.js @@ -1,7 +1,9 @@ const bcrypt = require('bcrypt-nodejs'); const passport = require('passport'); const LocalStrategy = require('passport-local').Strategy; +const GoogleStrategy = require('passport-google-oauth20'); +const keys = require('../../config/keys'); const Users = require('../db/models').Users; function passwordsMatch(passwordSubmitted, storedPassword) { @@ -30,6 +32,16 @@ passport.use(new LocalStrategy({ }) ); +passport.use( + new GoogleStrategy({ + clientID: keys.google.clientID, + clientSecret: keys.google.clientSecret, + callbackURL: 'login/google/redirect' + }, () => { + // passport callback function + }) +); + passport.serializeUser((user, done) => { done(null, user.id); }); @@ -54,4 +66,4 @@ passport.redirectIfNotLoggedIn = (route) => (req.user ? next() : res.redirect(route)); } -module.exports = passport; \ No newline at end of file +module.exports = passport; From b5e343edfa5bb072f628df9ff34bb5d428368482 Mon Sep 17 00:00:00 2001 From: Vish Misir Date: Sun, 26 Nov 2017 15:14:58 -0500 Subject: [PATCH 4/7] make improvements --- backend/controllers/login.js | 9 ++++----- backend/middlewares/auth.js | 6 ++++-- backend/views/login.pug | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/backend/controllers/login.js b/backend/controllers/login.js index 524142d..671cc2c 100644 --- a/backend/controllers/login.js +++ b/backend/controllers/login.js @@ -13,13 +13,12 @@ router.post('/', function (req, res) { })(req, res); }); -router.get('/google', passport.authenticate('google', { - scope: ['profile'] -})); +router.get('/google', passport.authenticate('google', { scope: ['profile'] }) +); // Callback route for Google OAuth -router.get('/google/redirect', function (req, res) { - res.send('Callback route for Google OAuth') +router.get('/google/redirect', passport.authenticate('google'), function (req, res) { + res.send('Callback route for Google OAuth'); }); module.exports = router; diff --git a/backend/middlewares/auth.js b/backend/middlewares/auth.js index 166dfb2..c201bee 100644 --- a/backend/middlewares/auth.js +++ b/backend/middlewares/auth.js @@ -36,9 +36,11 @@ passport.use( new GoogleStrategy({ clientID: keys.google.clientID, clientSecret: keys.google.clientSecret, - callbackURL: 'login/google/redirect' - }, () => { + callbackURL: '/login/google/redirect' + }, (accessToken, refreshToken, profile, done) => { // passport callback function + console.log('passport callback function fired.') + console.log(profile); }) ); diff --git a/backend/views/login.pug b/backend/views/login.pug index 4cf4554..a5ed83b 100644 --- a/backend/views/login.pug +++ b/backend/views/login.pug @@ -1,6 +1,6 @@ extends ./layouts/main.pug block style - link(rel="stylesheet", href="css/homepage.css") + link(rel="stylesheet", href="/css/homepage.css") block body body#login .hero_sect From dacda07cfd0d5210404507e62a3f99a00e21607c Mon Sep 17 00:00:00 2001 From: Vish Misir Date: Thu, 30 Nov 2017 13:52:48 -0500 Subject: [PATCH 5/7] update passport callback function --- backend/middlewares/auth.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/backend/middlewares/auth.js b/backend/middlewares/auth.js index c201bee..d79620c 100644 --- a/backend/middlewares/auth.js +++ b/backend/middlewares/auth.js @@ -38,9 +38,8 @@ passport.use( clientSecret: keys.google.clientSecret, callbackURL: '/login/google/redirect' }, (accessToken, refreshToken, profile, done) => { - // passport callback function - console.log('passport callback function fired.') - console.log(profile); + /* passport callback function */ + // check if user exists in database. if not create record for new user }) ); From 9cb4d48b7865558f290b57d8e742a718821a045d Mon Sep 17 00:00:00 2001 From: Vish Misir Date: Wed, 6 Dec 2017 15:37:37 -0500 Subject: [PATCH 6/7] database in effect --- backend/db/models/users.js | 3 ++- backend/middlewares/auth.js | 22 +++++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/backend/db/models/users.js b/backend/db/models/users.js index 9af89e0..cf89881 100644 --- a/backend/db/models/users.js +++ b/backend/db/models/users.js @@ -8,6 +8,7 @@ module.exports = (sequelize, DataTypes) => { lastName: DataTypes.STRING, email: DataTypes.STRING, password: DataTypes.STRING, + googleID: DataTypes.STRING, about: DataTypes.STRING, karma: {type: DataTypes.INTEGER, defaultValue: 10} }, { @@ -28,4 +29,4 @@ module.exports = (sequelize, DataTypes) => { }) ); return Users; -}; \ No newline at end of file +}; diff --git a/backend/middlewares/auth.js b/backend/middlewares/auth.js index d79620c..b9670cf 100644 --- a/backend/middlewares/auth.js +++ b/backend/middlewares/auth.js @@ -38,9 +38,25 @@ passport.use( clientSecret: keys.google.clientSecret, callbackURL: '/login/google/redirect' }, (accessToken, refreshToken, profile, done) => { - /* passport callback function */ - // check if user exists in database. if not create record for new user - }) + // check if user exists in database. if not create record for new user + Users.findOne({ + where: {googleID: profile.id} + }).then((user) => { + if(user) { + // user already exists + console.log('User already exists'); + } + else { + Users.create({ + firstName: profile.name.givenName, + lastName: profile.name.familyName, + googleID: profile.id + }).then((user) => { + console.log('New user created'); + }) + } + }) + }) ); passport.serializeUser((user, done) => { From 954848a7f006d0fbdb18f293957abf7266a39d1f Mon Sep 17 00:00:00 2001 From: Vish Misir Date: Wed, 6 Dec 2017 21:51:28 -0500 Subject: [PATCH 7/7] user able to log in using OAuth. Timeline shows up --- app.js | 7 +++++++ backend/controllers/login.js | 2 +- backend/middlewares/auth.js | 8 ++++---- package-lock.json | 25 +++++++++++++++++++++++++ package.json | 1 + 5 files changed, 38 insertions(+), 5 deletions(-) diff --git a/app.js b/app.js index 67ea305..a982fe2 100644 --- a/app.js +++ b/app.js @@ -4,6 +4,8 @@ const PORT = process.env.PORT || 3000; const inProduction = process.env.NODE_ENV === "production"; const app = express(); +const keys = require('./config/keys.js') +const cookieSession = require('cookie-session'); const bodyParser = require("body-parser"); const logger = require("morgan"); app.use(bodyParser.json()); @@ -12,6 +14,11 @@ app.use(express.static(path.join(__dirname, "public"))); app.disable("x-powered-by"); app.use(logger("dev")); // app.use(require("cookie-parser")); +app.use(cookieSession({ + maxAge: 24 * 60 * 60 * 1000, + keys: [keys.session.cookieKey] + }) +); const models = require("./backend/db/models"); //need to add postgresql for sessions diff --git a/backend/controllers/login.js b/backend/controllers/login.js index 671cc2c..21949b4 100644 --- a/backend/controllers/login.js +++ b/backend/controllers/login.js @@ -18,7 +18,7 @@ router.get('/google', passport.authenticate('google', { scope: ['profile'] }) // Callback route for Google OAuth router.get('/google/redirect', passport.authenticate('google'), function (req, res) { - res.send('Callback route for Google OAuth'); + res.send(req.user); }); module.exports = router; diff --git a/backend/middlewares/auth.js b/backend/middlewares/auth.js index b9670cf..bd1c05b 100644 --- a/backend/middlewares/auth.js +++ b/backend/middlewares/auth.js @@ -38,13 +38,13 @@ passport.use( clientSecret: keys.google.clientSecret, callbackURL: '/login/google/redirect' }, (accessToken, refreshToken, profile, done) => { - // check if user exists in database. if not create record for new user - Users.findOne({ + console.log('passport callback function fired!'); + Users.findOne({ where: {googleID: profile.id} }).then((user) => { if(user) { - // user already exists console.log('User already exists'); + done(null, user); } else { Users.create({ @@ -53,6 +53,7 @@ passport.use( googleID: profile.id }).then((user) => { console.log('New user created'); + done(null, user); }) } }) @@ -68,7 +69,6 @@ passport.deserializeUser((id, done) => { if (!user) { return done(null, false); } - return done(null, user); }); }); diff --git a/package-lock.json b/package-lock.json index c9d26ca..1aa538f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2505,11 +2505,31 @@ "cookie-signature": "1.0.6" } }, + "cookie-session": { + "version": "2.0.0-beta.3", + "resolved": "https://registry.npmjs.org/cookie-session/-/cookie-session-2.0.0-beta.3.tgz", + "integrity": "sha512-zyqm5tA0z9yMEB/xyP7lnRnqp8eLR2e0dap+9+rBwVigla9yPKn8XTL1jJymog8xjfrowqW2o5LUjixQChkqrw==", + "requires": { + "cookies": "0.7.1", + "debug": "3.1.0", + "on-headers": "1.0.1", + "safe-buffer": "5.1.1" + } + }, "cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, + "cookies": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.7.1.tgz", + "integrity": "sha1-fIphX1SBxhq58WyDNzG8uPZjuZs=", + "requires": { + "depd": "1.1.1", + "keygrip": "1.0.2" + } + }, "core-js": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", @@ -5035,6 +5055,11 @@ "promise": "7.3.1" } }, + "keygrip": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.0.2.tgz", + "integrity": "sha1-rTKXxVcGneqLz+ek+kkbdcXd65E=" + }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", diff --git a/package.json b/package.json index 766ba44..d952da7 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "body-parser": "^1.18.2", "connect-session-sequelize": "^5.0.1", "cookie-parser": "^1.4.3", + "cookie-session": "^2.0.0-beta.3", "debug": "^3.1.0", "express": "^4.16.2", "express-session": "^1.15.6",