Permissions - lehoffma/memo GitHub Wiki

Wir wollen folgende Funktionalität zur Verfügung stellen:

  • jeder User bekommt entsprechend seiner Rolle bestimmte Rechte
  • diese Rechte können für bestimmte User in bestimmten Bereichen geändert werden
  • zusätzlich kann man einzelnen Objekten mehrere User mit unterschiedlichen Rechten für dieses Objekt ausstatten

Dafür gibt es im Backend folgende Strukturen:

Es gibt ein Permission enum mit folgendem Inhalt:

public enum Permission {
    @SerializedName("0")
    none,
    @SerializedName("1")
    read,
    @SerializedName("2")
    write,
    @SerializedName("3")
    create,
    @SerializedName("4")
    delete,
    @SerializedName("5")
    admin
}

Außerdem verschiedene Bereiche in denen ein User Permissions erhalten kann:

    private Permission funds;    // Zugriff auf Kassenbuch
    private Permission party;    // Zugriff auf Party Objekte
    private Permission user;     // Zugriff auf User Management 
    private Permission merch;    // Zugriff auf Merchandise Objekte
    private Permission tour;     // Zugriff auf Tour Objekte
    private Permission stock;    // Zugriff auf den Stock
    private Permission settings;  // Zugriff auf allgemeine Einstellungen wie Bezahlmethoden oder Standardaufschlag für Nichtmitglieder

Die Rechte werden standardmäßig induziert durch die Clubrolle, können aber verändert werden (mit genug rechten in settings). Die Induzierten Rollen können hier nachgelesen werden: https://drive.google.com/open?id=1KFzRoxtlFcRI3le5xql8e8RahZ23VJH81c4frPV0UmE

Außerdem sollen Objekte User speichern, die besondere Rechte haben. Hiermit können Rechte nur angehoben aber nicht entzogen werden. Es gilt permission = max(Event.permission,User.permission)