Commit 9f1b0a7532d23ba0be04e8481f7f69173358f351

Authored by José Maria Villac Pinheiro
1 parent d8f42d39
Exists in master

V.0.9.0 - Login and Logout working

@@ -40,18 +40,19 @@ app.set("views", path.join(__dirname, "views")); @@ -40,18 +40,19 @@ app.set("views", path.join(__dirname, "views"));
40 app.set("view engine", "pug"); 40 app.set("view engine", "pug");
41 41
42 // uncomment after placing your favicon in /public 42 // uncomment after placing your favicon in /public
43 -app.use(  
44 - cookieSession({  
45 - maxAge: 30 * 24 * 60 * 60 * 1000, // 30 days  
46 - keys: [keys.cookieKey]  
47 - })  
48 -);  
49 app.use(favicon(path.join(__dirname, "public", "favicon.ico"))); 43 app.use(favicon(path.join(__dirname, "public", "favicon.ico")));
50 app.use(logger("dev")); 44 app.use(logger("dev"));
51 app.use(bodyParser.json()); 45 app.use(bodyParser.json());
52 app.use(bodyParser.urlencoded({ extended: false })); 46 app.use(bodyParser.urlencoded({ extended: false }));
53 app.use(cookieParser()); 47 app.use(cookieParser());
54 app.use(express.static(path.join(__dirname, "public"))); 48 app.use(express.static(path.join(__dirname, "public")));
  49 +// intersept all incoming requests
  50 +app.use(
  51 + cookieSession({
  52 + maxAge: 30 * 24 * 60 * 60 * 1000, // 30 days
  53 + keys: [keys.cookieKey]
  54 + })
  55 +);
55 app.use(passport.initialize()); 56 app.use(passport.initialize());
56 app.use(passport.session()); 57 app.use(passport.session());
57 58
client/package.json
@@ -6,22 +6,16 @@ @@ -6,22 +6,16 @@
6 "/map": { 6 "/map": {
7 "target": "http://localhost:5000" 7 "target": "http://localhost:5000"
8 }, 8 },
9 - "/map/pedro": { 9 + "/map/*": {
10 "target": "http://localhost:5000" 10 "target": "http://localhost:5000"
11 }, 11 },
12 "/stylesheets": { 12 "/stylesheets": {
13 "target": "http://localhost:5000" 13 "target": "http://localhost:5000"
14 }, 14 },
15 - "/auth/google": { 15 + "/auth/*": {
16 "target": "http://localhost:5000" 16 "target": "http://localhost:5000"
17 }, 17 },
18 - "/auth/google/callback": {  
19 - "target": "http://localhost:5000"  
20 - },  
21 - "/api/current_user": {  
22 - "target": "http://localhost:5000"  
23 - },  
24 - "/api/logout": { 18 + "/api/*": {
25 "target": "http://localhost:5000" 19 "target": "http://localhost:5000"
26 }, 20 },
27 "/consumidores": { 21 "/consumidores": {
@@ -32,15 +26,23 @@ @@ -32,15 +26,23 @@
32 } 26 }
33 }, 27 },
34 "dependencies": { 28 "dependencies": {
  29 + "@material-ui/core": "^1.4.2",
  30 + "@material-ui/icons": "^2.0.0",
  31 + "@types/react-redux": "^6.0.6",
35 "ajv": "^6.5.0", 32 "ajv": "^6.5.0",
36 - "axios": "0.17.1", 33 + "axios": "^0.17.1",
37 "faker": "^4.1.0", 34 "faker": "^4.1.0",
38 "react": "^16.4.0", 35 "react": "^16.4.0",
39 "react-dom": "^16.4.0", 36 "react-dom": "^16.4.0",
40 "react-iframe": "^1.2.0", 37 "react-iframe": "^1.2.0",
  38 + "react-redux": "^5.0.7",
  39 + "react-router-dom": "^4.3.1",
41 "react-scripts": "1.1.4", 40 "react-scripts": "1.1.4",
42 "react-select": "1.1.0", 41 "react-select": "1.1.0",
  42 + "redux": "^4.0.0",
  43 + "redux-thunk": "^2.3.0",
43 "source-map-explorer": "^1.5.0", 44 "source-map-explorer": "^1.5.0",
  45 + "typeface-roboto": "0.0.54",
44 "util": "^0.10.3" 46 "util": "^0.10.3"
45 }, 47 },
46 "scripts": { 48 "scripts": {
client/public/index.html
@@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
7 <meta name="theme-color" content="#000000"> 7 <meta name="theme-color" content="#000000">
8 <link rel="manifest" href="%PUBLIC_URL%/manifest.json"> 8 <link rel="manifest" href="%PUBLIC_URL%/manifest.json">
9 <link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico"> 9 <link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
  10 + <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
10 <title>NEXUS</title> 11 <title>NEXUS</title>
11 </head> 12 </head>
12 <body> 13 <body>
client/public/index1.html
@@ -1,18 +0,0 @@ @@ -1,18 +0,0 @@
1 -<!-- Html start page -->  
2 -<!DOCTYPE html>  
3 -<html lang="en">  
4 - <head>  
5 - <meta charset="utf-8">  
6 - <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">  
7 - <meta name="theme-color" content="#000000">  
8 - <link rel="manifest" href="%PUBLIC_URL%/manifest.json">  
9 - <link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">  
10 - <title>NEXUS1</title>  
11 - </head>  
12 - <body>  
13 - <noscript>  
14 - You need to enable JavaScript to run this app.  
15 - </noscript>  
16 - <div id="root"></div>  
17 - </body>  
18 -</html>  
client/src/App.css
@@ -1,28 +0,0 @@ @@ -1,28 +0,0 @@
1 -.App {  
2 - text-align: center;  
3 -}  
4 -  
5 -.App-logo {  
6 - animation: App-logo-spin infinite 20s linear;  
7 - height: 80px;  
8 -}  
9 -  
10 -.App-header {  
11 - background-color: #222;  
12 - height: 150px;  
13 - padding: 20px;  
14 - color: white;  
15 -}  
16 -  
17 -.App-title {  
18 - font-size: 1.5em;  
19 -}  
20 -  
21 -.App-intro {  
22 - font-size: large;  
23 -}  
24 -  
25 -@keyframes App-logo-spin {  
26 - from { transform: rotate(0deg); }  
27 - to { transform: rotate(360deg); }  
28 -}  
client/src/App.js
@@ -1,21 +0,0 @@ @@ -1,21 +0,0 @@
1 -import React, { Component } from "react";  
2 -import "./App.css";  
3 -import FindConsumer from "./components/findConsumer";  
4 -import Map from "./components/map";  
5 -  
6 -class App extends Component {  
7 - render() {  
8 - return (  
9 - <div className="App">  
10 - <div>  
11 - <FindConsumer />  
12 - </div>  
13 - <div>  
14 - <Map />  
15 - </div>  
16 - </div>  
17 - );  
18 - }  
19 -}  
20 -  
21 -export default App;  
client/src/App.test.js
@@ -1,9 +0,0 @@ @@ -1,9 +0,0 @@
1 -import React from 'react';  
2 -import ReactDOM from 'react-dom';  
3 -import App from './App';  
4 -  
5 -it('renders without crashing', () => {  
6 - const div = document.createElement('div');  
7 - ReactDOM.render(<App />, div);  
8 - ReactDOM.unmountComponentAtNode(div);  
9 -});  
client/src/components/map.js
1 -import React, { Component } from 'react';  
2 -import Iframe from 'react-iframe';  
3 -import 'react-select/dist/react-select.css'; 1 +import React, { Component } from 'react'
  2 +import Iframe from 'react-iframe'
  3 +import 'react-select/dist/react-select.css'
4 4
5 -export default class Map extends Component<*, State> {  
6 - constructor(props) {  
7 - super(props);  
8 - this.state = {  
9 - };  
10 - }  
11 - render() {  
12 - return (  
13 - <div>  
14 - <Iframe url="/map/pedro" position="absolute" width="100%" height="95%" id="mapId" allowFullScreen />  
15 - </div>  
16 - );  
17 - } 5 +export default class Map extends Component {
  6 + constructor (props) {
  7 + super(props)
  8 + this.state = {}
  9 + }
  10 + render () {
  11 + return (
  12 + <div>
  13 + <Iframe url='/map/pedro' position='absolute' width='100%' height='95%' id='mapId' allowFullScreen />
  14 + </div>
  15 + )
  16 + }
18 } 17 }
client/src/index.js
@@ -3,11 +3,24 @@ @@ -3,11 +3,24 @@
3 * @author José Maria Villac Pinheiro 3 * @author José Maria Villac Pinheiro
4 * @date 2018-07-19 4 * @date 2018-07-19
5 */ 5 */
6 -import React from "react";  
7 -import ReactDOM from "react-dom";  
8 -import "./index.css";  
9 -import App from "./App"; 6 +import 'typeface-roboto';
  7 +import React from 'react';
  8 +import ReactDOM from 'react-dom';
  9 +import { Provider } from 'react-redux';
  10 +import { createStore, applyMiddleware } from 'redux';
  11 +import reduxThunk from "redux-thunk";
  12 +
  13 +import './index.css';
  14 +import App from './components/App';
10 // import registerServiceWorker from "./registerServiceWorker"; 15 // import registerServiceWorker from "./registerServiceWorker";
  16 +import reducers from './reducers';
  17 +
  18 +const store = createStore(reducers, {}, applyMiddleware(reduxThunk));
11 19
12 -ReactDOM.render(<App />, document.getElementById("root")); 20 +ReactDOM.render(
  21 + <Provider store={store}>
  22 + <App />
  23 + </Provider>,
  24 + document.getElementById('root')
  25 +);
13 // registerServiceWorker(); 26 // registerServiceWorker();
routes/authRoutes.js
1 // Autentication routes 1 // Autentication routes
2 // 2 //
3 -const passport = require("passport"); // from npm 3 +const passport = require('passport') // from npm
4 4
5 module.exports = router => { 5 module.exports = router => {
6 - // Enter to authenticate the user 6 + // Enter to authenticate the user
7 router.get( 7 router.get(
8 - "/auth/google",  
9 - passport.authenticate("google", {  
10 - scope: ["profile", "email"]  
11 - })  
12 - ); 8 + '/auth/google',
  9 + passport.authenticate('google', {
  10 + scope: ['profile', 'email']
  11 + })
  12 + )
13 13
14 - // Page after authenticate 14 + // Page after authenticate
15 router.get( 15 router.get(
16 - "/auth/google/callback",  
17 - passport.authenticate("google"),  
18 - (err, req, res, next) => {  
19 - // custom error handler to catch any errors, such as TokenError  
20 - if (err.name === "TokenError") {  
21 - res.redirect("http://nexusbr.com"); // redirect them back to the login page  
22 - } else {  
23 - console.log("Falhou ao logar!");  
24 - // Handle other errors here  
25 - }  
26 - },  
27 - (req, res) => {  
28 - console.log("Logou com sucesso!");  
29 - // On success, redirect back to '/'  
30 - res.redirect("/");  
31 - }  
32 - ); 16 + '/auth/google/callback',
  17 + passport.authenticate('google'), // middleware to authenticate the user, after authenticate it passes to callbark
  18 + (err, req, res, next) => {
  19 + // custom error handler to catch any errors, such as TokenError
  20 + if (err.name === 'TokenError') {
  21 + res.redirect('http://nexusbr.com') // redirect them back to the login page
  22 + } else {
  23 + console.log('Falhou ao logar!')
  24 + // Handle other errors here
  25 + }
  26 + },
  27 + (req, res) => {
  28 + console.log('Logou com sucesso!')
  29 + // On success, redirect back to '/'
  30 + res.redirect('/surveys')
  31 + }
  32 + )
33 33
34 - router.get("/api/logout", (req,res)=>{  
35 - req.logout();  
36 - res.send(req.user);  
37 - }); 34 + router.get('/api/logout', (req, res) => {
  35 + req.logout()
  36 + res.redirect('/')
  37 + })
38 38
39 - router.get("/api/current_user", (req, res)=> {  
40 - res.send (req.user);  
41 - });  
42 -}; 39 + router.get('/api/current_user', (req, res) => {
  40 + res.send(req.user)
  41 + })
  42 +}