(function () {
'use strict';
/**
* MODULE DESCRIPTION:
*
* TODO: Write description here.
*/
angular.module('portal.dashboard', ['ui.router', 'portal.common.constants']).config(DashboardConfig)
.controller('DashboardCtrl', DashboardCtrlController);
function DashboardConfig($stateProvider, Constants) {
$stateProvider.state('dashboard', {
url: '/dashboard',
pageTitle: 'Dashboard',
templateUrl: 'main/dashboard.html',
resolve: {
authorize: ['authorize',
function (authorize) {
return authorize.validate({
authorities: {
permission: [
Constants.Permissions.VIEW_SCRIPT_TAB,
Constants.Permissions.VIEW_GIT_TAB,
Constants.Permissions.VIEW_USER_TAB,
Constants.Permissions.VIEW_CREDS_TAB,
Constants.Permissions.VIEW_LOG_TAB,
]
},
redirect: 'login'
});
}
]
}
}).state('dashboard.scripts', {
url: '/scripts',
pageTitle: 'Scripts',
templateUrl: 'main/script-bank/script-bank.html'
}).state('dashboard.repos', {
url: '/repos',
pageTitle: 'Git Repositories',
templateUrl: 'main/git-bank/git-bank.html'
}).state('dashboard.credentials', {
url: '/credentials',
pageTitle: 'Credentials',
templateUrl: 'main/cred-bank/cred-bank.html'
}).state('dashboard.emails', {
url: '/emails',
pageTitle: 'Emails',
templateUrl: 'main/email-bank/email-bank.html'
}).state('dashboard.users', {
url: '/users',
pageTitle: 'Users',
templateUrl: 'main/user-bank/user-bank.html'
}).state('dashboard.permissions', {
url: '/permissions',
pageTitle: 'Permissions',
templateUrl: 'main/permission-bank/permission-bank.html'
}).state('dashboard.envars', {
url: '/envars',
pageTitle: 'Environment Variables',
templateUrl: 'main/env-bank/env-bank.html'
}).state('dashboard.syslogs', {
url: '/syslogs',
pageTitle: 'System Logs',
templateUrl: 'main/log-bank/log-bank.html'
});
}
function DashboardCtrlController($state, $scope, cache, accountStores, accountProvider,
$window, $mdDialog, Constants) {
var originatorEv;
$scope.openMenu = function($mdMenu, ev) {
originatorEv = ev;
$mdMenu.open(ev);
};
$scope.Constants = Constants;
$scope.loadingBlock = false;
$scope.userRole = '';
$scope.tabs = [{
title: 'Scripts',
source: 'main/script-bank/script-bank.html',
state: 'dashboard.scripts',
leftItem: 'description',
active: true,
default: false,
canView: Constants.Permissions.VIEW_SCRIPT_TAB
},{
title: 'Git Repositories',
source: 'main/git-bank/git-bank.html',
state: 'dashboard.repos',
leftItem: 'computer',
active: true,
default: true,
canView: Constants.Permissions.VIEW_GIT_TAB
},{
title: 'Credentials',
source: 'main/cred-bank/cred-bank.html',
state: 'dashboard.credentials',
leftItem: 'vpn_key',
active: false,
default: false,
canView: Constants.Permissions.VIEW_CREDS_TAB
},{
title: 'Email Templates',
source: 'main/email-bank/email-bank.html',
state: 'dashboard.emails',
leftItem: 'email',
active: false,
default: false,
canView: Constants.Permissions.VIEW_EMAIL_TAB
},{
title: 'Users',
source: 'main/user-bank/user-bank.html',
state: 'dashboard.users',
leftItem: 'people',
active: false,
default: false,
canView: Constants.Permissions.VIEW_USER_TAB
},{
title: 'Permissions',
source: 'main/permission-bank/permission-bank.html',
state: 'dashboard.permissions',
leftItem: 'lock_open',
active: false,
default: false,
canView: Constants.Permissions.VIEW_PERMISSION_TAB
},{
title: 'Environment Variables',
source: 'main/env-bank/env-bank.html',
state: 'dashboard.envars',
leftItem: 'storage',
active: false,
default: false,
canView: Constants.Permissions.VIEW_ENV_VARS_TAB
},{
title: 'System Logs',
source: 'main/log-bank/log-bank.html',
state: 'dashboard.syslogs',
leftItem: 'description',
active: false,
default: false,
canView: Constants.Permissions.VIEW_LOG_TAB
}];
$scope.mCache = cache.request([new accountStores.Account()]).then(function(){
$scope.allowedTabs = [];
$.each($scope.tabs, function(i, tab){
if ($scope.mCache.account.data.hasPermission(tab.canView)) {
$scope.allowedTabs.push(tab);
}
});
$scope.$broadcast('tabsetDidChange', $scope.allowedTabs);
}).catch(function(err){ });
$scope.$on('$destroy', function () {
$scope.mCache.unlisten();
});
$scope.logout = function() {
accountProvider.logout().then(function (data) {
cache.flush();
$state.go('login');
$window.location.href = '#/login';
$window.location.reload();
}).catch(function (data) {
$state.go('login');
});
};
$scope.openConfiguration = function() {
$mdDialog.show({
controller: 'ConfigurationCtrl',
templateUrl: 'common/partials/configuration/configuration.html',
clickOutsideToClose: false,
escapeToClose: false,
locals: {
account: $scope.mCache.account
}
});
};
$scope.openSeed = function() {
$mdDialog.show({
controller: 'SeedInfoCtrl',
templateUrl: 'common/partials/seed-info/seed-info.html',
clickOutsideToClose: false,
escapeToClose: false,
});
};
$scope.openLogLevel = function() {
$mdDialog.show({
controller: 'LoggerInfoCtrl',
templateUrl: 'common/partials/logger-info/logger-info.html',
clickOutsideToClose: false,
escapeToClose: false,
});
};
$scope.openSMTPConfig = function() {
$mdDialog.show({
controller: 'SMTPInfoCtrl',
templateUrl: 'common/partials/smtp-info/smtp-info.html',
clickOutsideToClose: false,
escapeToClose: false,
});
};
} //end DashboardCtrlController function
})();