Auslesen der Sicherheitsrollen des angemeldeten Benutzers mit der Client-API in Dynamics 365

Um nach der Sicherheitsrolle des aktuell angemeldeten Benutzers zu suchen, haben die meisten Entwickler bis vor kurzem Xrm.Page.context.getUserRoles(); verwendet und dann den Namen der Sicherheitsrolle abgerufen.

Es gab dann in der Client Api das mittlerweile veraltete Xrm.Utility.getGlobalContext().userSettings.securityRoles, als einheitliche Schnittstelle, über die die GUID der aktuellen Sicherheitsrollen des Benutzers ausgegeben wurden, danach musste serverseitig abgefragt werden, um die Rollennamen zu erhalten.

Aber nachdem Microsoft diese API ersetzt hat, gibt es jetzt eine bessere Möglichkeit, die Namen der Sicherheitsrollen direkt über die unten stehende Client-API abzurufen:

Xrm.Utility.getGlobalContext().userSettings.roles

Die Funktion getAll() dient dazu, die Ausgabe der Rollen anstelle von _collection, direkt als Array zu erhalten.

Xrm.Utility.getGlobalContext().userSettings.roles.getAll()

Das folgende Script sucht eine Rolle in den verfügbaren Rollen des angemeldeten Benutzers:

function hasRole() {
    var roles = Xrm.Utility.getGlobalContext().userSettings.roles.getAll();

    var roleNames = ["Systemadministrator", "..."];

    var hasRole = false;

    for (var i = 0; i < roles.length; i++) {
        var name = roles[i].name;

        if (hasRole) break;

        for (var j = 0; j < roleNames.length; j++) {

            if (roleNames[j] === name) {
                hasRole = true;
                break;
            }
        }
    }

    return hasRole;
}