Einer unserer Kunden hatte die Anforderung an uns gestellt, dass User abhängig von der SharePoint Gruppe in der sie sich befinden, auf unterschiedliche Startseiten gelangen sollen. Nach kurzer Überlegung wie dies umgesetzt werden kann, kam ich zu folgender Lösung. Mittels JavaScript lese ich die Gruppen des aktuellen Users aus und wenn er in der erforderlichen Gruppe ist, wird er automatisch auf die entsprechende Startseite weitergeleitet. Dazu habe ich der Startseite einen Content-Editor Webpart mit folgendem Inhalt hinzugefügt:

function CheckIfCurrentUserMemberOfGroup(groupName, OnComplete) {
        // ClientContext auslesen.
        var currentContext = new SP.ClientContext.get_current();
        var currentWeb = currentContext.get_web();

        // Aktuellen User laden.
        var currentUser = currentContext.get_web().get_currentUser();
        currentContext.load(currentUser);

        // Alle Gruppen laden.
        var allGroups = currentWeb.get_siteGroups();
        currentContext.load(allGroups);

        // Benötigte Gruppe laden.
        var group = allGroups.getByName(groupName);
        currentContext.load(group);

        // Alle User in dieser Gruppe laden.
        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();
                // Wenn die ID des aktuellen Users mit der ID des Users
                // aus der Gruppe übereinstimmt
                if (groupUser.get_id() == currentUser.get_id()) {
                    userInGroup = true;
                    break;
                }
            }  
            OnComplete(userInGroup);
        }

        function OnFailure(sender, args) {
            OnComplete(false);
        }    
}

Verwendung:

function CheckIfCurrentUserHasContribPerms() 
{
  CheckIfCurrentUserMemberOfGroup("Smarter", function (isCurrentUserInGroup) {
    if(isCurrentUserInGroup)
    {
        // Der aktuelle User ist in der Gruppe [Smarter]!
        window.location.replace("https://smartersolutions.at") 
    }
  });

}
ExecuteOrDelayUntilScriptLoaded(CheckIfCurrentUserHasContribPerms, 'SP.js');

Mittels diesem Webpart wird überprüft, ob der aktuell angemeldete User Mitglied der Gruppe „Smarter“ ist. Sofern dies der Fall ist, wird er automatisch zu „https://smarterbusiness.at“ weitergeleitet. Wenn der aktuelle User kein Mitglied dieser Gruppe ist, passiert nichts. Folglich bleibt er auf der aktuellen Seite.

Durch diesen smarten JavaScript-Code kann der User nicht nur weitergeleitet werden, sondern je nach Gruppe in der sich der User befindet, auch beliebige Aktionen durchführen. Dies funktioniert jedoch nur in SharePoint 2013 oder höher, da es die Funktion SP.GroupCollection.getByName in SharePoint 2010 noch nicht gibt.

Bei Fragen oder Anregungen verfasst einen Kommentar zu diesem Blog oder schreibt mir eine E-Mail.

Happy Coding!
Liebe Grüße, Stefan