@Olivier-Le-Boulch
Bonjour,
Ci-dessous une proposition de script Live Security pour répondre à votre besoin.
Je vous le mets dans un fichier : Live_Security_contient.js
/* START CONFIG */
var securedDims = {};
securedDims["lab5"] = "Direction" ; /*Séparer par un | pour ajouter d'autres membres Ex: "Direction | Administration" */
/* Ajouter ici les autres dimensions sur lequel du live security doit s’appliquer */
/*
securedDims["DIMENSION_NAME_2"] = getUserAttribute("USER_PARAM_2");
*/
/* END CONFIG */
/* MODIFY THE SCRIPT BELOW WITH CAUTION */
var sLogPrefix = "[LIVE_SECURITY] [live-sec-thread-" + Math.floor(Math.random()*16777215).toString(16) + "]"; /* 16777215 is FFFFFF in decimal */
for (var dimId in securedDims)
{
var dim = selection.dm.objName[dimId];
Packages.com.digdash.utils.MessageStack.getInstance().addDebug(sLogPrefix + "Ce qu'il y a dans dim: " + dim.id);
var persoVal = securedDims[dimId];
//Packages.com.digdash.utils.MessageStack.getInstance().addDebug(sLogPrefix + "Applying user filters on: " + dimId + ", persoVal:" + persoVal);
if (dim)
{
if (persoVal == null || persoVal.length == 0)
{
// user must no see any value
var persoValuesTab = ["-noval-"];
var filt = new FilterSelection(dim, -1, -1, [], persoValuesTab);
selection.setFilter(filt);
//Packages.com.digdash.utils.MessageStack.getInstance().addDebug(sLogPrefix + " Filters (members) on " + dimId + ": [" + persoValuesTab + "]");
}
else if (persoVal && persoVal != ".*")
{
//user is limited to some value(s)
var persoValuesTab = persoVal.split("|");
Packages.com.digdash.utils.MessageStack.getInstance().addDebug(sLogPrefix + " Applying user filters on " + dimId + ": [" + persoValuesTab[0] + "]");
//var dim_2 = selection.dm.getDimensionById("lab5");
var members = dim.members;
var filterToSet = [];
for(var i=0;i<persoValuesTab.length;i++){
Packages.com.digdash.utils.MessageStack.getInstance().addDebug(sLogPrefix + " Applying user filters on " + dimId + ": [" + members.length + "]");
for(var j=0;j<members.length;j++){
Packages.com.digdash.utils.MessageStack.getInstance().addDebug(sLogPrefix + " Applying user filters on " + dimId + ": [" + persoValuesTab[i] + "]");
if(members[j].indexOf(persoValuesTab[i]) != -1){
filterToSet.push(members[j]);
Packages.com.digdash.utils.MessageStack.getInstance().addDebug(sLogPrefix + " Applying user filters on " + dimId + ": [" + members[j] + "]");
}
}
}
var exFilter = selection.filterByDimName[dimId];
if (!exFilter)
{
//there is no exisitng filter on that dimension => create a new one
var filt = new FilterSelection(dim, -1, -1, [], filterToSet);
selection.setFilter(filt);
//Packages.com.digdash.utils.MessageStack.getInstance().addDebug(sLogPrefix + " Resolved filters (members) on " + dimId + ": [" + persoValuesTab + "]");
}
else
{
//there is already a filter on that dimension => merge (intersect) into a new one
var filt = new FilterSelection(dim, -1, -1, [], filterToSet);
filt.recalcIds();
exFilter.recalcIds();
exFilter = mergeFilters(exFilter, filt);
selection.setFilter(exFilter);
//Packages.com.digdash.utils.MessageStack.getInstance().addDebug(sLogPrefix + " Resolved filters (origIds) on " + dimId + ": [" + exFilter.origIds + "]");
}
}
else // perso value is .*
{
// do nothing, user can see everything
//Packages.com.digdash.utils.MessageStack.getInstance().addDebug(sLogPrefix + " Resolved filters on " + dimId + ": All (.*)");
}
}
else
{
//Packages.com.digdash.utils.MessageStack.getInstance().addError(sLogPrefix + " Dimension " + dimId + "not found");
}
}
Cordialement,