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

后端 未结 3 1586
说谎
说谎 2020-12-14 23:02

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 cod

3条回答
  •  庸人自扰
    2020-12-14 23:13

    If anyone is interested. This approach can be used when you want to check if a user is a member of a group using the group name.

        var currentUserIsMemberOf = function(groupName){
          var found = false;
          var dfd = $.Deferred(function(){
             SP.SOD.executeOrDelayUntilScriptLoaded(function(){
                context = new SP.ClientContext.get_current();
                allGroups = context.get_web().get_siteGroups();
                context.load(allGroups);
                context.load(allGroups, 'Include(Users)');
    
                context.executeQueryAsync(
                   function(){
                      var groupsEnumerator = allGroups.getEnumerator();
                      while (groupsEnumerator.moveNext()) {
                          var group = groupsEnumerator.get_current();               
                          if(group.get_title() == groupName) {
                              var usersEnumerator = group.get_users().getEnumerator();
                              while (usersEnumerator.moveNext()) {
                                 var user = usersEnumerator.get_current();   
                                 if(user.get_id() == _spPageContextInfo.userId) {
                                    found = true;
                                    break;
                                 }
                              }
                          }
                       }
                      dfd.resolve(found);
                   },
                   function(){
                      dfd.reject(args.get_message());
                   }
                );
             }, 'sp.js');
          });
          return dfd.promise();
       }
    

    You can use like this

    currentUserIsMemberOf("Members of Demo").done(function(result){ 
                                                      alert(result) 
                                                    });
    

    Note this code use Promise, you can reference jQuery use your own custom Deferred object or remove Deferred object.

提交回复
热议问题