Search code examples
sharepointsharepoint-2010sharepoint-2013csom

Check if Current Users belongs to SP group using javascript Client Side Object Model


I havent found a specific example of how to get the current user and then check if it belongs to a specific sharepoint group, as I havent found anything I cant provide a code,

help on the right direction is appreciated.


Solution

  • SharePoint 2013 CSOM

    Prerequisites: compatible with SharePoint 2013 CSOM API only since SP.GroupCollection.getByName Method is not available in SharePoint 2010

    How to check if current user belongs to SharePoint group via CSOM (JavaScript):

    function IsCurrentUserMemberOfGroup(groupName, OnComplete) {
    
            var currentContext = new SP.ClientContext.get_current();
            var currentWeb = currentContext.get_web();
    
            var currentUser = currentContext.get_web().get_currentUser();
            currentContext.load(currentUser);
    
            var allGroups = currentWeb.get_siteGroups();
            currentContext.load(allGroups);
    
            var group = allGroups.getByName(groupName);
            currentContext.load(group);
    
            var groupUsers = group.get_users();
            currentContext.load(groupUsers);
    
            currentContext.executeQueryAsync(OnSuccess,OnFailure);
    
            function OnSuccess(sender, args) {
                var userInGroup = false;
                var groupUserEnumerator = groupUsers.getEnumerator();
                while (groupUserEnumerator.moveNext()) {
                    var groupUser = groupUserEnumerator.get_current();
                    if (groupUser.get_id() == currentUser.get_id()) {
                        userInGroup = true;
                        break;
                    }
                }  
                OnComplete(userInGroup);
            }
    
            function OnFailure(sender, args) {
                OnComplete(false);
            }    
    }
    

    Usage

    IsCurrentUserMemberOfGroup("Approvers", function (isCurrentUserInGroup) {
       if(isCurrentUserInGroup)
       {
          //...
       }
    });
    

    SharePoint 2010/2013 CSOM

    function isUserMemberOfGroup(userId, groupId, success,error) {
    
         var ctx = SP.ClientContext.get_current(); 
         var allGroups = ctx.get_web().get_siteGroups();
         var group = allGroups.getById(groupId);
         ctx.load(group,'Users');
    
         ctx.executeQueryAsync(
            function(sender, args) {
                var userInGroup = findUserById(group.get_users(),userId);
                success(userInGroup);
           },
           error);    
    
           var findUserById = function(users,id){
               var found = false;
               var e =  group.get_users().getEnumerator();
               while (e.moveNext()) {
                    var user = e.get_current();
                    if (user.get_id() == id) {
                        found = true;
                        break;
                    }
               } 
               return found; 
           };
    }
    

    Usage

    var currentUserId = _spPageContextInfo.userId;
    var groupId = 4;
    isUserMemberOfGroup(currentUserId, groupId, 
          function (isCurrentUserInGroup) {
              if(isCurrentUserInGroup)
                  console.log('Current user is a member of Owners group'); 
              else
                  console.log('Current user is not a member of Owners group'); 
          },
          function(sender,args){
             console.log(args.get_message());
          });