Gruppen, Benutzer und Rechte programmatisch ergänzen

Die Rechteverwaltung findet in onion.net über Gruppen statt. Eine Gruppe enthält eine beliebige Anzahl von Mitgliedern, sowie Rechte für die hierarchisch gegliederte Datenstruktur. Die Rechtedefinition unterscheidet zwischen dem exakten Objekt und der Kindstruktur. Letztere wird rekursiv vererbt.

Das folgende Beispiel erstellt eine Gruppe, einen Benutzer und eine Rechtedefinition:

using System;
using Onion.Client;

class Program
{
  private static void Main(string[] args)
  {
    using (var session = new OnionSession("ipc://onion.net/onion/server", "admin", "admin"))
    {
      IGroup group = session.UserManagement.Groups.Create("Testgruppe");
      IUser user = session.UserManagement.Users.Create("Max Mustermann", "max");

      group.Members.Add(user);

      IDataObject contacts = session.Repository.Lookup("Client API Testdata", "1. Contacts");
     
      var right = new Right(contacts)
                    {
                      Read = RightValue.Set,
                      Delete = RightValue.Clear,
                      CreateChildren = RightValue.Set,
                      ModifyChildren = RightValue.Set,
                      DeleteChildren = RightValue.Set
                    };

      group.Rights.Add(right);
    }
  }
}

Die Eigenschaft IOnionSession.UserManagement gruppiert alle Funktionen zur Verwaltung von Benutzern und Gruppen. Über den Aufruf IGroup.Members.Add wird der Benutzer ein Mitglied der neuen Gruppe. Er erhält automatisch alle Rechte, die in dieser Gruppe definiert sind.

Die Objektrechte beziehen sich nur auf das Objekt, wogegen die Kindrechte sich nur auf die Kindstruktur beziehen. Dabei sind nicht nur die unmittelbaren Kindobjekte betroffen, sondern der gesamte Datenstrang, bis die Vererbung durch ein neues Recht wieder aufgehoben wird. Daher können Sie ein Recht setzen (Set), entziehen (Clear) und erben (Inherit). Diese möglichen Werte finden sich im Editor anhand eines grünen Häkchens, einem roten Kreuz und einer grauen Fläche wieder.