diff --git a/src/assets/scripts/app/index.js b/src/assets/scripts/app/index.js index 6ff29c6..8820ca5 100644 --- a/src/assets/scripts/app/index.js +++ b/src/assets/scripts/app/index.js @@ -1,5 +1,6 @@ import angular from 'angular'; import ngRoute from 'angular-route'; +import UserService from './shared.service'; angular.module('NomitWisp', [ @@ -14,6 +15,7 @@ angular.module('NomitWisp', ngRoute ]) + .factory(UserService.name, UserService) .config(function ($routeProvider) { $routeProvider .when('/', { diff --git a/src/assets/scripts/app/shared.service.js b/src/assets/scripts/app/shared.service.js new file mode 100644 index 0000000..c9c9c1b --- /dev/null +++ b/src/assets/scripts/app/shared.service.js @@ -0,0 +1,27 @@ +import * as $ from 'jquery'; + +function parseJwt(token) { + var base64Url = token.split('.')[1]; + var base64 = base64Url.replace('-', '+').replace('_', '/'); + return JSON.parse(window.atob(base64)); +}; + +const UserService = ($cookies, $rootScope) => { + + let serv = {}; + + //load user has been called (is called on page load in menu controller and after login on modal controller) + serv.loadUser = function () { + if(typeof $cookies.get('access_token') !== 'undefined' ){ + $rootScope.$broadcast('loadUserSuccess', parseJwt( $cookies.get('access_token') )); + $('#modalLoginForm').modal('hide'); + } else { + $('#modalLoginForm').modal('show'); + } + } + + return serv; + +}; + +export default UserService; \ No newline at end of file diff --git a/src/assets/scripts/dashboard/controller.js b/src/assets/scripts/dashboard/controller.js index c0a3dd9..c809da7 100644 --- a/src/assets/scripts/dashboard/controller.js +++ b/src/assets/scripts/dashboard/controller.js @@ -1,17 +1,11 @@ /** @ngInject */ -const DashboardController = ($scope, $cookies) => { - const token = $cookies.get('access_token'); - console.log(token); - - if(typeof(token) !== "undefined"){ - $scope.user = parseJwt( token ); - } -} +const DashboardController = ($scope, UserService) => { + $scope.$on('loadUserSuccess', function(event, user) { + $scope.user = user; -function parseJwt(token) { - var base64Url = token.split('.')[1]; - var base64 = base64Url.replace('-', '+').replace('_', '/'); - return JSON.parse(window.atob(base64)); -}; + // tutte le funzioni del controller + + }); +} export default DashboardController; \ No newline at end of file diff --git a/src/assets/scripts/dashboard/index.js b/src/assets/scripts/dashboard/index.js index 722e817..e08dd66 100644 --- a/src/assets/scripts/dashboard/index.js +++ b/src/assets/scripts/dashboard/index.js @@ -1,6 +1,5 @@ import * as angular from 'angular'; -import ngCookies from 'angular-cookies'; import DashboardController from './controller'; -angular.module('nwDashboard', [ngCookies]) - .controller(DashboardController.name, DashboardController); \ No newline at end of file +angular.module('nwDashboard', []) + .controller(DashboardController.name, DashboardController); diff --git a/src/assets/scripts/index.js b/src/assets/scripts/index.js index e326821..e122642 100755 --- a/src/assets/scripts/index.js +++ b/src/assets/scripts/index.js @@ -17,8 +17,8 @@ import './fullcalendar'; import './googleMaps'; import './utils'; import './user-form'; -import './login'; import './logout'; +import './nwLogin'; import './nwFooter'; import './nwSidebar'; import './nwTopbar'; diff --git a/src/assets/scripts/login/controller.js b/src/assets/scripts/login/controller.js deleted file mode 100644 index c641f51..0000000 --- a/src/assets/scripts/login/controller.js +++ /dev/null @@ -1,30 +0,0 @@ -const LoginController = ($scope, LoginService, $cookies) => { - $scope.userLogged = false; - - if(typeof $cookies.get('access_token') !== 'undefined' ){ - $scope.userLogged = true; - $scope.user = parseJwt( $cookies.get('access_token') ); - } - $scope.userLogin = async () => { - - let result = await LoginService.loginUserService($scope.user); - if( $scope.user !== "" || $scope.user !== "undefined"){ - console.log(result); - $scope.userLogged = true; - $scope.user = parseJwt( result ); - $cookies.put('access_token', result); - console.log('Redirect me to Dashboard.'); - } else { - console.log("User is empty"); - - } - } -}; - -function parseJwt(token) { - var base64Url = token.split('.')[1]; - var base64 = base64Url.replace('-', '+').replace('_', '/'); - return JSON.parse(window.atob(base64)); -}; - -export default LoginController; \ No newline at end of file diff --git a/src/assets/scripts/nwLogin/controller.js b/src/assets/scripts/nwLogin/controller.js new file mode 100644 index 0000000..ce1e3a2 --- /dev/null +++ b/src/assets/scripts/nwLogin/controller.js @@ -0,0 +1,22 @@ +const LoginController = ($scope, $cookies, LoginService, UserService) => { + + // load the user if already logged in, for all controllers + UserService.loadUser(); + + $scope.userLogin = async () => { + + let result = await LoginService.loginUserService($scope.user); + if( typeof result.token !== "undefined"){ + + // save the cookie and reload the user for all controllers + $cookies.put('access_token', result.token); + UserService.loadUser(); + + } else { + alert(result); + } + } + +}; + +export default LoginController; \ No newline at end of file diff --git a/src/assets/scripts/login/index.js b/src/assets/scripts/nwLogin/index.js similarity index 63% rename from src/assets/scripts/login/index.js rename to src/assets/scripts/nwLogin/index.js index b93d652..e299548 100644 --- a/src/assets/scripts/login/index.js +++ b/src/assets/scripts/nwLogin/index.js @@ -4,9 +4,14 @@ import LoginController from './controller'; import LoginService from './service'; angular.module('NomitWisp-Login', [ngCookies]) - .config(['$httpProvider', function($httpProvider) { - $httpProvider.defaults.withCredentials = true; - }]) + .directive('nwLogin', nwLogin) .controller(LoginController.name, LoginController) .factory(LoginService.name, LoginService); - + +/** @ngInject */ +function nwLogin(){ + return { + restrict: 'E', + templateUrl: 'assets/scripts/nwLogin/nwLogin.html' + }; +} \ No newline at end of file diff --git a/src/assets/scripts/nwLogin/nwLogin.html b/src/assets/scripts/nwLogin/nwLogin.html new file mode 100644 index 0000000..f61b041 --- /dev/null +++ b/src/assets/scripts/nwLogin/nwLogin.html @@ -0,0 +1,156 @@ + + \ No newline at end of file diff --git a/src/assets/scripts/login/service.js b/src/assets/scripts/nwLogin/service.js similarity index 56% rename from src/assets/scripts/login/service.js rename to src/assets/scripts/nwLogin/service.js index 5218508..6aef381 100644 --- a/src/assets/scripts/login/service.js +++ b/src/assets/scripts/nwLogin/service.js @@ -1,7 +1,7 @@ const LoginService = ($http) => { let serv = {}; - serv.loginUserService = (user) =>{ + serv.loginUserService = (user) => { return $http({ method: 'POST', url: 'https://nomitwisp-restapi.herokuapp.com/login', @@ -9,11 +9,11 @@ const LoginService = ($http) => { headers: { 'Content-Type': 'application/json' } }) .then( (result) => { - console.log(result.data.token); - return result.data.token; + console.log(result); + return result.data; }, (err) => { - console.log(err.data); - return err.data; + console.log(err); + return err.data; }); } return serv; diff --git a/src/index.html b/src/index.html index 88c214c..bbfef74 100755 --- a/src/index.html +++ b/src/index.html @@ -86,10 +86,13 @@ - - + + - + + + + \ No newline at end of file diff --git a/src/login.html b/src/login.html index 929bda7..15618b4 100644 --- a/src/login.html +++ b/src/login.html @@ -75,163 +75,6 @@ Launch demo modal - - -