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

Commit e261f01

Browse files
author
vikasrohit
authored
Merge pull request #826 from appirio-tech/feature/sso-accounts-app-integration
Feature/sso accounts app integration
2 parents f32049a + 58c5998 commit e261f01

File tree

5 files changed

+49
-30
lines changed

5 files changed

+49
-30
lines changed

app/account/account.routes.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import angular from 'angular'
1717
}
1818
},
1919
'login': {
20-
url: '/login?next&code&state&status&userJWTToken&utm_source&utm_medium&utm_campaign',
20+
url: '/login/?next&code&state&status&userJWTToken&utm_source&utm_medium&utm_campaign',
2121
views: {
2222
'header@': {},
2323
'container@': {},

app/layout/header/header.controller.js

Lines changed: 42 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import angular from 'angular'
22
import _ from 'lodash'
3+
import { loadUser } from '../../services/userv3.service.js'
34

45
(function() {
56
'use strict'
67

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

9-
HeaderController.$inject = ['$state', 'TcAuthService', 'CONSTANTS', 'logger', '$rootScope', 'UserService', 'ProfileService', 'NavService']
10+
HeaderController.$inject = ['$scope', '$state', 'TcAuthService', 'CONSTANTS', 'logger', '$rootScope', 'UserService', 'ProfileService', 'NavService']
1011

11-
function HeaderController($state, TcAuthService, CONSTANTS, logger, $rootScope, UserService, ProfileService, NavService) {
12+
function HeaderController($scope, $state, TcAuthService, CONSTANTS, logger, $rootScope, UserService, ProfileService, NavService) {
1213
var vm = this
1314

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

3334
function activate() {
34-
initHeaderProps('default')
35+
validateAndInitHeader('default')
3536

3637
// List of events that might force header update
3738
angular.forEach([
@@ -40,37 +41,54 @@ import _ from 'lodash'
4041
CONSTANTS.EVENT_PROFILE_UPDATED
4142
], function(event) {
4243
$rootScope.$on(event, function() {
43-
initHeaderProps(event)
44+
validateAndInitHeader(event)
4445
})
4546
})
4647
}
4748

48-
function initHeaderProps(event) {
49-
logger.debug(event + ' triggered header update.')
50-
49+
/**
50+
* Validates login state and then initiate header update. If user is not loaded yet, i.e.,
51+
* page is reloaded or page is loaded for the first time, currentUser is not set yet. In this
52+
* case we try to load user first and if we are able to load user, update header properties
53+
* otherwise it assumes the page to be loaded without login.
54+
*/
55+
function validateAndInitHeader(event) {
5156
vm.isAuth = TcAuthService.isAuthenticated()
52-
5357
if (vm.isAuth) {
54-
vm.userHandle = UserService.getUserIdentity().handle
55-
56-
vm.userMenu = [
57-
{ 'sref': 'dashboard', 'text': 'DASHBOARD', 'icon': require('../../../assets/images/nav/dashboard.svg') },
58-
{ 'sref': 'profile.about', 'srefParams': { 'userHandle': vm.userHandle }, 'text': 'MY PROFILE', 'icon': require('../../../assets/images/nav/profile.svg') },
59-
{ 'href': vm.constants.COMMUNITY_URL + '/PactsMemberServlet?module=PaymentHistory&full_list=false', 'text': 'PAYMENTS', 'icon': require('../../../assets/images/nav/wallet.svg') },
60-
{ 'sref': 'settings.profile', 'text': 'SETTINGS', 'icon': require('../../../assets/images/nav/settings.svg') }
61-
]
62-
63-
ProfileService.getUserProfile(vm.userHandle)
64-
.then(function(data) {
65-
vm.profile = data
66-
vm.userHandleColor = ProfileService.getUserHandleColor(vm.profile)
67-
})
68-
.catch(function(err) {
69-
logger.error('Unable to get user profile data', err)
58+
initHeaderProps(event)
59+
} else {
60+
loadUser().then(function(token) {
61+
// update auth flag
62+
vm.isAuth = TcAuthService.isAuthenticated()
63+
initHeaderProps(event)
64+
}, function(error) {
65+
// do nothing, just show non logged in state of navigation bar
7066
})
7167
}
7268
}
7369

70+
function initHeaderProps(event) {
71+
logger.debug(event + ' triggered header update.')
72+
73+
vm.userHandle = UserService.getUserIdentity().handle
74+
75+
vm.userMenu = [
76+
{ 'sref': 'dashboard', 'text': 'DASHBOARD', 'icon': require('../../../assets/images/nav/dashboard.svg') },
77+
{ 'sref': 'profile.about', 'srefParams': { 'userHandle': vm.userHandle }, 'text': 'MY PROFILE', 'icon': require('../../../assets/images/nav/profile.svg') },
78+
{ 'href': vm.constants.COMMUNITY_URL + '/PactsMemberServlet?module=PaymentHistory&full_list=false', 'text': 'PAYMENTS', 'icon': require('../../../assets/images/nav/wallet.svg') },
79+
{ 'sref': 'settings.profile', 'text': 'SETTINGS', 'icon': require('../../../assets/images/nav/settings.svg') }
80+
]
81+
82+
return ProfileService.getUserProfile(vm.userHandle)
83+
.then(function(data) {
84+
vm.profile = data
85+
vm.userHandleColor = ProfileService.getUserHandleColor(vm.profile)
86+
})
87+
.catch(function(err) {
88+
logger.error('Unable to get user profile data', err)
89+
})
90+
}
91+
7492
function selectedGroup() {
7593
return _.get(NavService, 'selectedTopLevelItem', null)
7694
}

app/services/introduction.service.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import _ from 'lodash'
4040
var currentPage = $state.current.name
4141
var handleInParams = $stateParams.userHandle ? $stateParams.userHandle.toLowerCase() : null
4242
var userIntroJSStats = store.get(userId)
43+
userIntroJSStats = userIntroJSStats ? userIntroJSStats : {}
4344

4445
if (!userIntroJSStats.dashboardIntroComplete && _.includes(currentPage, 'dashboard')) {
4546
userIntroJSStats.dashboardIntroComplete = true

app/services/tcAuth.service.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,7 @@ import { getCurrentUser, logout as doLogout } from './userv3.service.js'
2323
}
2424

2525
function isAuthenticated() {
26-
logger.debug('AuthTokenService.getV2Token(): ' + AuthTokenService.getV2Token())
27-
logger.debug('AuthTokenService.getTCSSOToken(): ' + AuthTokenService.getTCSSOToken())
28-
logger.debug('getCurrentUser(): ' + getCurrentUser())
2926
return !!getCurrentUser() && !!AuthTokenService.getV2Token() && !!AuthTokenService.getTCSSOToken()
30-
3127
}
3228

3329
}

app/topcoder.module.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ import { getCurrentUser, loadUser } from './services/userv3.service.js'
4949
// check AuthNAuth on change state start
5050
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) {
5151
logger.debug('checking auth for state: ' + toState.name + ' from state: ' + fromState.name)
52+
if (!toState.data || !toState.data.authRequired) {
53+
return true
54+
}
5255
var currentUser = getCurrentUser()
5356
if (!currentUser) {
5457
event.preventDefault()
@@ -66,12 +69,13 @@ import { getCurrentUser, loadUser } from './services/userv3.service.js'
6669
var next = $state.href(toState.name, toParams, {absolute: true})
6770
var retUrl = next
6871
$window.location = CONSTANTS.ACCOUNTS_APP_URL + '?retUrl=' + encodeURIComponent(retUrl)
69-
} else {
72+
} else { // should never land in this block
7073
logger.debug('Going to state: ' + toState.name)
7174
$state.go(toState.name, toParams, {notify: false})
7275
$urlRouter.sync()
7376
}
7477
})
78+
return false
7579
}
7680
})
7781

0 commit comments

Comments
 (0)