diff --git a/app_api/config/passport.js b/app_api/config/passport.js index 5d1d6c8..8fb7cef 100644 --- a/app_api/config/passport.js +++ b/app_api/config/passport.js @@ -7,7 +7,12 @@ passport.use(new LocalStrategy({ usernameField: 'email' }, function(username, password, done) { + console.log("Finding user: " + username + ";" + password); User.findOne({ email: username }, function (err, user) { + console.log("user found"); + console.log(user); + console.log("err found"); + console.log(err); if (err) { return done(err); } // Return if user not found in database if (!user) { diff --git a/app_api/controllers/authentication.js b/app_api/controllers/authentication.js index b273c64..da9d62c 100644 --- a/app_api/controllers/authentication.js +++ b/app_api/controllers/authentication.js @@ -1,4 +1,4 @@ -// var passport = require('passport'); +var passport = require('passport'); var mongoose = require('mongoose'); var User = mongoose.model('User'); @@ -8,7 +8,6 @@ var sendJSONresponse = function(res, status, content) { }; module.exports.register = function(req, res) { - console.log("Registering user: " + req.body.email); // if(!req.body.name || !req.body.email || !req.body.password) { // sendJSONresponse(res, 400, { @@ -36,7 +35,6 @@ module.exports.register = function(req, res) { }; module.exports.login = function(req, res) { - console.log("Logging in user: " + req.body.email); // if(!req.body.email || !req.body.password) { // sendJSONresponse(res, 400, { diff --git a/app_api/routes/index.js b/app_api/routes/index.js index dd83d02..7ced465 100644 --- a/app_api/routes/index.js +++ b/app_api/routes/index.js @@ -2,7 +2,7 @@ var express = require('express'); var router = express.Router(); var jwt = require('express-jwt'); var auth = jwt({ - secret: process.env.JWT_SECRET, + secret: 'MY_SECRET', userProperty: 'payload' }); diff --git a/app_client/app.min.js b/app_client/app.min.js index 16ea9dc..773a136 100644 --- a/app_client/app.min.js +++ b/app_client/app.min.js @@ -1,2 +1,2 @@ -!function(){function n(n,o){n.when("/",{templateUrl:"home/home.view.html",controller:"homeCtrl",controllerAs:"vm"}).when("/register",{templateUrl:"/auth/register/register.view.html",controller:"registerCtrl",controllerAs:"vm"}).when("/login",{templateUrl:"/auth/login/login.view.html",controller:"loginCtrl",controllerAs:"vm"}).when("/profile",{templateUrl:"/profile/profile.view.html",controller:"profileCtrl",controllerAs:"vm"}).otherwise({redirectTo:"/"}),o.html5Mode(!0)}angular.module("meanApp",["ngRoute"]),angular.module("meanApp").config(["$routeProvider","$locationProvider",n])}(),function(){function n(){console.log("Home controller is running")}angular.module("meanApp").controller("homeCtrl",n)}(),function(){function n(n){}angular.module("meanApp").controller("profileCtrl",n),n.$inject=["$location"]}(),function(){function n(n){}angular.module("meanApp").controller("loginCtrl",n),n.$inject=["$location"]}(),function(){function n(n){}angular.module("meanApp").controller("registerCtrl",n),n.$inject=["$location"]}(),function(){function n(n){}angular.module("meanApp").controller("navigationCtrl",n),n.$inject=["$location"]}(),function(){function n(){return{restrict:"EA",templateUrl:"/common/directives/navigation/navigation.template.html",controller:"navigationCtrl as navvm"}}angular.module("meanApp").directive("navigation",n)}(); +!function(){function n(n,e){n.when("/",{templateUrl:"home/home.view.html",controller:"homeCtrl",controllerAs:"vm",access:{requiredLogin:!1}}).when("/register",{templateUrl:"/auth/register/register.view.html",controller:"registerCtrl",controllerAs:"vm",access:{requiredLogin:!1}}).when("/login",{templateUrl:"/auth/login/login.view.html",controller:"loginCtrl",controllerAs:"vm",access:{requiredLogin:!1}}).when("/profile",{templateUrl:"/profile/profile.view.html",controller:"profileCtrl",controllerAs:"vm",access:{requiredLogin:!1}}).otherwise({redirectTo:"/"}),e.html5Mode(!0)}function e(n,e,t){n.$on("$routeChangeStart",function(n,o,r){var i="/profile"===e.path(),l=t.isLoggedIn();i&&!l&&e.path("/")})}angular.module("meanApp",["ngRoute"]),angular.module("meanApp").config(["$routeProvider","$locationProvider",n]).run(["$rootScope","$location","authentication",e])}(),function(){function n(){console.log("Home controller is running")}angular.module("meanApp").controller("homeCtrl",n)}(),function(){function n(n){}angular.module("meanApp").controller("profileCtrl",n),n.$inject=["$location"]}(),function(){function n(n,e){var t=this;t.credentials={email:"",password:""},t.onSubmit=function(){console.log("Submit login form:",t.credentials),e.login(t.credentials).error(function(n){alert(n)}).then(function(){n.path("profile")})}}angular.module("meanApp").controller("loginCtrl",n),n.$inject=["$location","authentication"]}(),function(){function n(n,e){var t=this;t.credentials={name:"Simon",email:"",password:""},t.onSubmit=function(){console.log("Submitting registration"),e.register(t.credentials).error(function(n){alert(n)}).then(function(){n.path("profile")})}}angular.module("meanApp").controller("registerCtrl",n),n.$inject=["$location","authentication"]}(),function(){function n(n,e){var t=function(n){e.localStorage["mean-token"]=n},o=function(){return e.localStorage["mean-token"]},r=function(){var n,t=o();return t?(n=t.split(".")[1],n=e.atob(n),n=JSON.parse(n),n.exp>Date.now()/1e3):!1},i=function(){if(r()){var n=o(),t=n.split(".")[1];return t=e.atob(t),t=JSON.parse(t),{email:t.email,name:t.name}}};return register=function(e){return n.post("/api/register",e).success(function(n){t(n.token)})},login=function(e){return n.post("/api/login",e).success(function(n){t(n.token)})},logout=function(){e.localStorage.removeItem("mean-token")},{currentUser:i,saveToken:t,getToken:o,isLoggedIn:r,register:register,login:login,logout:logout}}angular.module("meanApp").service("authentication",n),n.$inject=["$http","$window"]}(),function(){function n(n,e){var t=this;t.isLoggedIn=e.isLoggedIn(),t.currentUser=e.currentUser()}angular.module("meanApp").controller("navigationCtrl",n),n.$inject=["$location","authentication"]}(),function(){function n(){return{restrict:"EA",templateUrl:"/common/directives/navigation/navigation.template.html",controller:"navigationCtrl as navvm"}}angular.module("meanApp").directive("navigation",n)}(); //# sourceMappingURL=app.min.js.map \ No newline at end of file diff --git a/app_client/app.min.js.map b/app_client/app.min.js.map index 5d937a6..4711910 100644 --- a/app_client/app.min.js.map +++ b/app_client/app.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["app.min.js"],"names":["config","$routeProvider","$locationProvider","when","templateUrl","controller","controllerAs","otherwise","redirectTo","html5Mode","angular","module","homeCtrl","console","log","profileCtrl","$location","$inject","loginCtrl","registerCtrl","navigationCtrl","navigation","restrict","directive"],"mappings":"CAAA,WAIE,QAASA,GAAQC,EAAgBC,GAC/BD,EACGE,KAAK,KACJC,YAAa,sBACbC,WAAY,WACZC,aAAc,OAEfH,KAAK,aACJC,YAAa,oCACbC,WAAY,eACZC,aAAc,OAEfH,KAAK,UACJC,YAAa,8BACbC,WAAY,YACZC,aAAc,OAEfH,KAAK,YACJC,YAAa,6BACbC,WAAY,cACZC,aAAc,OAEfC,WAAWC,WAAY,MAG1BN,EAAkBO,WAAU,GA3B9BC,QAAQC,OAAO,WAAY,YA8B3BD,QACGC,OAAO,WACPX,QAAQ,iBAAkB,oBAAqBA,OAGpD,WAMI,QAASY,KACPC,QAAQC,IAAI,8BALhBJ,QACGC,OAAO,WACPN,WAAW,WAAYO,MAO5B,WAOE,QAASG,GAAYC,IALrBN,QACGC,OAAO,WACPN,WAAW,cAAeU,GAE7BA,EAAYE,SAAW,gBAMzB,WAOE,QAASC,GAAUF,IALnBN,QACGC,OAAO,WACPN,WAAW,YAAaa,GAE3BA,EAAUD,SAAW,gBAyCvB,WAOE,QAASE,GAAaH,IALtBN,QACGC,OAAO,WACPN,WAAW,eAAgBc,GAE9BA,EAAaF,SAAW,gBA0C1B,WAOE,QAASG,GAAeJ,IALxBN,QACGC,OAAO,WACPN,WAAW,iBAAkBe,GAEhCA,EAAeH,SAAW,gBAiB5B,WAME,QAASI,KACP,OACEC,SAAU,KACVlB,YAAa,yDACbC,WAAY,2BARhBK,QACGC,OAAO,WACPY,UAAU,aAAcF","file":"app.min.js","sourcesContent":["!function(){function n(n,o){n.when(\"/\",{templateUrl:\"home/home.view.html\",controller:\"homeCtrl\",controllerAs:\"vm\"}).when(\"/register\",{templateUrl:\"/auth/register/register.view.html\",controller:\"registerCtrl\",controllerAs:\"vm\"}).when(\"/login\",{templateUrl:\"/auth/login/login.view.html\",controller:\"loginCtrl\",controllerAs:\"vm\"}).when(\"/profile\",{templateUrl:\"/profile/profile.view.html\",controller:\"profileCtrl\",controllerAs:\"vm\"}).otherwise({redirectTo:\"/\"}),o.html5Mode(!0)}angular.module(\"meanApp\",[\"ngRoute\"]),angular.module(\"meanApp\").config([\"$routeProvider\",\"$locationProvider\",n])}(),function(){function n(){console.log(\"Home controller is running\")}angular.module(\"meanApp\").controller(\"homeCtrl\",n)}(),function(){function n(n){}angular.module(\"meanApp\").controller(\"profileCtrl\",n),n.$inject=[\"$location\"]}(),function(){function n(n){}angular.module(\"meanApp\").controller(\"loginCtrl\",n),n.$inject=[\"$location\"]}(),function(){function n(n){}angular.module(\"meanApp\").controller(\"registerCtrl\",n),n.$inject=[\"$location\"]}(),function(){function n(n){}angular.module(\"meanApp\").controller(\"navigationCtrl\",n),n.$inject=[\"$location\"]}(),function(){function n(){return{restrict:\"EA\",templateUrl:\"/common/directives/navigation/navigation.template.html\",controller:\"navigationCtrl as navvm\"}}angular.module(\"meanApp\").directive(\"navigation\",n)}();"],"sourceRoot":"/source/"} \ No newline at end of file +{"version":3,"sources":["app.min.js"],"names":["config","$routeProvider","$locationProvider","when","templateUrl","controller","controllerAs","access","requiredLogin","otherwise","redirectTo","html5Mode","run","$rootScope","$location","authentication","$on","event","nextRoute","currentRoute","restrictedPage","path","loggedIn","isLoggedIn","angular","module","homeCtrl","console","log","profileCtrl","$inject","loginCtrl","vm","this","credentials","email","password","onSubmit","login","error","err","alert","then","registerCtrl","name","register","$http","$window","saveToken","token","localStorage","getToken","payload","split","atob","JSON","parse","exp","Date","now","currentUser","user","post","success","data","logout","removeItem","service","navigationCtrl","navigation","restrict","directive"],"mappings":"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","file":"app.min.js","sourcesContent":["!function(){function n(n,e){n.when(\"/\",{templateUrl:\"home/home.view.html\",controller:\"homeCtrl\",controllerAs:\"vm\",access:{requiredLogin:!1}}).when(\"/register\",{templateUrl:\"/auth/register/register.view.html\",controller:\"registerCtrl\",controllerAs:\"vm\",access:{requiredLogin:!1}}).when(\"/login\",{templateUrl:\"/auth/login/login.view.html\",controller:\"loginCtrl\",controllerAs:\"vm\",access:{requiredLogin:!1}}).when(\"/profile\",{templateUrl:\"/profile/profile.view.html\",controller:\"profileCtrl\",controllerAs:\"vm\",access:{requiredLogin:!1}}).otherwise({redirectTo:\"/\"}),e.html5Mode(!0)}function e(n,e,t){n.$on(\"$routeChangeStart\",function(n,o,r){var i=\"/profile\"===e.path(),l=t.isLoggedIn();i&&!l&&e.path(\"/\")})}angular.module(\"meanApp\",[\"ngRoute\"]),angular.module(\"meanApp\").config([\"$routeProvider\",\"$locationProvider\",n]).run([\"$rootScope\",\"$location\",\"authentication\",e])}(),function(){function n(){console.log(\"Home controller is running\")}angular.module(\"meanApp\").controller(\"homeCtrl\",n)}(),function(){function n(n){}angular.module(\"meanApp\").controller(\"profileCtrl\",n),n.$inject=[\"$location\"]}(),function(){function n(n,e){var t=this;t.credentials={email:\"\",password:\"\"},t.onSubmit=function(){console.log(\"Submit login form:\",t.credentials),e.login(t.credentials).error(function(n){alert(n)}).then(function(){n.path(\"profile\")})}}angular.module(\"meanApp\").controller(\"loginCtrl\",n),n.$inject=[\"$location\",\"authentication\"]}(),function(){function n(n,e){var t=this;t.credentials={name:\"Simon\",email:\"\",password:\"\"},t.onSubmit=function(){console.log(\"Submitting registration\"),e.register(t.credentials).error(function(n){alert(n)}).then(function(){n.path(\"profile\")})}}angular.module(\"meanApp\").controller(\"registerCtrl\",n),n.$inject=[\"$location\",\"authentication\"]}(),function(){function n(n,e){var t=function(n){e.localStorage[\"mean-token\"]=n},o=function(){return e.localStorage[\"mean-token\"]},r=function(){var n,t=o();return t?(n=t.split(\".\")[1],n=e.atob(n),n=JSON.parse(n),n.exp>Date.now()/1e3):!1},i=function(){if(r()){var n=o(),t=n.split(\".\")[1];return t=e.atob(t),t=JSON.parse(t),{email:t.email,name:t.name}}};return register=function(e){return n.post(\"/api/register\",e).success(function(n){t(n.token)})},login=function(e){return n.post(\"/api/login\",e).success(function(n){t(n.token)})},logout=function(){e.localStorage.removeItem(\"mean-token\")},{currentUser:i,saveToken:t,getToken:o,isLoggedIn:r,register:register,login:login,logout:logout}}angular.module(\"meanApp\").service(\"authentication\",n),n.$inject=[\"$http\",\"$window\"]}(),function(){function n(n,e){var t=this;t.isLoggedIn=e.isLoggedIn(),t.currentUser=e.currentUser()}angular.module(\"meanApp\").controller(\"navigationCtrl\",n),n.$inject=[\"$location\",\"authentication\"]}(),function(){function n(){return{restrict:\"EA\",templateUrl:\"/common/directives/navigation/navigation.template.html\",controller:\"navigationCtrl as navvm\"}}angular.module(\"meanApp\").directive(\"navigation\",n)}();"],"sourceRoot":"/source/"} \ No newline at end of file diff --git a/app_client/auth/login/login.controller.js b/app_client/auth/login/login.controller.js index 5cfb0ee..cb7eb99 100644 --- a/app_client/auth/login/login.controller.js +++ b/app_client/auth/login/login.controller.js @@ -14,14 +14,15 @@ }; vm.onSubmit = function () { + console.log('Submit login form:', vm.credentials); authentication - .login(vm.credentials) - .error(function(err){ - alert(err); - }) - .then(function(){ - $location.path('profile'); - }); + .login(vm.credentials) + .error(function(err){ + alert(err); + }) + .then(function(){ + $location.path('profile'); + }); }; } diff --git a/app_client/auth/register/register.controller.js b/app_client/auth/register/register.controller.js index e6d174d..99bf13d 100644 --- a/app_client/auth/register/register.controller.js +++ b/app_client/auth/register/register.controller.js @@ -9,12 +9,13 @@ var vm = this; vm.credentials = { - name : "", + name : "Simon", email : "", password : "" }; vm.onSubmit = function () { + console.log('Submitting registration'); authentication .register(vm.credentials) .error(function(err){ diff --git a/app_client/main.js b/app_client/main.js index 300bebf..6fae746 100644 --- a/app_client/main.js +++ b/app_client/main.js @@ -1,28 +1,43 @@ (function () { angular.module('meanApp', ['ngRoute']); + // .config(config) + // .run(run); + function config ($routeProvider, $locationProvider) { $routeProvider .when('/', { templateUrl: 'home/home.view.html', controller: 'homeCtrl', - controllerAs: 'vm' + controllerAs: 'vm', + access: { + requiredLogin: false + } }) .when('/register', { templateUrl: '/auth/register/register.view.html', controller: 'registerCtrl', - controllerAs: 'vm' + controllerAs: 'vm', + access: { + requiredLogin: false + } }) .when('/login', { templateUrl: '/auth/login/login.view.html', controller: 'loginCtrl', - controllerAs: 'vm' + controllerAs: 'vm', + access: { + requiredLogin: false + } }) .when('/profile', { templateUrl: '/profile/profile.view.html', controller: 'profileCtrl', - controllerAs: 'vm' + controllerAs: 'vm', + access: { + requiredLogin: false + } }) .otherwise({redirectTo: '/'}); @@ -30,8 +45,21 @@ $locationProvider.html5Mode(true); } + // run.$inject = ['$rootScope', '$location', '$window']; + function run($rootScope, $location, authentication) { + $rootScope.$on('$routeChangeStart', function(event, nextRoute, currentRoute) { + var restrictedPage = $location.path() === '/profile'; + var loggedIn = authentication.isLoggedIn(); + if (restrictedPage && !loggedIn) { + $location.path('/'); + } + }); + } + angular .module('meanApp') - .config(['$routeProvider', '$locationProvider', config]); + .config(['$routeProvider', '$locationProvider', config]) + .run(['$rootScope', '$location', 'authentication', run]); + })(); \ No newline at end of file diff --git a/app_client/profile/profile.view.html b/app_client/profile/profile.view.html index 319f628..6bb0037 100644 --- a/app_client/profile/profile.view.html +++ b/app_client/profile/profile.view.html @@ -10,11 +10,11 @@

Your profile

-

Simon Holmes

+

{{ vm.user.name }}

-

simon@fullstacktraining.com

+

{{ vm.user.email }}

diff --git a/package.json b/package.json index 0d0af3a..fae7dc1 100644 --- a/package.json +++ b/package.json @@ -10,10 +10,13 @@ "cookie-parser": "~1.3.3", "debug": "~2.1.1", "express": "~4.11.1", + "express-jwt": "^3.0.1", "jade": "~1.9.1", "jsonwebtoken": "^5.0.4", "mongoose": "^4.1.2", "morgan": "~1.5.1", + "passport": "^0.2.2", + "passport-local": "^1.0.0", "serve-favicon": "~2.2.0" }, "devDependencies": {