From 570c3aa469988d24995b693643a9762df2696530 Mon Sep 17 00:00:00 2001 From: Juanfran Date: Tue, 19 May 2015 15:20:05 +0200 Subject: [PATCH] hide navigation bar if the user is not logged --- app/coffee/modules/auth.coffee | 2 ++ .../navigation-bar.directive.coffee | 1 + .../navigation-bar.directive.spec.coffee | 5 +++++ .../navigation-bar/navigation-bar.jade | 2 +- .../services/current-user.service.coffee | 20 +++++++++++++++---- .../services/current-user.service.spec.coffee | 17 ++++++++++++++++ 6 files changed, 42 insertions(+), 5 deletions(-) diff --git a/app/coffee/modules/auth.coffee b/app/coffee/modules/auth.coffee index a675ca65..4e3867e6 100644 --- a/app/coffee/modules/auth.coffee +++ b/app/coffee/modules/auth.coffee @@ -117,6 +117,8 @@ class AuthService extends taiga.Service @.removeToken() @.clear() + @currentUserService.removeUser() + register: (data, type, existing) -> url = @urls.resolve("auth-register") diff --git a/app/modules/navigation-bar/navigation-bar.directive.coffee b/app/modules/navigation-bar/navigation-bar.directive.coffee index ba8e0fe6..ef3c0f2a 100644 --- a/app/modules/navigation-bar/navigation-bar.directive.coffee +++ b/app/modules/navigation-bar/navigation-bar.directive.coffee @@ -3,6 +3,7 @@ NavigationBarDirective = (currentUserService) -> scope.vm = {} taiga.defineImmutableProperty(scope.vm, "projects", () -> currentUserService.projects.get("recents")) + taiga.defineImmutableProperty(scope.vm, "isAuthenticated", () -> currentUserService.isAuthenticated()) directive = { templateUrl: "navigation-bar/navigation-bar.html" diff --git a/app/modules/navigation-bar/navigation-bar.directive.spec.coffee b/app/modules/navigation-bar/navigation-bar.directive.spec.coffee index 62d9aa42..ffb906ee 100644 --- a/app/modules/navigation-bar/navigation-bar.directive.spec.coffee +++ b/app/modules/navigation-bar/navigation-bar.directive.spec.coffee @@ -17,6 +17,7 @@ describe "navigationBarDirective", () -> _mocksCurrentUserService = () -> mocks.currentUserService = { projects: projects + isAuthenticated: sinon.stub() } provide.value "tgCurrentUserService", mocks.currentUserService @@ -66,3 +67,7 @@ describe "navigationBarDirective", () -> elm = createDirective() scope.$apply() expect(elm.isolateScope().vm.projects.size).to.be.equal(3) + + mocks.currentUserService.isAuthenticated.returns(true) + + expect(elm.isolateScope().vm.isAuthenticated).to.be.true diff --git a/app/modules/navigation-bar/navigation-bar.jade b/app/modules/navigation-bar/navigation-bar.jade index a9921145..ba5455a6 100644 --- a/app/modules/navigation-bar/navigation-bar.jade +++ b/app/modules/navigation-bar/navigation-bar.jade @@ -1,4 +1,4 @@ -nav.navbar +nav.navbar(ng-if="vm.isAuthenticated") div.nav-left a.logo( href="#", diff --git a/app/modules/services/current-user.service.coffee b/app/modules/services/current-user.service.coffee index 652e7d68..924ca587 100644 --- a/app/modules/services/current-user.service.coffee +++ b/app/modules/services/current-user.service.coffee @@ -9,21 +9,33 @@ class CurrentUserService ] constructor: (@projectsService, @storageService) -> - @._user = Immutable.Map() + @._user = null @._projects = Immutable.Map() @._projectsById = Immutable.Map() taiga.defineImmutableProperty @, "projects", () => return @._projects taiga.defineImmutableProperty @, "projectsById", () => return @._projectsById + isAuthenticated: -> + if @.getUser() != null + return true + return false + getUser: () -> - if !@._user.size + if !@._user userData = @storageService.get("userInfo") - userData = Immutable.fromJS(userData) - @.setUser(userData) if userData + + if userData + userData = Immutable.fromJS(userData) + @.setUser(userData) return @._user + removeUser: () -> + @._user = null + @._projects = Immutable.Map() + @._projectsById = Immutable.Map() + setUser: (user) -> @._user = user diff --git a/app/modules/services/current-user.service.spec.coffee b/app/modules/services/current-user.service.spec.coffee index 200e1e12..8d47a599 100644 --- a/app/modules/services/current-user.service.spec.coffee +++ b/app/modules/services/current-user.service.spec.coffee @@ -88,3 +88,20 @@ describe "tgCurrentUserService", -> expect(currentUserService._loadProjects).to.be.callOnce done() + + it "is authenticated", () -> + currentUserService.getUser = sinon.stub() + currentUserService.getUser.returns({}) + + expect(currentUserService.isAuthenticated()).to.be.true + + currentUserService.getUser.returns(null) + + expect(currentUserService.isAuthenticated()).to.be.false + + it "remove user", () -> + currentUserService._user = true + + currentUserService.removeUser() + + expect(currentUserService._user).to.be.null