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 | })(); | ... | ... |