diff --git a/.ssh/known_hosts b/.ssh/known_hosts index ce2bb80..81381f2 100644 --- a/.ssh/known_hosts +++ b/.ssh/known_hosts @@ -1 +1,2 @@ bitbucket.org,104.192.143.2 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw== +github.com,192.30.253.112 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAq2A7hRGmdnm9tUDbO9IDSwBK6TbQa+PXYPCPy6rbTrTtw7PHkccKrpp0yVhp5HdEIcKr6pLlVDBfOLX9QUsyCOV0wzfjIJNlGEYsdlLJizHhbn2mUjvSAHQqZETYP81eFzLQNnPHt4EVVUh7VfDESU84KezmD5QlWpXLmvU31/yMf+Se8xhHTvKSCZIFImWwoG6mbUoWf9nzpIoaSjB+weqqUUmpaaasXVal72J+UX2B+2RPW3RcT0eOzQgqlJL3RKrTJvdsjE3JEAvGq3lGHSZXy28G3skua2SmVi/w4yCE6gbODqnTWlg7+wC604ydGXA8VJiS5ap43JXiUFFAaQ== diff --git a/app.js b/app.js index 55a5b16..968ca09 100644 --- a/app.js +++ b/app.js @@ -1,31 +1,42 @@ -var express = require('express'); -var path = require('path'); -var favicon = require('serve-favicon'); -var logger = require('morgan'); -var cookieParser = require('cookie-parser'); -var bodyParser = require('body-parser'); - -var index = require('./routes/index'); +var express = require("express"); +const passport = require("passport"); +var path = require("path"); +var favicon = require("serve-favicon"); +var logger = require("morgan"); +const cookieSession = require("cookie-session"); +var cookieParser = require("cookie-parser"); +var bodyParser = require("body-parser"); +const keys = require("./config/keys"); + +var index = require("./routes/index"); var app = express(); // view engine setup -app.set('views', path.join(__dirname, 'views')); -app.set('view engine', 'jade'); +app.set("views", path.join(__dirname, "views")); +app.set("view engine", "jade"); // uncomment after placing your favicon in /public -app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); -app.use(logger('dev')); +app.use( + cookieSession({ + maxAge: 30 * 24 * 60 * 60 * 1000, // 30 days + keys: [keys.cookieKey] + }) +); +app.use(favicon(path.join(__dirname, "public", "favicon.ico"))); +app.use(logger("dev")); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); -app.use(express.static(path.join(__dirname, 'public'))); +app.use(express.static(path.join(__dirname, "public"))); +app.use(passport.initialize()); +app.use(passport.session()); -app.use('/', index); +app.use("/", index); // catch 404 and forward to error handler app.use(function(req, res, next) { - var err = new Error('Not Found'); + var err = new Error("Not Found"); err.status = 404; next(err); }); @@ -34,11 +45,11 @@ app.use(function(req, res, next) { app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; - res.locals.error = req.app.get('env') === 'development' ? err : {}; + res.locals.error = req.app.get("env") === "development" ? err : {}; // render the error page res.status(err.status || 500); - res.render('error'); + res.render("error"); }); module.exports = app; diff --git a/bin/www b/bin/www index 7388df3..077d2e1 100644 --- a/bin/www +++ b/bin/www @@ -8,8 +8,25 @@ var app = require('../app'); var debug = require('debug')('pg-node:server'); var http = require('http'); +// /** +// * Production verification +// */ + +// if (process.env.NODE_ENV === 'production') { +// // Express will serve up production assets +// // like our main.js file, or main.css file! +// app.use(express.static('../client/build')); + +// // Express will serve up the index.html file +// // if it doesn't recognize the route +// const path = require('path'); +// app.get('*', (req, res) => { +// res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html')); +// }); +// } + /** - * Get port from environment and store in Express. + * Define port */ var port = normalizePort(process.env.PORT || '5000'); diff --git a/client/package.json b/client/package.json index e8fe1cc..58ec9e6 100644 --- a/client/package.json +++ b/client/package.json @@ -2,6 +2,23 @@ "name": "client", "version": "0.1.0", "private": true, + "proxy": { + "/map": { + "target": "http://localhost:5000" + }, + "/map/pedro": { + "target": "http://localhost:5000" + }, + "/stylesheets": { + "target": "http://localhost:5000" + }, + "/auth/google": { + "target": "http://localhost:5000" + }, + "/auth/google/callback": { + "target": "http://localhost:5000" + } + }, "dependencies": { "react": "^16.3.2", "react-dom": "^16.3.2", diff --git a/client/public/favicon.ico b/client/public/favicon.ico index a11777c..c9c0f58 100644 Binary files a/client/public/favicon.ico and b/client/public/favicon.ico differ diff --git a/client/src/App.js b/client/src/App.js index 8e917a1..dea113e 100644 --- a/client/src/App.js +++ b/client/src/App.js @@ -13,6 +13,9 @@ class App extends Component {

To get started, edit src/App.js and save to reload.

+ Mostra o mapa +

+ Login Google ); } diff --git a/models/User.js b/models/User.js new file mode 100644 index 0000000..cab31e3 --- /dev/null +++ b/models/User.js @@ -0,0 +1,8 @@ +const mongoose = require("mongoose"); +const {Schema} = mongoose; + +const userSchema = new Schema({ + googleId: String +}); + +mongoose.model("users", userSchema); diff --git a/package-lock.json b/package-lock.json index e82d0ce..89e55ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,6 +41,16 @@ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" }, + "ansi-regex": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=" + }, + "ansi-styles": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", + "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=" + }, "array-flatten": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", @@ -97,6 +107,11 @@ "safe-buffer": "5.1.1" } }, + "bluebird": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=" + }, "body-parser": { "version": "1.18.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", @@ -114,6 +129,11 @@ "type-is": "1.6.16" } }, + "bson": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/bson/-/bson-1.0.6.tgz", + "integrity": "sha512-D8zmlb46xfuK2gGvKmUjIklQEouN2nQ0LEHHeZ/NoHM2LDiMk2EYzZ5Ntw/Urk+bgMDosOZxaRzXxvhI5TcAVQ==" + }, "buffer-writer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-writer/-/buffer-writer-1.0.1.tgz", @@ -138,6 +158,25 @@ "lazy-cache": "1.0.4" } }, + "chalk": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", + "requires": { + "ansi-styles": "1.1.0", + "escape-string-regexp": "1.0.5", + "has-ansi": "0.1.0", + "strip-ansi": "0.3.0", + "supports-color": "0.2.0" + }, + "dependencies": { + "supports-color": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", + "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=" + } + } + }, "character-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/character-parser/-/character-parser-1.2.1.tgz", @@ -184,6 +223,21 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=" }, + "concurrently": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-3.5.1.tgz", + "integrity": "sha512-689HrwGw8Rbk1xtV9C4dY6TPJAvIYZbRbnKSAtfJ7tHqICFGoZ0PCWYjxfmerRyxBG0o3sbG3pe7N8vqPwIHuQ==", + "requires": { + "chalk": "0.5.1", + "commander": "2.6.0", + "date-fns": "1.29.0", + "lodash": "4.17.10", + "rx": "2.3.24", + "spawn-command": "0.0.2-1", + "supports-color": "3.2.3", + "tree-kill": "1.2.0" + } + }, "constantinople": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/constantinople/-/constantinople-3.0.2.tgz", @@ -216,11 +270,41 @@ "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" + }, + "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" + } + } + } + }, "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.2", + "keygrip": "1.0.2" + } + }, "core-js": { "version": "2.5.4", "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.4.tgz", @@ -250,6 +334,11 @@ "resolved": "https://registry.npmjs.org/css-stringify/-/css-stringify-1.0.5.tgz", "integrity": "sha1-sNBClG2ylTu50pKQCmy19tASIDE=" }, + "date-fns": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", + "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==" + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -288,6 +377,11 @@ "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + }, "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -381,6 +475,19 @@ "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" }, + "has-ansi": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", + "requires": { + "ansi-regex": "0.2.1" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" + }, "http-errors": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", @@ -465,6 +572,16 @@ "promise": "6.1.0" } }, + "kareem": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.0.7.tgz", + "integrity": "sha512-p8+lEpsNs4N0fvNOC1/zzDO0wDrD3Pb1G+OwfIG+gKVK3MyY5jeaGYh+9Qx6jb4fEG2b3E6U98vaE9MH7Gilsw==" + }, + "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", @@ -483,6 +600,16 @@ "resolved": "https://registry.npmjs.org/leaflet-draw/-/leaflet-draw-1.0.2.tgz", "integrity": "sha512-iCcbXE9okhwznoTXjxVjoGFoKeiWGsgmWPKrPAeHUvtWZWK4t6YF6815D13wZoMxX2UM6tOmD7/VofCxx3S0+w==" }, + "lodash": { + "version": "4.17.10", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.10.tgz", + "integrity": "sha512-UejweD1pDoXu+AD825lWwp4ZGtSwgnpZxb3JDViD7StjQz+Nb/6l093lx4OQ0foGWNRoc19mWy7BzL+UAK2iVg==" + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" + }, "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", @@ -534,6 +661,56 @@ "minimist": "0.0.8" } }, + "mongodb": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.0.7.tgz", + "integrity": "sha512-n/14kMJEoARXz1qhpNPhUocqy+z5130jhqgEIX1Tsl8UVpHrndQ8et+VmgC4yPK/I8Tcgc93JEMQCHTekBUnNA==", + "requires": { + "mongodb-core": "3.0.7" + } + }, + "mongodb-core": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/mongodb-core/-/mongodb-core-3.0.7.tgz", + "integrity": "sha512-z6YufO7s40wLiv2ssFshqoLS4+Kf+huhHq6KZ7gDArsKNzXYjAwTMnhEIJ9GQ8fIfBGs5tBLNPfbIDoCKGPmOw==", + "requires": { + "bson": "1.0.6", + "require_optional": "1.0.1" + } + }, + "mongoose": { + "version": "5.0.17", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.0.17.tgz", + "integrity": "sha512-RV1WBQhzW7oOhStR+s7LQYfgQWTJm4hgmU3TqtgTiBCfnj5/sNliX2/SY+ef7tpIZRUqEBV5xITZdAlwQ6Ymdg==", + "requires": { + "async": "2.1.4", + "bson": "1.0.6", + "kareem": "2.0.7", + "lodash.get": "4.4.2", + "mongodb": "3.0.7", + "mongoose-legacy-pluralize": "1.0.2", + "mpath": "0.4.1", + "mquery": "3.0.0", + "ms": "2.0.0", + "regexp-clone": "0.0.1", + "sliced": "1.0.1" + }, + "dependencies": { + "async": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.1.4.tgz", + "integrity": "sha1-LSFgx3iAMuTdbL4lAvH5osj2zeQ=", + "requires": { + "lodash": "4.17.10" + } + } + } + }, + "mongoose-legacy-pluralize": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.2.tgz", + "integrity": "sha512-Yo/7qQU4/EyIS8YDFSeenIvXxZN+ld7YdV9LqFVQJzTLye8unujAWPZ4NWKfFA+RNjh+wvTWKY9Z3E5XM6ZZiQ==" + }, "morgan": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", @@ -546,6 +723,29 @@ "on-headers": "1.0.1" } }, + "mpath": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.4.1.tgz", + "integrity": "sha512-NNY/MpBkALb9jJmjpBlIi6GRoLveLUM0pJzgbp9vY9F7IQEb/HREC/nxrixechcQwd1NevOhJnWWV8QQQRE+OA==" + }, + "mquery": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-3.0.0.tgz", + "integrity": "sha512-WL1Lk8v4l8VFSSwN3yCzY9TXw+fKVYKn6f+w86TRzOLSE8k1yTgGaLBPUByJQi8VcLbOdnUneFV/y3Kv874pnQ==", + "requires": { + "bluebird": "3.5.0", + "debug": "2.6.9", + "regexp-clone": "0.0.1", + "sliced": "0.0.5" + }, + "dependencies": { + "sliced": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-0.0.5.tgz", + "integrity": "sha1-XtwETKTrb3gW1Qui/GPiXY/kcH8=" + } + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -784,11 +984,37 @@ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" }, + "regexp-clone": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/regexp-clone/-/regexp-clone-0.0.1.tgz", + "integrity": "sha1-p8LgmJH9vzj7sQ03b7cwA+aKxYk=" + }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" }, + "require_optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require_optional/-/require_optional-1.0.1.tgz", + "integrity": "sha512-qhM/y57enGWHAe3v/NcwML6a3/vfESLe/sGM2dII+gEO0BpKRUkWZow/tyloNqJyN6kXSl3RyyM8Ll5D/sJP8g==", + "requires": { + "resolve-from": "2.0.0", + "semver": "5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-4SJ3dm0WAwWy/NVeioZh5AntkdJoWKxHxcmyP622fOkgHa4z3R0TdBJICINyaSDE6uNwVc8gZr+ZinwZAH4xIA==" + } + } + }, + "resolve-from": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-2.0.0.tgz", + "integrity": "sha1-lICrIOlP+h2egKgEx+oUdhGWa1c=" + }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", @@ -797,6 +1023,11 @@ "align-text": "0.1.4" } }, + "rx": { + "version": "2.3.24", + "resolved": "https://registry.npmjs.org/rx/-/rx-2.3.24.tgz", + "integrity": "sha1-FPlQpCF9fjXapxu8vljv9o6ksrc=" + }, "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", @@ -862,6 +1093,11 @@ "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" }, + "sliced": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sliced/-/sliced-1.0.1.tgz", + "integrity": "sha1-CzpmK10Ewxd7GSa+qCsD+Dei70E=" + }, "source-map": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", @@ -870,6 +1106,11 @@ "amdefine": "1.0.1" } }, + "spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha1-YvXpRmmBwbeW3Fkpk34RycaSG9A=" + }, "split": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", @@ -896,6 +1137,22 @@ "safe-buffer": "5.1.1" } }, + "strip-ansi": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", + "requires": { + "ansi-regex": "0.2.1" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "requires": { + "has-flag": "1.0.0" + } + }, "tedious": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tedious/-/tedious-2.3.1.tgz", @@ -994,6 +1251,11 @@ } } }, + "tree-kill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.0.tgz", + "integrity": "sha512-DlX6dR0lOIRDFxI0mjL9IYg6OTncLm/Zt+JiBhE5OlFcAR8yc9S7FFXU9so0oda47frdM/JFsk7UjNt9vscKcg==" + }, "type-is": { "version": "1.6.16", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", diff --git a/package.json b/package.json index f19d598..da9b743 100644 --- a/package.json +++ b/package.json @@ -10,17 +10,22 @@ }, "scripts": { "start": "node ./bin/www", - "dev": "nodemon ./bin/www" + "server": "nodemon ./bin/www", + "client": "npm run start --prefix client", + "dev": "concurrently \"npm run server\" \"npm run client\"" }, "author": "José Maria Villac Pinheiro", "dependencies": { "body-parser": "~1.18.2", + "concurrently": "^3.5.1", "cookie-parser": "~1.4.3", + "cookie-session": "^2.0.0-beta.3", "debug": "~2.6.9", "express": "~4.15.5", "jade": "~1.11.0", "jade-bootstrap": "^1.0.14", "leaflet-draw": "^1.0.2", + "mongoose": "^5.0.17", "morgan": "~1.9.0", "mssql": "^4.1.0", "passport": "^0.4.0", diff --git a/routes/authRoutes.js b/routes/authRoutes.js index 55da634..8adcb50 100644 --- a/routes/authRoutes.js +++ b/routes/authRoutes.js @@ -26,4 +26,13 @@ module.exports = router => { res.redirect("/"); } ); + + router.get("/api/logout", (req,res)=>{ + req.logout(); + res.send(req.user); + }); + + router.get("/api/current_user", (req, res)=> { + res.send (req.user); + }); }; diff --git a/routes/index.js b/routes/index.js index c992e8f..2101dfb 100644 --- a/routes/index.js +++ b/routes/index.js @@ -1,50 +1,19 @@ var express = require("express"); +const mongoose = require ("mongoose"); var router = express.Router(); -require("../services/passport"); -require("../services/databases"); const keys = require("../config/keys"); +require("../models/User"); +const passport = require("../services/passport"); +require("../services/databases"); + +mongoose.connect(keys.mongoURI); require("./authRoutes")(router); +require("./mapRoutes")(router); /* GET home page. */ router.get("/", function(req, res, next) { res.render("index", { title: "NEXUS" }); }); -// bounding coordinates to view the map -var boundSW = [-23.6506647239914, -46.5848434588656]; // lat, long -var boundNE = [-23.5992830936269, -46.5447524538661]; - -router.get("/map/:nome", function(req, res, next) { - var numeroConsumidor = require("../src/findConsumerNumber"); - var coordenadas = require("../src/findCoordinatesFromConsumer"); - var retorno = numeroConsumidor(req.params.nome, function(numero, nome, err) { - if (err === undefined) { - console.log("Terminou tudo: " + numero + " Nome: " + nome); - var codigoComNome = numero + " - " + nome; - var retorno = coordenadas(numero, function(x, y) { - console.log("Terminou procura coordenadas x: " + x + " y: " + y); - res.render("map", { - codigo: numero, - consumidor: codigoComNome, - fator_zoom: 23, - title: "NEXUS", - lat: y, - lng: x, - bndSW: boundSW, - bndNE: boundNE, - geoserverWMS: keys.geoserverWMS, - waterLayers: keys.waterLayers, - server: keys.server - }); - }); - } - }); -}); - -router.get(keys.server + "/ponto", function(req, res) { - var coord = {}; - console.log("Postou: "); -}); - module.exports = router; diff --git a/routes/mapRoutes.js b/routes/mapRoutes.js new file mode 100644 index 0000000..f629e53 --- /dev/null +++ b/routes/mapRoutes.js @@ -0,0 +1,39 @@ +const keys = require("../config/keys"); + +module.exports = router => { + // bounding coordinates to view the map + var boundSW = [-23.6506647239914, -46.5848434588656]; // lat, long + var boundNE = [-23.5992830936269, -46.5447524538661]; + + router.get("/map/:nome", function(req, res, next) { + var numeroConsumidor = require("../src/findConsumerNumber"); + var coordenadas = require("../src/findCoordinatesFromConsumer"); + var retorno = numeroConsumidor(req.params.nome, function(numero, nome, err) { + if (err === undefined) { + console.log("Terminou tudo: " + numero + " Nome: " + nome); + var codigoComNome = numero + " - " + nome; + var retorno = coordenadas(numero, function(x, y) { + console.log("Terminou procura coordenadas x: " + x + " y: " + y); + res.render("map", { + codigo: numero, + consumidor: codigoComNome, + fator_zoom: 23, + title: "NEXUS", + lat: y, + lng: x, + bndSW: boundSW, + bndNE: boundNE, + geoserverWMS: keys.geoserverWMS, + waterLayers: keys.waterLayers, + server: keys.server + }); + }); + } + }); + }); + + router.get(keys.server + "/ponto", function(req, res) { + var coord = {}; + console.log("Postou: "); + }); +}; \ No newline at end of file diff --git a/services/passport.js b/services/passport.js index 27e4182..7b70662 100644 --- a/services/passport.js +++ b/services/passport.js @@ -1,21 +1,41 @@ const passport = require("passport"); const GoogleStrategy = require("passport-google-oauth20").Strategy; -const util = require('util'); +// const util = require("util"); // example: console.log("Profile: " + util.inspect(profile, false, null)); +const mongoose = require("mongoose"); const keys = require("../config/keys"); +const User = mongoose.model("users"); + +passport.serializeUser((user, done) => { + done(null, user.id); +}); + +passport.deserializeUser((id, done) => { + User.findById(id).then(user => { + done(null, user); + }); +}); + passport.use( - new GoogleStrategy( - { - clientID: keys.googleClientID, - clientSecret: keys.googleClientSecret, - callbackURL: "/auth/google/callback" - }, - (accessToken, refreshToken, profile, done) => { // error function - console.log("Ocorreu um erro"); - console.log("Chave de acesso: " + accessToken); - console.log("Refresh token: " + refreshToken); - console.log("Profile: " + util.inspect(profile, false, null)); - } - ) - ); - \ No newline at end of file + new GoogleStrategy( + { + clientID: keys.googleClientID, + clientSecret: keys.googleClientSecret, + callbackURL: "/auth/google/callback" + }, + (accessToken, refreshToken, profile, done) => { + // callback function + User.findOne({ googleId: profile.id }).then(existingUser => { + if (existingUser) { + // we already have a record with the given profile ID + done(null, existingUser); + } else { + // we don't have a record with the given profile ID + new User({ googleId: profile.id }) + .save() + .then(user => done(null, user)); + } + }); + } + ) +); diff --git a/views/map.jade b/views/map.jade index 2ad766b..75990a3 100644 --- a/views/map.jade +++ b/views/map.jade @@ -13,7 +13,7 @@ block content script. function relocate_home() { - location.href = "#{server}/map/" + nome.value; + location.href = "/map/" + nome.value; } br #map @@ -44,8 +44,55 @@ block content var marker = L.marker([#{lat},#{lng}]).addTo(map); marker.bindPopup("#{codigo}
#{consumidor}").openPopup(); + //- var modifiedDraw = L.Control.Draw.extend({ + //- draw: { + //- polygon: false, + //- polyline: false, + //- line: false, + //- circle: false, + //- rectangle: false, + //- circlemarker: false, + //- marker: true, + //- toolbar: { + //- buttons: { + //- marker: 'Cadastra árvore' + //- } + //- } + //- }, + //- edit: { + //- featureGroup: drawnItems + //- } + //- }); + + //- modifiedDraw = L.Control.Draw({ + //- draw: { + //- polygon: false, + //- polyline: false, + //- line: false, + //- circle: false, + //- rectangle: false, + //- circlemarker: false, + //- marker: true + //- }, + //- edit: { + //- featureGroup: drawnItems + //- }, + //- }); + var drawControl = new L.Control.Draw({ draw: { + toolbar: { + buttons: { + marker: 'Draw an awesome polygon' + } + }, + handlers: { + marker: { + tooltip: { + start: "Selecione no mapa para colocar uma árvore." + } + } + }, polygon: false, polyline: false, line: false, @@ -56,8 +103,12 @@ block content }, edit: { featureGroup: drawnItems - } + }, }); + L.drawLocal = { + + }; + map.addControl(drawControl); // Truncate value based on number of decimals -- libgit2 0.21.2