Created
July 27, 2017 11:57
-
-
Save durgesh97025/a288d4cc623654b4a9dbaabe7a248e04 to your computer and use it in GitHub Desktop.
Manage Item Permission, Break, Assign New Role, Remove Existing Role
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
function PreSaveAction(){ | |
var status = $("[Title~='Status']").val(); | |
if (status == "Final"){ | |
var groupName = "XXX Owners" | |
PermissionManager.BreakInheritance().then(function(data){ | |
console.log("Permission Inheritance Breaked with roles and groups"); | |
}).fail(function(error){ | |
console.log(error); | |
}).then(function (){ | |
return PermissionManager.RoleAssignments(); | |
}).then(function (data){ | |
$.each(data.value,function(i,v){ | |
var roleSingleUrl = v["odata.id"]; | |
console.log(v); | |
$.getJSON(roleSingleUrl, function(d2){ | |
//console.log(d2); | |
//console.log(v.PrincipalId); | |
var rolDefReadId = 1073741826; | |
var roleAssignUrl = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('"+_spPageContextInfo.listTitle+"')/items("+WPQ2FormCtx.ItemAttributes.Id+")/RoleAssignments"; | |
var roleAddAssignUrl = roleAssignUrl + "/addRoleAssignment(principalid="+v.Member.Id+",roledefid=" + 1073741826 +")"; | |
if (v.Member.Title != "POC ICTD Teams Owners"){ | |
PermissionManager.AddReadPermission(roleAddAssignUrl).then(function(data){ | |
//console.log("Read assigned successfully.") | |
}).fail(function(errorObj,b,c){ | |
console.log(roleAddAssignUrl); | |
console.log(errorObj); | |
}); | |
} | |
//Now Remove all existing permission | |
var roleDefUrl = d2["odata.id"]+"/RoleDefinitionBindings"; | |
$.getJSON(roleDefUrl, function(d3){ | |
//console.log(d3); | |
$.each(d3.value, function(i2,v2){ | |
//1073741826 is read permission Id, if not read permission remove | |
if (v.Member.Title != "POC ICTD Teams Owners"){ | |
console.log("Group Title: "+v.Member.Title); | |
if (v2.Id != 1073741826){ | |
var roleRemoveUrl = roleAssignUrl+"/removeRoleAssignment(principalid="+v.Member.Id+",roledefid=" + v2.Id +")"; | |
PermissionManager.RemoveOtherPermission(roleRemoveUrl).then(function(d4){ | |
//console.log("Permission Removed"); | |
}); | |
} | |
} | |
}); | |
}); | |
}); | |
}); | |
}); | |
} | |
return false; | |
} | |
$(document).ready(function(){ | |
PreSaveAction(); | |
}); | |
var PermissionManager = { | |
Headers : { | |
"Accept": "application/json;odata=verbose", | |
"content-Type": "application/json;odata=verbose", | |
"X-RequestDigest": jQuery("#__REQUESTDIGEST").val() | |
} | |
,BreakInheritance : function(){ | |
var postUrl = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('"+_spPageContextInfo.listTitle+"')/items("+WPQ2FormCtx.ItemAttributes.Id+")/breakRoleInheritance(copyroleassignments=true,clearsubscopes=true)"; | |
return $.ajax({ | |
url: postUrl, | |
type:"POST", | |
headers:PermissionManager.Headers, | |
dataType: 'json' | |
}) | |
} | |
, RoleAssignments: function(){ | |
var url = _spPageContextInfo.webAbsoluteUrl + "/_api/web/lists/getbytitle('"+_spPageContextInfo.listTitle+"')/items("+WPQ2FormCtx.ItemAttributes.Id+")/RoleAssignments"; | |
url += "?$select=Member/Title,Member/Id&$expand=Member"; | |
return $.getJSON(url); | |
} | |
, AddReadPermission: function(url){ | |
return $.ajax({ | |
url: url, | |
type:"POST", | |
headers:PermissionManager.Headers, | |
dataType: 'json' | |
}); | |
} | |
, RemoveOtherPermission: function(url){ | |
return $.ajax({ | |
url: url, | |
type:"POST", | |
headers:PermissionManager.Headers, | |
dataType: 'json', | |
success: function(d){ | |
console.log(d); | |
} | |
}); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment