Set a Private Permission for an Item
Copy
You want to set a new private Permission for an Item.
Technique
Use the Item Class Extended Method set to set a new private Permission for an Item.
JavaScript
// Set up the Part query
var innovator = new Innovator;
var qryItem = innovator.newItem(“Part”, “get”);
qryItem.setAttribute(“select”, “id,permission_id”);
qryItem.setAttribute(“expand”, “1");
qryItem.setAttribute(“levels”, “1");
qryItem.setPropertyCondition(“item_number”, “like”);
qryItem.setProperty(“item_number”, “123%");
// Run the query and check for errors
var resultItem = qryItem.apply();
if (resultItem.isError()) {
top.aras.AlertError(resultItem.getErrorDetail());
return;
}
// Iterate over the Items returned and add the private permissions for each.
var count = resultItem.getItemCount();
for (i=0; i<count; ++i) {
var item = resultItem.getItemByIndex(i);
var permItem = item.getPropertyItem(“permission_id”);
// Remove existing permissions first
var accesses = permItem.getRelationships(“Access”);
for (i=0; i<accesses.getItemCount(); i++) {
var access = accesses.getItemByIndex(i);
access.setAction(“delete”);
}
permItem.setProperty(“name”, permItem.getID());
setIdentityAccess(permItem, “Component Engineering”, “get”, true);
setIdentityAccess(permItem, “CM”, “get”, true);
setIdentityAccess(permItem, “CM”, “update”, true);
// Grant access to the current user’s alias identity
var myAlias = innovator.newItem(“Alias”,"get”);
myAlias.setProperty(“source_id”, inn.getUserID());
myAlias = myAlias.apply();
var aliasId = myAlias.getItemByIndex(0).getProperty(“related_id”);
var aliasName = innovator.getItemById(“Identity”,aliasId).getProperty(“name”);
setIdentityAccess(permItem, aliasName, “get”, true);
item.setAction(“edit”);
resultItem = item.apply();
if (resultItem.isError()) { top.aras.AlertError(resultItem.getErrorDetail()); }
}
function setIdentityAccess(item, identityName, permType, accessState)
{
var identity = item.newItem();
identity.setType(“Identity”);
identity.setAction(“get”);
identity.setProperty(“name”, identityName);
var access = item.newItem(“Access”,"add”);
access.setProperty(“can_"+permType, (accessState ? “1" : “0"));
access.setRelatedItem(identity);
item.addRelationship(access);
}