Commit f9f3529745edbcdea3ae80337d2ac4d404a031b1
1 parent
b2a04c53
Exists in
master
and in
38 other branches
Implement login page
Showing
7 changed files
with
63 additions
and
8 deletions
Show diff stats
| ... | ... | @@ -0,0 +1,17 @@ |
| 1 | +(function() { | |
| 2 | + 'use strict'; | |
| 3 | + | |
| 4 | + angular | |
| 5 | + .module('angular') | |
| 6 | + .controller('AuthController', AuthController); | |
| 7 | + | |
| 8 | + | |
| 9 | + /** @ngInject */ | |
| 10 | + function AuthController(noosfero, $log, $stateParams, AuthService) { | |
| 11 | + var vm = this; | |
| 12 | + vm.credentials = {}; | |
| 13 | + vm.login = function() { | |
| 14 | + AuthService.login(vm.credentials); | |
| 15 | + } | |
| 16 | + } | |
| 17 | +})(); | ... | ... |
src/app/components/auth/auth.service.js
| ... | ... | @@ -7,7 +7,7 @@ |
| 7 | 7 | .factory('AuthService', AuthService); |
| 8 | 8 | |
| 9 | 9 | /** @ngInject */ |
| 10 | - function AuthService($q, $http, $rootScope, Session, $log) { | |
| 10 | + function AuthService($q, $http, $rootScope, Session, $log, AUTH_EVENTS) { | |
| 11 | 11 | |
| 12 | 12 | function login (credentials) { |
| 13 | 13 | var url = '/api/v1/login'; |
| ... | ... | @@ -24,13 +24,13 @@ |
| 24 | 24 | $log.debug('AuthService.login [SUCCESS] response', response); |
| 25 | 25 | var currentUser = Session.create(response.data); |
| 26 | 26 | $rootScope.currentUser = currentUser; |
| 27 | - $rootScope.$broadcast('login-success', currentUser); | |
| 27 | + $rootScope.$broadcast(AUTH_EVENTS.loginSuccess, currentUser); | |
| 28 | 28 | return currentUser; |
| 29 | 29 | } |
| 30 | 30 | |
| 31 | 31 | function loginFailedCallback(response) { |
| 32 | 32 | $log.debug('AuthService.login [FAIL] response', response); |
| 33 | - $rootScope.$broadcast('login-failed'); | |
| 33 | + $rootScope.$broadcast(AUTH_EVENTS.loginFailed); | |
| 34 | 34 | // return $q.reject(response); |
| 35 | 35 | return null; |
| 36 | 36 | } |
| ... | ... | @@ -38,7 +38,7 @@ |
| 38 | 38 | function logout () { |
| 39 | 39 | Session.destroy(); |
| 40 | 40 | $rootScope.currentUser = undefined; |
| 41 | - $rootScope.$broadcast('logout-success'); | |
| 41 | + $rootScope.$broadcast(AUTH_EVENTS.logoutSuccess); | |
| 42 | 42 | } |
| 43 | 43 | |
| 44 | 44 | function isAuthenticated () { | ... | ... |
| ... | ... | @@ -0,0 +1,16 @@ |
| 1 | +<div class="modal-header"> | |
| 2 | + <h3 class="modal-title">Login</h3> | |
| 3 | +</div> | |
| 4 | +<div class="modal-body"> | |
| 5 | + <form> | |
| 6 | + <div class="form-group"> | |
| 7 | + <label for="exampleInputEmail1">Login / Email address</label> | |
| 8 | + <input type="text" class="form-control" id="exampleInputEmail1" placeholder="Login / Email" ng-model="vm.credentials.username"> | |
| 9 | + </div> | |
| 10 | + <div class="form-group"> | |
| 11 | + <label for="exampleInputPassword1">Password</label> | |
| 12 | + <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password" ng-model="vm.credentials.password"> | |
| 13 | + </div> | |
| 14 | + <button type="submit" class="btn btn-default" ng-click="vm.login()">Login</button> | |
| 15 | + </form> | |
| 16 | +</div> | ... | ... |
src/app/components/navbar/navbar.directive.js
| ... | ... | @@ -21,11 +21,27 @@ |
| 21 | 21 | return directive; |
| 22 | 22 | |
| 23 | 23 | /** @ngInject */ |
| 24 | - function NavbarController(moment) { | |
| 24 | + function NavbarController(moment, $modal, AuthService, Session, $scope, AUTH_EVENTS) { | |
| 25 | 25 | var vm = this; |
| 26 | 26 | |
| 27 | 27 | // "vm.creation" is avaible by directive option "bindToController: true" |
| 28 | 28 | vm.relativeDate = moment(vm.creationDate).fromNow(); |
| 29 | + vm.currentUser = Session.getCurrentUser(); | |
| 30 | + | |
| 31 | + vm.openLogin = function() { | |
| 32 | + var modalInstance = $modal.open({ | |
| 33 | + templateUrl: 'app/components/auth/login.html', | |
| 34 | + controller: 'AuthController', | |
| 35 | + controllerAs: 'vm', | |
| 36 | + bindToController: true | |
| 37 | + }); | |
| 38 | + $scope.$on(AUTH_EVENTS.loginSuccess, function() { | |
| 39 | + modalInstance.close(); | |
| 40 | + }); | |
| 41 | + }; | |
| 42 | + vm.logout = function() { | |
| 43 | + AuthService.logout(); | |
| 44 | + }; | |
| 29 | 45 | } |
| 30 | 46 | } |
| 31 | 47 | ... | ... |
src/app/components/navbar/navbar.html
src/app/index.config.js
| ... | ... | @@ -6,10 +6,11 @@ |
| 6 | 6 | .config(config); |
| 7 | 7 | |
| 8 | 8 | /** @ngInject */ |
| 9 | - function config($logProvider, $locationProvider, RestangularProvider) { | |
| 9 | + function config($logProvider, $locationProvider, RestangularProvider, $httpProvider) { | |
| 10 | 10 | $logProvider.debugEnabled(true); |
| 11 | 11 | $locationProvider.html5Mode({enabled: true}); |
| 12 | 12 | RestangularProvider.setBaseUrl('/api/v1'); |
| 13 | + $httpProvider.defaults.headers.post = {'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'}; | |
| 13 | 14 | } |
| 14 | 15 | |
| 15 | 16 | })(); | ... | ... |
src/app/index.constants.js
| ... | ... | @@ -4,6 +4,11 @@ |
| 4 | 4 | |
| 5 | 5 | angular |
| 6 | 6 | .module('angular') |
| 7 | - .constant('moment', moment); | |
| 7 | + .constant('moment', moment) | |
| 8 | + .constant('AUTH_EVENTS', { | |
| 9 | + loginSuccess: 'auth-login-success', | |
| 10 | + loginFailed: 'auth-login-failed', | |
| 11 | + logoutSuccess: 'auth-logout-success' | |
| 12 | + }); | |
| 8 | 13 | |
| 9 | 14 | })(); | ... | ... |