Knockout Role Directive Test
by sberube
HTML
<script src="http://underscorejs.org/underscore-min.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<div>
<p data-bind="requiredRoles: ['CSA_ADMINA','BBB','CCC']">This is a test</p>
<p data-bind="requiredRoles: ['CSA_ADMIN','BBB','CCC']">This is test #2</p>
</div>
JavaScript
// Custom Globals
var CSA = {
// Browser Accept Language
browserLocale: "en\x2DUS,en\x3Bq\x3D0.8",
productPerspective: "ENTERPRISE",
user: {
name: "admin",
id: "90d96588360da0c701360da0f1d600a1",
roles: ['CODAR_APPLICATION_RELEASE_MANAGER', 'SERVICE_BUSINESS_MANAGER', 'CODAR_APPLICATION_DEVELOPER', 'RESOURCE_SUPPLY_MANAGER', 'CODAR_APPLICATION_QA', 'CODAR_APPLICATION_ARCHITECT', 'CONSUMER_SERVICE_ADMINISTRATOR', 'SERVICE_CONSUMER', 'CSA_ADMIN', 'SERVICE_OPERATIONS_MANAGER', 'SERVICE_DESIGNER']
},
// this is here because of testacular: it expects files to be under '/base/', so I override it there
url: function (value) {
return value;
},
version: "20140827-0945"
};
var RoleHelper = {
ADMIN_ROLE_NAME: "CSA_ADMIN",
getActualRoles: function() {
if (CSA && CSA.user && CSA.user.roles) {
return CSA.user.roles;
}
return [];
},
// Checks if any of the roles passed in match the users actual roles
hasRequiredRole: function(requiredRoles) {
var actualRoles = this.getActualRoles();
var result = false;
if (requiredRoles === null || ( requiredRoles instanceof Array && requiredRoles.length === 0)) {
result = true;
} else {
for (var i in actualRoles) {
var actualRole = actualRoles[i];
for (var j in requiredRoles) {
var requiredRole = requiredRoles[j];
if (actualRole === requiredRole) {
result = true;
break;
}
}
if (result) {
break;
}
}
}
return result;
},
hasAdminRole: function() {
return...