0

User Berechtigung für einzelne Datensätze

Hallo,

ich habe ein Problem bei der Verwednung von userHasRole() für die Anzeige von Dtensätzen. Es gibt eine Tabelle mit Verträgen. Dort hat es unter Anderem auch ein Auswahlfeld für die Abteilung, der dieser Vertrag zugeordnet ist. Also bspw. IT, Personal, Einkauf,..

Wenn ich nun im Feld “lesbar wenn” die Funktion userHasRole(Abteilung) definiere, erhalte ich als Fehler userHasRole(choice). Was mache ich falsch? Ziel soll sein, dass dem User jweils nur die Datensätze (Verträge) angezeigt werden, in deren Abteilung er ist, resp. deren Rolle er hat.

10 Antworten

null
    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Vielleicht userHasRole(“Abteilung”)

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Frank,

    wenn die Rollen wie die Abteilungen heißen dann userHasRole(text(Abteilung)). Ich würde aber statt Auswahlfeld das Feld Benutzer verwenden. 

    Leo

    • Frank.3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    das habe ich schon versucht. Dann wird aber nach dem User gefiltert, der als Rolle die Rolle “Abteilung” hat, und nicht im Feld “Abteilung” die Werte als Rolle verglichen.

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hat ein user mehrere Rollen?

    • Frank.3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    danke, meine Antwort hat sich mit Deiner überschnitten.

    Das funktioniert so, wie Du geschrieben hast mit userHasRole(text(Abteilung)). Das Feld “Benutzer” ist allerdings so wie das bei mir notwendig ist, nicht geeignet. Es dürfen ja mehrere Benutzer oder gar Benutzergruppen auf die Datensätze Zugriff haben. Bei “Benutzer” kann ich aber immer nur 1 Benutzer hinterlegen. Oder habe ich etwas falsch verstanden?

    Frank

    • Frank.3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    ... und ja, ein User aht mehrere Rollen...

    • Leonid_Semik
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Jetzt haben wir die Klarheit :-). Wenn ein User mehrere Rollen hat, dann reagiert userHasRole() mit true nur wenn die erste Rolle mit dem Namen übereinstimmt. Also userHasRole (“Personal”) wird true wenn die Rollen so aufgelistet sind [“Personal”,“Vertrag”]. Bei [“Vertrag”,“Personal”] gibt es bei userHasRole (“Personal”) leider false. Ich würde ein globale funktion basteln:
    ---

    function getMultiRoles(role:text) do
    let myArr:=“#”+join(userRoles(),“#”)+“#”;
    contains(myArr,“#”+role+“#”)
    end
    ---

    wenn du jetzt bei lesbarkeit schreibst:

    ---

    getMultiRoles(“Personal”)
    ---

    sollte es ohne Probleme laufen

     

    Leo

    • Frank.3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    super, vielen Dank!

    Aber irgendwie gibts da noch ein Problem bei der globalen Variablen. Da meckert er anch dem :=“ , dass er einen Ausdruck erwartet...

    • Frank.3
    • vor 3 Jahren
    • Gemeldet - anzeigen

    ok, funktioneirt doch. War wohl ein Problem mit dem Zeichensatz beim kopieren.

    Danke!

    • Thomas_siegsoehne
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo, ich habe dazu auch eine Frage. Ich habe verschiedene User (jeder hat eine einzelne Rolle) und möchte über einen JA/NEIN Button in der Tabelle festlegen, welche User die Tabelle lesen darf oder nicht. Die einfache Formel für das ein/ausblenden von Datenfeldern habe ich schon eingesetzt, aber wie funtkioniert das bei ganzen Tabellen unter Berücksichtung der User.

    Danke & Grüße

    Thomas

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 10Antworten
  • 1119Ansichten