blob: e7a3856b2f782fab90c66597f06f143bd6ea9371 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
// Manages the user session
define(function(require){
'use strict';
var VXPortalUser = require('models/VXPortalUser');
// Private properties
var vXPortalUser = null;
var vSessionSettings = null;
// Public methods
var SessionMgr = {};
/**
* Gets the user profile for the given session
*
* @returns VXPortalUser
*/
SessionMgr.getUserProfile = function() {
if ( vXPortalUser){
return vXPortalUser;
}
vXPortalUser = new VXPortalUser();
vXPortalUser.getUserProfile({async : false,cache:false}).done(function(data){
vXPortalUser.set(data);
});
return vXPortalUser;
};
SessionMgr.getLoginId = function() {
if (vXPortalUser) {
return vXPortalUser.get('loginId');
}
};
SessionMgr.userInRole = function(role) {
var vXPortalUser = SessionMgr.getUserProfile();
var userRoles = vXPortalUser.get('userRoleList');
if (!userRoles || !role) {
return false;
}
if (userRoles.constructor != Array) {
userRoles = [ userRoles ];
}
return (userRoles.indexOf(role) > -1);
};
SessionMgr.getUserRoles = function() {
var vXPortalUser = SessionMgr.getUserProfile();
var userRoles = vXPortalUser.get('userRoleList');
if (!userRoles) {
return [];
}
if (userRoles.constructor != Array) {
userRoles = [ userRoles ];
}
return userRoles;
};
SessionMgr.getSetting = function(key) {
if (!vSessionSettings) {
var msResponse = GeneralMgr.getSessionSettings();
if (msResponse.isSuccess()) {
vSessionSettings = msResponse.response;
}
}
var value = null;
if (vSessionSettings && key) {
vSessionSettings.each(function(vNameValue) {
if (vNameValue.get('name') == key) {
value = vNameValue.get('value');
}
});
}
return value;
};
SessionMgr.resetSession = function() {
vXPortalUser = null;
vSessionSettings = null;
MSCacheMgr.resetAll();
};
/**
* Logs out the user and resets all session variables
*/
SessionMgr.logout = function(reDirectUser) {
SessionMgr.resetSession();
MSCacheMgr.resetAll();
if (reDirectUser) {
// This will ask the browser to redirect
window.location.replace("logout.html");
} else {
// We will do an implicit logout
$.ajax({
url : 'logout.html',
type : 'GET',
async : false
});
}
};
SessionMgr.isSystemAdmin = function(){
return this.userInRole('ROLE_SYS_ADMIN') ? true : false;
};
SessionMgr.isKeyAdmin = function(){
return this.userInRole('ROLE_KEY_ADMIN') ? true : false;
};
SessionMgr.isUser = function(){
return this.userInRole('ROLE_USER') ? true : false;
};
return SessionMgr;
});