Skip to content
This repository was archived by the owner on Mar 4, 2025. It is now read-only.

Feature/sso accounts app integration #826

Merged
merged 3 commits into from
Jun 15, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/account/account.routes.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import angular from 'angular'
}
},
'login': {
url: '/login?next&code&state&status&userJWTToken&utm_source&utm_medium&utm_campaign',
url: '/login/?next&code&state&status&userJWTToken&utm_source&utm_medium&utm_campaign',
views: {
'header@': {},
'container@': {},
Expand Down
66 changes: 42 additions & 24 deletions app/layout/header/header.controller.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
import angular from 'angular'
import _ from 'lodash'
import { loadUser } from '../../services/userv3.service.js'

(function() {
'use strict'

angular.module('tc.layout').controller('HeaderController', HeaderController)

HeaderController.$inject = ['$state', 'TcAuthService', 'CONSTANTS', 'logger', '$rootScope', 'UserService', 'ProfileService', 'NavService']
HeaderController.$inject = ['$scope', '$state', 'TcAuthService', 'CONSTANTS', 'logger', '$rootScope', 'UserService', 'ProfileService', 'NavService']

function HeaderController($state, TcAuthService, CONSTANTS, logger, $rootScope, UserService, ProfileService, NavService) {
function HeaderController($scope, $state, TcAuthService, CONSTANTS, logger, $rootScope, UserService, ProfileService, NavService) {
var vm = this

vm.constants = CONSTANTS
Expand All @@ -31,7 +32,7 @@ import _ from 'lodash'
activate()

function activate() {
initHeaderProps('default')
validateAndInitHeader('default')

// List of events that might force header update
angular.forEach([
Expand All @@ -40,37 +41,54 @@ import _ from 'lodash'
CONSTANTS.EVENT_PROFILE_UPDATED
], function(event) {
$rootScope.$on(event, function() {
initHeaderProps(event)
validateAndInitHeader(event)
})
})
}

function initHeaderProps(event) {
logger.debug(event + ' triggered header update.')

/**
* Validates login state and then initiate header update. If user is not loaded yet, i.e.,
* page is reloaded or page is loaded for the first time, currentUser is not set yet. In this
* case we try to load user first and if we are able to load user, update header properties
* otherwise it assumes the page to be loaded without login.
*/
function validateAndInitHeader(event) {
vm.isAuth = TcAuthService.isAuthenticated()

if (vm.isAuth) {
vm.userHandle = UserService.getUserIdentity().handle

vm.userMenu = [
{ 'sref': 'dashboard', 'text': 'DASHBOARD', 'icon': require('../../../assets/images/nav/dashboard.svg') },
{ 'sref': 'profile.about', 'srefParams': { 'userHandle': vm.userHandle }, 'text': 'MY PROFILE', 'icon': require('../../../assets/images/nav/profile.svg') },
{ 'href': vm.constants.COMMUNITY_URL + '/PactsMemberServlet?module=PaymentHistory&full_list=false', 'text': 'PAYMENTS', 'icon': require('../../../assets/images/nav/wallet.svg') },
{ 'sref': 'settings.profile', 'text': 'SETTINGS', 'icon': require('../../../assets/images/nav/settings.svg') }
]

ProfileService.getUserProfile(vm.userHandle)
.then(function(data) {
vm.profile = data
vm.userHandleColor = ProfileService.getUserHandleColor(vm.profile)
})
.catch(function(err) {
logger.error('Unable to get user profile data', err)
initHeaderProps(event)
} else {
loadUser().then(function(token) {
// update auth flag
vm.isAuth = TcAuthService.isAuthenticated()
initHeaderProps(event)
}, function(error) {
// do nothing, just show non logged in state of navigation bar
})
}
}

function initHeaderProps(event) {
logger.debug(event + ' triggered header update.')

vm.userHandle = UserService.getUserIdentity().handle

vm.userMenu = [
{ 'sref': 'dashboard', 'text': 'DASHBOARD', 'icon': require('../../../assets/images/nav/dashboard.svg') },
{ 'sref': 'profile.about', 'srefParams': { 'userHandle': vm.userHandle }, 'text': 'MY PROFILE', 'icon': require('../../../assets/images/nav/profile.svg') },
{ 'href': vm.constants.COMMUNITY_URL + '/PactsMemberServlet?module=PaymentHistory&full_list=false', 'text': 'PAYMENTS', 'icon': require('../../../assets/images/nav/wallet.svg') },
{ 'sref': 'settings.profile', 'text': 'SETTINGS', 'icon': require('../../../assets/images/nav/settings.svg') }
]

return ProfileService.getUserProfile(vm.userHandle)
.then(function(data) {
vm.profile = data
vm.userHandleColor = ProfileService.getUserHandleColor(vm.profile)
})
.catch(function(err) {
logger.error('Unable to get user profile data', err)
})
}

function selectedGroup() {
return _.get(NavService, 'selectedTopLevelItem', null)
}
Expand Down
1 change: 1 addition & 0 deletions app/services/introduction.service.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ import _ from 'lodash'
var currentPage = $state.current.name
var handleInParams = $stateParams.userHandle ? $stateParams.userHandle.toLowerCase() : null
var userIntroJSStats = store.get(userId)
userIntroJSStats = userIntroJSStats ? userIntroJSStats : {}

if (!userIntroJSStats.dashboardIntroComplete && _.includes(currentPage, 'dashboard')) {
userIntroJSStats.dashboardIntroComplete = true
Expand Down
4 changes: 0 additions & 4 deletions app/services/tcAuth.service.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,7 @@ import { getCurrentUser, logout as doLogout } from './userv3.service.js'
}

function isAuthenticated() {
logger.debug('AuthTokenService.getV2Token(): ' + AuthTokenService.getV2Token())
logger.debug('AuthTokenService.getTCSSOToken(): ' + AuthTokenService.getTCSSOToken())
logger.debug('getCurrentUser(): ' + getCurrentUser())
return !!getCurrentUser() && !!AuthTokenService.getV2Token() && !!AuthTokenService.getTCSSOToken()

}

}
Expand Down
6 changes: 5 additions & 1 deletion app/topcoder.module.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ import { getCurrentUser, loadUser } from './services/userv3.service.js'
// check AuthNAuth on change state start
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) {
logger.debug('checking auth for state: ' + toState.name + ' from state: ' + fromState.name)
if (!toState.data || !toState.data.authRequired) {
return true
}
var currentUser = getCurrentUser()
if (!currentUser) {
event.preventDefault()
Expand All @@ -66,12 +69,13 @@ import { getCurrentUser, loadUser } from './services/userv3.service.js'
var next = $state.href(toState.name, toParams, {absolute: true})
var retUrl = next
$window.location = CONSTANTS.ACCOUNTS_APP_URL + '?retUrl=' + encodeURIComponent(retUrl)
} else {
} else { // should never land in this block
logger.debug('Going to state: ' + toState.name)
$state.go(toState.name, toParams, {notify: false})
$urlRouter.sync()
}
})
return false
}
})

Expand Down