Commit f5d03df54f790d144140d36fcef83ed8da0b0f6a
1 parent
c31c2869
Exists in
master
and in
8 other branches
auth: add login/logout. (no social yet)
Showing
15 changed files
with
209 additions
and
108 deletions
Show diff stats
bower.json
| @@ -15,6 +15,7 @@ | @@ -15,6 +15,7 @@ | ||
| 15 | "bootstrap-sass-official": "~3.3.4", | 15 | "bootstrap-sass-official": "~3.3.4", |
| 16 | "jquery": "~2.1.4", | 16 | "jquery": "~2.1.4", |
| 17 | "modernizr": "~2.8.3", | 17 | "modernizr": "~2.8.3", |
| 18 | + "ngstorage": "~0.3.9", | ||
| 18 | "open-sans-fontface": "~1.4.2" | 19 | "open-sans-fontface": "~1.4.2" |
| 19 | }, | 20 | }, |
| 20 | "devDependencies": { | 21 | "devDependencies": { |
| @@ -0,0 +1,60 @@ | @@ -0,0 +1,60 @@ | ||
| 1 | +(function() { | ||
| 2 | + 'use strict'; | ||
| 3 | + | ||
| 4 | + angular | ||
| 5 | + .module('dialoga') | ||
| 6 | + .directive('authUser', authUser); | ||
| 7 | + | ||
| 8 | + /** @ngInject */ | ||
| 9 | + function authUser() { | ||
| 10 | + | ||
| 11 | + /** @ngInject */ | ||
| 12 | + function AuthUserController($scope, AuthService, Session, AUTH_EVENTS, $log) { | ||
| 13 | + $log.debug('AuthUserController'); | ||
| 14 | + | ||
| 15 | + var vm = this; | ||
| 16 | + | ||
| 17 | + vm.$scope = $scope; | ||
| 18 | + vm.AuthService = AuthService; | ||
| 19 | + vm.Session = Session; | ||
| 20 | + vm.AUTH_EVENTS = AUTH_EVENTS; | ||
| 21 | + vm.$log = $log; | ||
| 22 | + | ||
| 23 | + vm.init(); | ||
| 24 | + } | ||
| 25 | + | ||
| 26 | + AuthUserController.prototype.init = function (){ | ||
| 27 | + var vm = this; | ||
| 28 | + | ||
| 29 | + vm.currentUser = vm.Session.getCurrentUser(); | ||
| 30 | + | ||
| 31 | + // handle login | ||
| 32 | + vm.$scope.$on(vm.AUTH_EVENTS.loginSuccess, function () { | ||
| 33 | + vm.currentUser = vm.Session.getCurrentUser(); | ||
| 34 | + }); | ||
| 35 | + | ||
| 36 | + // handle logout | ||
| 37 | + vm.$scope.$on(vm.AUTH_EVENTS.logoutSuccess, function () { | ||
| 38 | + vm.currentUser = vm.Session.getCurrentUser(); | ||
| 39 | + }); | ||
| 40 | + }; | ||
| 41 | + | ||
| 42 | + AuthUserController.prototype.onClickLogout = function (){ | ||
| 43 | + var vm = this; | ||
| 44 | + | ||
| 45 | + vm.AuthService.logout(); | ||
| 46 | + }; | ||
| 47 | + | ||
| 48 | + var directive = { | ||
| 49 | + restrict: 'E', | ||
| 50 | + templateUrl: 'app/components/auth-user/auth-user.html', | ||
| 51 | + controller: AuthUserController, | ||
| 52 | + controllerAs: 'vm', | ||
| 53 | + bindToController: true | ||
| 54 | + }; | ||
| 55 | + | ||
| 56 | + return directive; | ||
| 57 | + | ||
| 58 | + } | ||
| 59 | + | ||
| 60 | +})(); |
| @@ -0,0 +1,15 @@ | @@ -0,0 +1,15 @@ | ||
| 1 | +<div class="auth-user"> | ||
| 2 | + <div ng-if="vm.currentUser" class="pull-right"> | ||
| 3 | + <span>{{::vm.currentUser.login}}</span> | ||
| 4 | + <span>|</span> | ||
| 5 | + <button type="button" class="btn btn-link" ng-click="vm.onClickLogout()">Sair</button> | ||
| 6 | + </div> | ||
| 7 | + | ||
| 8 | + <div ng-if="!vm.currentUser"> | ||
| 9 | + <button type="button" class="btn btn-link pull-right" ui-sref="entrar"> | ||
| 10 | + <!-- <span class="icon icon-user" aria-hidden="true"></span> --> | ||
| 11 | + <span class="glyphicon glyphicon-user"></span> | ||
| 12 | + Entrar | ||
| 13 | + </button> | ||
| 14 | + </div> | ||
| 15 | +</div> |
src/app/components/auth/auth.service.js
| @@ -10,18 +10,9 @@ | @@ -10,18 +10,9 @@ | ||
| 10 | /** @ngInject */ | 10 | /** @ngInject */ |
| 11 | function AuthService($http, $rootScope, Session, AUTH_EVENTS, API, $log) { | 11 | function AuthService($http, $rootScope, Session, AUTH_EVENTS, API, $log) { |
| 12 | 12 | ||
| 13 | - var service = { | ||
| 14 | - login: login, | ||
| 15 | - logout: logout, | ||
| 16 | - isAuthenticated: isAuthenticated, | ||
| 17 | - isAuthorized: isAuthorized | ||
| 18 | - }; | ||
| 19 | - | ||
| 20 | - $log.debug('AuthService', service); | ||
| 21 | - return service; | ||
| 22 | - | ||
| 23 | function login (credentials) { | 13 | function login (credentials) { |
| 24 | - var url = API.host + '/api/v1/login'; | 14 | + var hostProd = 'http://login.dialoga.gov.br'; |
| 15 | + var url = hostProd + '/api/v1/login'; | ||
| 25 | var encodedData = 'login=' + credentials.username + '&password=' + credentials.password; | 16 | var encodedData = 'login=' + credentials.username + '&password=' + credentials.password; |
| 26 | 17 | ||
| 27 | return $http | 18 | return $http |
| @@ -40,7 +31,10 @@ | @@ -40,7 +31,10 @@ | ||
| 40 | } | 31 | } |
| 41 | 32 | ||
| 42 | function logout () { | 33 | function logout () { |
| 34 | + | ||
| 43 | Session.destroy(); | 35 | Session.destroy(); |
| 36 | + | ||
| 37 | + $rootScope.$broadcast(AUTH_EVENTS.logoutSuccess); | ||
| 44 | } | 38 | } |
| 45 | 39 | ||
| 46 | function isAuthenticated () { | 40 | function isAuthenticated () { |
| @@ -54,42 +48,42 @@ | @@ -54,42 +48,42 @@ | ||
| 54 | 48 | ||
| 55 | return (service.isAuthenticated() && authorizedRoles.indexOf(Session.userRole) !== -1); | 49 | return (service.isAuthenticated() && authorizedRoles.indexOf(Session.userRole) !== -1); |
| 56 | } | 50 | } |
| 51 | + | ||
| 52 | + var service = { | ||
| 53 | + login: login, | ||
| 54 | + logout: logout, | ||
| 55 | + isAuthenticated: isAuthenticated, | ||
| 56 | + isAuthorized: isAuthorized | ||
| 57 | + }; | ||
| 58 | + | ||
| 59 | + $log.debug('AuthService', service); | ||
| 60 | + return service; | ||
| 57 | } | 61 | } |
| 58 | 62 | ||
| 59 | /** @ngInject */ | 63 | /** @ngInject */ |
| 60 | - function Session($cookies, $log) { | 64 | + function Session($localStorage, $log) { |
| 61 | 65 | ||
| 62 | var service = {}; | 66 | var service = {}; |
| 63 | 67 | ||
| 64 | - var currentUser = $cookies.getObject('currentUser') || {}; | 68 | + // $localStorage.currentUser = $localStorage.currentUser || null; |
| 65 | 69 | ||
| 66 | service.create = function(data) { | 70 | service.create = function(data) { |
| 67 | 71 | ||
| 68 | - currentUser.id = data.id; | ||
| 69 | - currentUser.email = data.email; | ||
| 70 | - currentUser.login = data.login; | ||
| 71 | - currentUser.permissions = data.permissions; | ||
| 72 | - currentUser.person = data.person; | ||
| 73 | - currentUser.private_token = data.private_token; | ||
| 74 | - currentUser.activated = data.activated; | ||
| 75 | - | ||
| 76 | - $cookies.putObject('currentUser', currentUser); | 72 | + $localStorage.currentUser = data; |
| 73 | + $log.debug('User session created.', $localStorage.currentUser); | ||
| 77 | 74 | ||
| 78 | - $log.debug('User session created.', currentUser); | ||
| 79 | - return currentUser; | 75 | + return $localStorage.currentUser; |
| 80 | }; | 76 | }; |
| 81 | 77 | ||
| 82 | service.destroy = function() { | 78 | service.destroy = function() { |
| 83 | 79 | ||
| 84 | - currentUser = {}; | ||
| 85 | - | ||
| 86 | - $cookies.remove('currentUser'); | 80 | + delete $localStorage.currentUser; |
| 87 | 81 | ||
| 88 | $log.debug('User session destroyed.'); | 82 | $log.debug('User session destroyed.'); |
| 89 | }; | 83 | }; |
| 90 | 84 | ||
| 91 | service.getCurrentUser = function () { | 85 | service.getCurrentUser = function () { |
| 92 | - return currentUser; | 86 | + return $localStorage.currentUser; |
| 93 | }; | 87 | }; |
| 94 | 88 | ||
| 95 | return service; | 89 | return service; |
src/app/components/navbar/navbar.html
| 1 | <nav id="navigation" class="header-navbar navbar navbar-static-top" role="navigation"> | 1 | <nav id="navigation" class="header-navbar navbar navbar-static-top" role="navigation"> |
| 2 | - <div class="container-fluid"> | ||
| 3 | - <div class="navbar-header"> | ||
| 4 | - <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false"> | ||
| 5 | - <span class="sr-only">Alternar menu de navegação</span> | ||
| 6 | - <span class="icon-bar" aria-hidden="true"></span> | ||
| 7 | - <span class="icon-bar" aria-hidden="true"></span> | ||
| 8 | - <span class="icon-bar" aria-hidden="true"></span> | ||
| 9 | - </button> | ||
| 10 | - <a class="navbar-brand" ui-sref="inicio"> | ||
| 11 | - <img src="/assets/images/logo.png" alt="Dialoga Brasil | O país fica melhor quando você participa" /> | ||
| 12 | - <!-- <span class="glyphicon glyphicon-home"></span> Início --> | ||
| 13 | - </a> | ||
| 14 | - </div> | 2 | + <div class="navbar-header"> |
| 3 | + <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false"> | ||
| 4 | + <span class="sr-only">Alternar menu de navegação</span> | ||
| 5 | + <span class="icon-bar" aria-hidden="true"></span> | ||
| 6 | + <span class="icon-bar" aria-hidden="true"></span> | ||
| 7 | + <span class="icon-bar" aria-hidden="true"></span> | ||
| 8 | + </button> | ||
| 9 | + <a class="navbar-brand" ui-sref="inicio"> | ||
| 10 | + <img src="/assets/images/logo.png" alt="Dialoga Brasil | O país fica melhor quando você participa" /> | ||
| 11 | + <!-- <span class="glyphicon glyphicon-home"></span> Início --> | ||
| 12 | + </a> | ||
| 13 | + </div> | ||
| 15 | 14 | ||
| 16 | - <div id="navbar-collapse" class="collapse navbar-collapse"> | ||
| 17 | - <ul class="nav navbar-nav"> | ||
| 18 | - <li><a ui-sref="sobre">Sobre</a></li> | ||
| 19 | - <li><a ui-sref="programas">Programas</a></li> | ||
| 20 | - <li><a ui-sref="propostas">Propostas</a></li> | ||
| 21 | - <!-- <li><a ui-sref="ranking">Ranking</a></li> --> | ||
| 22 | - <li><a ui-sref="duvidas">Dúvidas</a></li> | ||
| 23 | - <!-- <li><a ui-sref="respostas">Respostas</a></li> --> | ||
| 24 | - </ul> | ||
| 25 | - </div> | 15 | + <div id="navbar-collapse" class="collapse navbar-collapse"> |
| 16 | + <ul class="nav navbar-nav"> | ||
| 17 | + <li><a ui-sref="sobre">Sobre</a></li> | ||
| 18 | + <li><a ui-sref="programas">Programas</a></li> | ||
| 19 | + <li><a ui-sref="propostas">Propostas</a></li> | ||
| 20 | + <!-- <li><a ui-sref="ranking">Ranking</a></li> --> | ||
| 21 | + <li><a ui-sref="duvidas">Dúvidas</a></li> | ||
| 22 | + <!-- <li><a ui-sref="respostas">Respostas</a></li> --> | ||
| 23 | + </ul> | ||
| 26 | </div> | 24 | </div> |
| 27 | </nav> | 25 | </nav> |
src/app/components/navbar/navbar.scss
| @@ -2,6 +2,16 @@ | @@ -2,6 +2,16 @@ | ||
| 2 | 2 | ||
| 3 | .navbar-brand { | 3 | .navbar-brand { |
| 4 | height: auto; | 4 | height: auto; |
| 5 | + padding-bottom: 0; | ||
| 6 | + padding-left: 0; | ||
| 7 | + } | ||
| 8 | + | ||
| 9 | + .navbar-toggle { | ||
| 10 | + margin-top: 20px; | ||
| 11 | + | ||
| 12 | + .icon-bar { | ||
| 13 | + height: 3px; | ||
| 14 | + } | ||
| 5 | } | 15 | } |
| 6 | 16 | ||
| 7 | .navbar-nav a { | 17 | .navbar-nav a { |
src/app/index.config.js
| @@ -3,13 +3,13 @@ | @@ -3,13 +3,13 @@ | ||
| 3 | 3 | ||
| 4 | angular | 4 | angular |
| 5 | .module('dialoga') | 5 | .module('dialoga') |
| 6 | - .config(configAuthInterceptor) | 6 | + .config(configHeadersInterceptor) |
| 7 | .config(configLocationProvider) | 7 | .config(configLocationProvider) |
| 8 | .config(configBreadcrumbProvider) | 8 | .config(configBreadcrumbProvider) |
| 9 | .config(config); | 9 | .config(config); |
| 10 | 10 | ||
| 11 | /** @ngInject */ | 11 | /** @ngInject */ |
| 12 | - function configAuthInterceptor ($httpProvider){ | 12 | + function configHeadersInterceptor ($httpProvider){ |
| 13 | 13 | ||
| 14 | //Reset headers to avoid OPTIONS request (aka preflight) | 14 | //Reset headers to avoid OPTIONS request (aka preflight) |
| 15 | $httpProvider.defaults.headers.common = {}; | 15 | $httpProvider.defaults.headers.common = {}; |
src/app/index.module.js
| @@ -2,6 +2,6 @@ | @@ -2,6 +2,6 @@ | ||
| 2 | 'use strict'; | 2 | 'use strict'; |
| 3 | 3 | ||
| 4 | angular | 4 | angular |
| 5 | - .module('dialoga', ['ngAnimate', 'ngCookies', 'ngTouch', 'ngSanitize', 'ui.router', 'socialLinks', 'slugifier', 'ncy-angular-breadcrumb']); | 5 | + .module('dialoga', ['ngAnimate', 'ngCookies', 'ngTouch', 'ngSanitize', 'ui.router', 'ngStorage', 'socialLinks', 'slugifier', 'ncy-angular-breadcrumb']); |
| 6 | 6 | ||
| 7 | })(); | 7 | })(); |
src/app/index.run.js
| @@ -13,7 +13,7 @@ | @@ -13,7 +13,7 @@ | ||
| 13 | .run(runBlock); | 13 | .run(runBlock); |
| 14 | 14 | ||
| 15 | /** @ngInject */ | 15 | /** @ngInject */ |
| 16 | - function runAuth($rootScope, $cookies, USER_ROLES, AUTH_EVENTS, AuthService, $log) { | 16 | + function runAuth($rootScope, $localStorage, USER_ROLES, AUTH_EVENTS, AuthService, $log) { |
| 17 | 17 | ||
| 18 | // Listner url/state changes, and check permission | 18 | // Listner url/state changes, and check permission |
| 19 | $rootScope.$on('$stateChangeStart', function(event, next) { | 19 | $rootScope.$on('$stateChangeStart', function(event, next) { |
| @@ -38,6 +38,8 @@ | @@ -38,6 +38,8 @@ | ||
| 38 | } | 38 | } |
| 39 | }); | 39 | }); |
| 40 | 40 | ||
| 41 | + $rootScope.currentUser = $localStorage.currentUser; | ||
| 42 | + | ||
| 41 | $log.debug('[RUN] Auth end.'); | 43 | $log.debug('[RUN] Auth end.'); |
| 42 | } | 44 | } |
| 43 | 45 |
src/app/pages/auth/auth.controller.js
| @@ -6,12 +6,13 @@ | @@ -6,12 +6,13 @@ | ||
| 6 | .controller('AuthPageController', AuthPageController); | 6 | .controller('AuthPageController', AuthPageController); |
| 7 | 7 | ||
| 8 | /** @ngInject */ | 8 | /** @ngInject */ |
| 9 | - function AuthPageController($rootScope, AUTH_EVENTS, AuthService, Session, $log) { | 9 | + function AuthPageController($scope, $rootScope, AUTH_EVENTS, AuthService, Session, $log) { |
| 10 | $log.debug('AuthPageController'); | 10 | $log.debug('AuthPageController'); |
| 11 | 11 | ||
| 12 | var vm = this; | 12 | var vm = this; |
| 13 | 13 | ||
| 14 | vm.$rootScope = $rootScope; | 14 | vm.$rootScope = $rootScope; |
| 15 | + vm.$scope = $scope; | ||
| 15 | vm.AUTH_EVENTS = AUTH_EVENTS; | 16 | vm.AUTH_EVENTS = AUTH_EVENTS; |
| 16 | vm.AuthService = AuthService; | 17 | vm.AuthService = AuthService; |
| 17 | vm.Session = Session; | 18 | vm.Session = Session; |
| @@ -27,15 +28,33 @@ | @@ -27,15 +28,33 @@ | ||
| 27 | vm.credentials = {}; | 28 | vm.credentials = {}; |
| 28 | 29 | ||
| 29 | // attach events | 30 | // attach events |
| 31 | + vm.currentUser = vm.Session.getCurrentUser(); | ||
| 30 | 32 | ||
| 33 | + // handle login | ||
| 34 | + vm.$scope.$on(vm.AUTH_EVENTS.loginSuccess, function () { | ||
| 35 | + vm.currentUser = vm.Session.getCurrentUser(); | ||
| 36 | + }); | ||
| 37 | + | ||
| 38 | + // handle logout | ||
| 39 | + vm.$scope.$on(vm.AUTH_EVENTS.logoutSuccess, function () { | ||
| 40 | + vm.currentUser = vm.Session.getCurrentUser(); | ||
| 41 | + }); | ||
| 31 | // ... | 42 | // ... |
| 32 | }; | 43 | }; |
| 33 | 44 | ||
| 45 | + | ||
| 46 | + AuthPageController.prototype.onClickLogout = function (){ | ||
| 47 | + var vm = this; | ||
| 48 | + | ||
| 49 | + vm.AuthService.logout(); | ||
| 50 | + }; | ||
| 51 | + | ||
| 34 | AuthPageController.prototype.login = function(credentials) { | 52 | AuthPageController.prototype.login = function(credentials) { |
| 35 | var vm = this; | 53 | var vm = this; |
| 36 | 54 | ||
| 37 | - vm.AuthService.login(credentials).then(function(/*user*/) { | 55 | + vm.AuthService.login(credentials).then(function(user) { |
| 38 | // handle view | 56 | // handle view |
| 57 | + vm.$log.debug('user', user); | ||
| 39 | }, function() { | 58 | }, function() { |
| 40 | // handle view | 59 | // handle view |
| 41 | }); | 60 | }); |
src/app/pages/auth/signin.html
| 1 | <section role="main" class="section-gray auth-content"> | 1 | <section role="main" class="section-gray auth-content"> |
| 2 | <div class="container"> | 2 | <div class="container"> |
| 3 | - <div class="row"> | ||
| 4 | - <div class="col-sm-8 col-sm-offset-2"> | ||
| 5 | - <h2>Identifique-se</h2> | ||
| 6 | - <form name="loginForm" ng-submit="pageSignin.login(pageSignin.credentials)"> | ||
| 7 | - <div class="form-group"> | ||
| 8 | - <label for="inputUsername" class="sr-only">E-mail:</label> | ||
| 9 | - <div class="input-group"> | ||
| 10 | - <div class="input-group-addon"><span class="glyphicon glyphicon-user"></span></div> | ||
| 11 | - <input type="text" id="inputUsername" class="form-control" placeholder="E-mail" required="" autofocus="" ng-model="pageSignin.credentials.username"> | 3 | + |
| 4 | + <div ng-if="pageSignin.currentUser"> | ||
| 5 | + <div class="row"> | ||
| 6 | + <div class="col-sm-8 col-sm-offset-2"> | ||
| 7 | + <h3>Você está logado!</h3> | ||
| 8 | + <button type="button" ng-click="pageSignin.onClickLogout()" class="btn btn-primary">Sair</button> | ||
| 9 | + </div> | ||
| 10 | + </div> | ||
| 11 | + </div> | ||
| 12 | + | ||
| 13 | + <div ng-if="!pageSignin.currentUser"> | ||
| 14 | + <div class="row"> | ||
| 15 | + <div class="col-sm-8 col-sm-offset-2"> | ||
| 16 | + <h2>Identifique-se</h2> | ||
| 17 | + <form name="loginForm" ng-submit="pageSignin.login(pageSignin.credentials)"> | ||
| 18 | + <div class="form-group"> | ||
| 19 | + <label for="inputUsername" class="sr-only">E-mail:</label> | ||
| 20 | + <div class="input-group"> | ||
| 21 | + <div class="input-group-addon"><span class="glyphicon glyphicon-user"></span></div> | ||
| 22 | + <input type="text" id="inputUsername" class="form-control" placeholder="E-mail" required="" autofocus="" ng-model="pageSignin.credentials.username"> | ||
| 23 | + </div> | ||
| 24 | + </div> | ||
| 25 | + <div class="form-group"> | ||
| 26 | + <label for="inputPassword" class="sr-only">Senha:</label> | ||
| 27 | + <div class="input-group"> | ||
| 28 | + <div class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></div> | ||
| 29 | + <input type="password" id="inputPassword" class="form-control" placeholder="Senha" required="" ng-model="pageSignin.credentials.password"> | ||
| 30 | + </div> | ||
| 12 | </div> | 31 | </div> |
| 13 | - </div> | ||
| 14 | - <div class="form-group"> | ||
| 15 | - <label for="inputPassword" class="sr-only">Senha:</label> | ||
| 16 | - <div class="input-group"> | ||
| 17 | - <div class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></div> | ||
| 18 | - <input type="password" id="inputPassword" class="form-control" placeholder="Senha" required="" ng-model="pageSignin.credentials.password"> | 32 | + <div class="form-group"> |
| 33 | + <button class="btn btn-lg btn-primary btn-block" type="submit">Entrar</button> | ||
| 19 | </div> | 34 | </div> |
| 20 | - </div> | ||
| 21 | - <div class="form-group"> | ||
| 22 | - <button class="btn btn-lg btn-primary btn-block" type="submit">Entrar</button> | ||
| 23 | - </div> | ||
| 24 | - </form> | 35 | + </form> |
| 36 | + </div> | ||
| 25 | </div> | 37 | </div> |
| 26 | - </div> | ||
| 27 | - <div class="row"> | ||
| 28 | - <div class="col-sm-8 col-sm-offset-2"> | ||
| 29 | - <hr class="separator-or"></hr> | 38 | + <div class="row"> |
| 39 | + <div class="col-sm-8 col-sm-offset-2"> | ||
| 40 | + <hr class="separator-or"></hr> | ||
| 41 | + </div> | ||
| 30 | </div> | 42 | </div> |
| 31 | - </div> | ||
| 32 | - <div class="row"> | ||
| 33 | - <div class="col-sm-8 col-sm-offset-2"> | ||
| 34 | - <button class="btn btn-lg btn-link btn-block" type="button" ui-sref="cadastrar">Cadastre-se</button> | 43 | + <div class="row"> |
| 44 | + <div class="col-sm-8 col-sm-offset-2"> | ||
| 45 | + <button class="btn btn-lg btn-link btn-block" type="button" ui-sref="cadastrar">Cadastre-se</button> | ||
| 46 | + </div> | ||
| 35 | </div> | 47 | </div> |
| 36 | </div> | 48 | </div> |
| 37 | </div> | 49 | </div> |
src/app/pages/header/header.html
| @@ -2,25 +2,19 @@ | @@ -2,25 +2,19 @@ | ||
| 2 | 2 | ||
| 3 | <div class="row"> | 3 | <div class="row"> |
| 4 | <div class="col-sm-12"> | 4 | <div class="col-sm-12"> |
| 5 | - | ||
| 6 | - <div class="accessibility-wrapper"> | ||
| 7 | - | ||
| 8 | - <button type="button" class="btn btn-link pull-right" ui-sref="entrar"> | ||
| 9 | - <span class="icon icon-user" aria-hidden="true"></span> | ||
| 10 | - Entrar | ||
| 11 | - </button> | ||
| 12 | - </div> | 5 | + <auth-user></auth-user> |
| 13 | </div> | 6 | </div> |
| 14 | </div> | 7 | </div> |
| 15 | 8 | ||
| 16 | <div class="row"> | 9 | <div class="row"> |
| 17 | - <app-navbar></app-navbar> | 10 | + <div class="col-sm-12"> |
| 11 | + <app-navbar></app-navbar> | ||
| 12 | + </div> | ||
| 18 | </div> | 13 | </div> |
| 19 | 14 | ||
| 20 | - <!-- TODO: breadcrumb --> | ||
| 21 | - <!-- <ol class="breadcrumb"> | ||
| 22 | - <li><a href="#">Home</a></li> | ||
| 23 | - <li><a href="#">Library</a></li> | ||
| 24 | - <li class="active">Data</li> | ||
| 25 | - </ol> --> | 15 | + <div class="row"> |
| 16 | + <div class="col-sm-12"> | ||
| 17 | + <div ncy-breadcrumb></div> | ||
| 18 | + </div> | ||
| 19 | + </div> | ||
| 26 | </header> | 20 | </header> |
src/app/pages/programas/programa.html
| 1 | <div class="page--conheca-o-programa"> | 1 | <div class="page--conheca-o-programa"> |
| 2 | <section> | 2 | <section> |
| 3 | <div class="container"> | 3 | <div class="container"> |
| 4 | - <div ng-if="pageProgramaContent.article && pageProgramaContent.article.title"> | ||
| 5 | - <div ncy-breadcrumb></div> | ||
| 6 | - </div> | ||
| 7 | - </div> | ||
| 8 | - </section> | ||
| 9 | - | ||
| 10 | - <section> | ||
| 11 | - <div class="container"> | ||
| 12 | <div ng-if="!pageProgramaContent.article.body"> | 4 | <div ng-if="!pageProgramaContent.article.body"> |
| 13 | <div ng-if="!pageProgramaContent.error" class="alert alert-info" role="alert">Carregando detalhes sobre o progama...</div> | 5 | <div ng-if="!pageProgramaContent.error" class="alert alert-info" role="alert">Carregando detalhes sobre o progama...</div> |
| 14 | <div ng-if="pageProgramaContent.error" class="alert alert-warning" role="alert">{{pageProgramaContent}}</div> | 6 | <div ng-if="pageProgramaContent.error" class="alert alert-warning" role="alert">{{pageProgramaContent}}</div> |
src/index.html
| @@ -40,6 +40,7 @@ | @@ -40,6 +40,7 @@ | ||
| 40 | <div ui-view="header"></div> | 40 | <div ui-view="header"></div> |
| 41 | <div id="content" ui-view="main"></div> | 41 | <div id="content" ui-view="main"></div> |
| 42 | <div ui-view="footer"></div> | 42 | <div ui-view="footer"></div> |
| 43 | + | ||
| 43 | <div id="footer-brasil"></div> | 44 | <div id="footer-brasil"></div> |
| 44 | 45 | ||
| 45 | <!-- build:js(src) scripts/vendor.js --> | 46 | <!-- build:js(src) scripts/vendor.js --> |