Recently, I met with an interesting requirement, that we need to filter some of the records using the Current Logged in User Groups using JavaScript. i.e., if the User presents in a Specific Group should see a particular record set. i.e., While rendering all the records, we need to inject this validation. For that, the below code can be used. The code is straight forward and the inline comments will explain the flow. Thought of sharing this to the community.
<script src="https://c4968397007.dc07.loc:2000/sites/DeveloperSite/Style%20Library/jquery-1.9.0.min.js"></script>
<script type="text/javascript">
function TempMethod()
{
//alert('Loaded');
}
function CheckCurrentUserMembership() {
var clientContext = SP.ClientContext.get_current();
this.currentUser = clientContext.get_web().get_currentUser();
clientContext.load(this.currentUser);
this.userGroups = this.currentUser.get_groups();
clientContext.load(this.userGroups);
clientContext.executeQueryAsync(OnQuerySucceeded);
}
function OnQuerySucceeded() {
var isMember = false;
var groupsEnumerator = this.userGroups.getEnumerator();
while (groupsEnumerator.moveNext()) {
var group= groupsEnumerator.get_current();
if(group.get_title() == "Administrator Group") {
isMember = true;
alert('Success');
break;
}
}
OnResult(isMember);
}
function OnQueryFailed() {
OnResult(false);
}
$(document).ready(function ($) {
ExecuteOrDelayUntilScriptLoaded(TempMethod, "SP.js");
SP.SOD.executeFunc('sp.js', 'SP.ClientContext', TempMethod);
//ExecuteOrDelayUntilScriptLoaded(TempMethod, "SP.ClientContext");
CheckCurrentUserMembership();
});
</script>
Here I have added this script on a blank Script Editor Webpart for my development purpose.
The same thing can be done in a reverse passion also. i.e., Get all the User Groups on the Site, make sure that the current user is in those groups or not. But, for me, I felt the above one is optimized.
Happy Coding,
Sathish Nadarajan.
Leave a comment