From 3121f25e4b121cbfe229a8e00777260b76523b36 Mon Sep 17 00:00:00 2001 From: Nelisa Date: Thu, 4 May 2017 16:07:38 -0500 Subject: [PATCH] adding signup page --- GYMApp/GYMApp/app.js | 11 +++ GYMApp/GYMApp/models/user.js | 4 +- GYMApp/GYMApp/package.json | 6 ++ GYMApp/GYMApp/public/stylesheets/style.css | 47 +++++++++++ GYMApp/GYMApp/routes/index.js | 14 +++- GYMApp/GYMApp/routes/user.js | 17 ++-- GYMApp/GYMApp/views/index.hbs | 31 +++++--- GYMApp/GYMApp/views/partials/header.hbs | 46 ++++++++++- GYMApp/GYMApp/views/user/signUp.hbs | 2 + GYMApp/GYMApp/views/user/test.html | 92 +++++++++++++++++++++- 10 files changed, 247 insertions(+), 23 deletions(-) diff --git a/GYMApp/GYMApp/app.js b/GYMApp/GYMApp/app.js index 527dbc0..722babb 100644 --- a/GYMApp/GYMApp/app.js +++ b/GYMApp/GYMApp/app.js @@ -5,11 +5,18 @@ var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var expressHbs = require('express-handlebars'); +var session = require('express-session'); +var passport = require('passport'); +var flash = require('connect-flash'); +var validator = require('express-validator'); + + var index = require('./routes/index'); var userRoutes = require('./routes/user'); var User = require('./models/user'); +var Profile = require('./models/profile'); var app = express(); var mongoose = require('mongoose'); @@ -36,7 +43,11 @@ app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); +app.use(session({secret: 'mysupersecret', resave: false, saveUninitialized: false})); app.use(express.static(path.join(__dirname, 'public'))); +app.use(flash()); +app.use(passport.initialize()); +app.use(passport.session()); app.use('/user', userRoutes); app.use('/', index); diff --git a/GYMApp/GYMApp/models/user.js b/GYMApp/GYMApp/models/user.js index d8dced1..0ea0a23 100644 --- a/GYMApp/GYMApp/models/user.js +++ b/GYMApp/GYMApp/models/user.js @@ -1,5 +1,6 @@ var mongoose = require('mongoose'); var Schema = mongoose.Schema; +var bcrypt = require('bcrypt-nodejs'); var nellyGymSchema = new Schema({ machine: {type: String, required: true}, @@ -9,4 +10,5 @@ var nellyGymSchema = new Schema({ day: {type: String, required: true} }); -module.exports = mongoose.model('User', nellyGymSchema); \ No newline at end of file +module.exports = mongoose.model('User', nellyGymSchema); + diff --git a/GYMApp/GYMApp/package.json b/GYMApp/GYMApp/package.json index 0fed1ef..8ae8b7a 100644 --- a/GYMApp/GYMApp/package.json +++ b/GYMApp/GYMApp/package.json @@ -6,16 +6,22 @@ "start": "node ./bin/www" }, "dependencies": { + "bcrypt-nodejs": "0.0.3", "body-parser": "^1.17.1", + "connect-flash": "^0.1.1", "cookie-parser": "^1.4.3", + "csurf": "^1.9.0", "debug": "~2.6.0", "express": "^4.15.2", "express-handlebars": "^3.0.0", + "express-session": "^1.15.2", + "express-validator": "^3.2.0", "formidable": "^1.1.1", "handlebars": "^4.0.6", "hbs": "^4.0.1", "mongoose": "^4.8.4", "morgan": "^1.8.1", + "passport": "^0.3.2", "serve-favicon": "^2.4.2", "util": "^0.10.3" } diff --git a/GYMApp/GYMApp/public/stylesheets/style.css b/GYMApp/GYMApp/public/stylesheets/style.css index 6464599..7e35cdf 100644 --- a/GYMApp/GYMApp/public/stylesheets/style.css +++ b/GYMApp/GYMApp/public/stylesheets/style.css @@ -2,6 +2,7 @@ body { padding: 50px; font: 14px "Lucida Grande", Helvetica, Arial, sans-serif; + background:url('http://images.shape.mdpcdn.com/sites/shape.com/files/styles/slide/public/workout/african-america-woman-doing-pushup_0.jpg'); } a { @@ -104,3 +105,49 @@ a { .login-help{ font-size: 12px; } + +#login-dp{ + min-width: 250px; + padding: 14px 14px 0; + overflow:hidden; + background-color:rgba(255,255,255,.8); +} +#login-dp .help-block{ + font-size:12px +} +#login-dp .bottom{ + background-color:rgba(255,255,255,.8); + border-top:1px solid #ddd; + clear:both; + padding:14px; +} +#login-dp .social-buttons{ + margin:12px 0 +} +#login-dp .social-buttons a{ + width: 49%; +} +#login-dp .form-group { + margin-bottom: 10px; +} +.btn-fb{ + color: #fff; + background-color:#3b5998; +} +.btn-fb:hover{ + color: #fff; + background-color:#496ebc +} +.btn-tw{ + color: #fff; + background-color:#55acee; +} +.btn-tw:hover{ + color: #fff; + background-color:#59b5fa; +} +@media(max-width:768px){ + #login-dp{ + background-color: inherit; + color: #fff; + } \ No newline at end of file diff --git a/GYMApp/GYMApp/routes/index.js b/GYMApp/GYMApp/routes/index.js index fed9585..abb040c 100644 --- a/GYMApp/GYMApp/routes/index.js +++ b/GYMApp/GYMApp/routes/index.js @@ -3,12 +3,24 @@ var router = express.Router(); var User = require('../models/user'); var formidable = require("formidable"); var util = require('util'); +var csrf = require('csurf'); +var passport = require('passport'); + +var csrfProtection = csrf(); +router.use(csrfProtection); /* GET home page. */ router.get('/', function(req, res, next) { - res.render('index', { title: 'Nelisa Kiboti GYM Tracking System' }); + var messages = req.flash('error'); + res.render('index', {csrfToken: req.csrfToken(), messages: messages, hasErrors: messages.length > 0}); }); +router.post('/signIn', passport.authenticate('local.signIn', { + successRedirect: '/user/profile', + failureRedirect: '/user/signIn', + failureFlash: true +})); + /* router.post('/user/track', function(req,res, next){ var fields = []; diff --git a/GYMApp/GYMApp/routes/user.js b/GYMApp/GYMApp/routes/user.js index f0f4cda..5b734f8 100644 --- a/GYMApp/GYMApp/routes/user.js +++ b/GYMApp/GYMApp/routes/user.js @@ -1,11 +1,11 @@ var express = require('express'); var router = express.Router(); var User = require('../models/user'); -//var csrf = require('csurf'); -//var passport = require('passport'); +var csrf = require('csurf'); +var passport = require('passport'); -//var csrfProtection = csrf(); -//router.use(csrfProtection); +var csrfProtection = csrf(); +router.use(csrfProtection); router.get('/profile', function (req, res, next) { User.find(function(err,docs){ @@ -20,8 +20,15 @@ router.get('/track', function (req, res, next) { }); router.get('/signUp', function (req, res, next) { - res.render('user/signUp'); + var messages = req.flash('error'); + res.render('user/signUp', {csrfToken: req.csrfToken(), messages: messages, hasErrors: messages.length > 0}); }); + +router.post('/signup', passport.authenticate('local.signup', { + successRedirect: '/user/profile', + failureRedirect: '/user/signup', + failureFlash: true +})); //router.post('/user/track', function(req,res, next){ // console.log("POSTING ...."); // }); diff --git a/GYMApp/GYMApp/views/index.hbs b/GYMApp/GYMApp/views/index.hbs index 8aaa82f..00b2867 100644 --- a/GYMApp/GYMApp/views/index.hbs +++ b/GYMApp/GYMApp/views/index.hbs @@ -1,14 +1,4 @@ -Login -
-
- - Work Out - -
- - - - +
+ + diff --git a/GYMApp/GYMApp/views/partials/header.hbs b/GYMApp/GYMApp/views/partials/header.hbs index caebf8c..1ce91f5 100644 --- a/GYMApp/GYMApp/views/partials/header.hbs +++ b/GYMApp/GYMApp/views/partials/header.hbs @@ -6,7 +6,49 @@ Track Profile - - + \ No newline at end of file diff --git a/GYMApp/GYMApp/views/user/signUp.hbs b/GYMApp/GYMApp/views/user/signUp.hbs index ef98b80..90cfa00 100644 --- a/GYMApp/GYMApp/views/user/signUp.hbs +++ b/GYMApp/GYMApp/views/user/signUp.hbs @@ -80,6 +80,8 @@ Login + Helllooo + {{csrfToken}} diff --git a/GYMApp/GYMApp/views/user/test.html b/GYMApp/GYMApp/views/user/test.html index 9ae881c..821bb9f 100644 --- a/GYMApp/GYMApp/views/user/test.html +++ b/GYMApp/GYMApp/views/user/test.html @@ -1,9 +1,97 @@ + +Facebook Login JavaScript Example + + + + + + +XXX + + +
+
\ No newline at end of file