0

Datentyp user oder userId(id)

Hallo zusammen,

 

innerhalb einer Datenbank habe ich ein Rechtekonzept mittels usern und Rollen aufgebaut.

Nun komme ich aber an einem Punkt nicht weiter. 

1. In der Funktionsreferenz ist userId(id) aufgeführt mit dem Rückgabewert user. Das funktioniert aber nicht, da userId() keinen Text als Übergabevariable definiert hat. Ist es daher falsch in der Referenz beschrieben oder lese ich etwas falsch. Ziel ist die Umwandlung von userId zu user.

2. Gibt es eine Möglichkeit einer Funktion den datentyp user zu übergeben? 

 

Viele Grüße

5 Antworten

null
    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Chris.
    Was möchtest du denn mit der Funktion für einen Wert erhaltem? Der Rückgabewert ist eine Buchstaben/Zahlen-Kombination, die Ninox jedem Cloud-User bei dessen Anmeldung einmalig vergibt und der eindeutigen Identifizierung dient.
    Hast du dir mal die Beispiele dazu angesehen? userId() akzeptiert keine Strings als Übergabewert. Du kannst entweder die Klammer leer lassen, dann wird die Ninox-ID des aktuellen Users angezeigt oder mit dem Wert _cu oder _mu wird die ID des Erstellers des Records oder desjenigen der zuletzt Änderungen im Record vorgenommen hat ausgegeben.
    Du wirst es nicht schaffen mit den user-Funktionen Werte von anderen Usern zu erhalten bis auf _cu oder _mu.
    Wenn du einen genauen Überblick der Benutzer der Datenbank mit ihren Rollen haben möchtest kommst du an eine eigene Tabelle für die Nuterverwaltung nicht vorbei.
    Diese kann über den Trigger 'Nach dem Öffnen der Datenbank' gefüllt werden. Dort kannst du dann jedem Record automatisch die Ninox-UserID, den Benutzernamen und die BenutzerRolle zuordnen.
    So erhältst du dann eine vollständige Benutzerübersicht. Per script kannst du dann auch abfangen ob der User bereits vorhanden ist und sich nicht mehrfach anlegt. Auch Rollenänderungen können so automatisch aktualisiert werden. Ich kann nur dazu raten, die userId als eindeutiges Suchkriterium hierbei zu verwenden.

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

    Hallo Uwe,

     

    dank Dir für die schnelle und ausführliche Antwort. Ich möchte aus einer userId gerne wieder den user als Objekt erhalten.

    Laut der offiziellen Ninox Referenz sollte es auch möglich sein: 

     

    userId(id) – returns the user value with given id

     

    Leider geht das wie oben beschrieben und auch zu erwarten nicht, da ich die gleiche Funktion mit einem user als Argument aufrufen kann um dann die userID zu erhalten.

    Eine Tabelle Benutzerconfig mit den einzelnen Usern habe ich bereits, allerdings bisher ebenfalls basierend auf dem User Objekt. Wenn ich Deinen Ansatz richtig verstehe erstelle ich mir wirklich am besten eigene User und Rollen in einer Tabelle? Schade das Ninox das aus meiner Sicht wichtige Thema Rechteverwaltung nicht besser händelt. Ist gerade für geteilte Datenbanken (CRM, etc.) eins der wichtigsten Kriterien.

    • UweG
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Die Funktion userId() spricht immer nur den User an, der die Funktion aufruft. Du kannst einzig aus den User-Funktionen keine Informationen anderer User auslesen.
    Das finde ich auch aus datenrechtlichen Gründen ganz gut so. Wenn du Zuordnungen von der UserId zu dem UserNamen/UserEmail und vergebenen Rollen haben möchtest, bleibt dir nur der oben beschriebene Weg über eine eigene Usertabelle. Du must dir keine eigene User/Rollen-Tabelle ersellen, sondern nutzt die user-Funktionen um die Tabelle mit den NinoxWerten der User zu füllen.
    So etwas ähnliches passiert in der Datenbank '0001_Ninox-Reference' im Team 'Webinar DE 2021'. Nur rudimentärer als deine Anforderung. Hier wird in einer Tabelle nur die UserID gespeichert. Der Record wird erstellt durch den Trigger 'Nach dem öffnen der Datenbank'. Dort wird dann auch gleich geprüft ob der User neu ist und angelegt werden muss oder bereits vorhanden ist.

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

    Nachdem ich nun die Berechtigungen auf eigene User-/Rechtetabelle inkl. Rollenuntertabelle aufgebaut habe, komme ich weiter. 

    Dank Dir für den Denkanstoß. Ich denke aber die Refenenz sollte trotzdem gändert werden, da die genannte Funktion ja nicht wie beschrieben funktioiniert:

    userId(id) – returns the user value with given id

    Falls hier eine Ninox Mitarbeiter mitliest. 

    • Maurice
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo,

    gibt es irgendwo eine Beispieldatenbank, wie man ein filigranes Rechtemanagement mittels einer User-Tabelle inkl. Untertabelle aufbauen kann. Dafür wäre ich sehr dankbar.
    Grüße Maurice

Content aside

  • vor 1 JahrZuletzt aktiv
  • 5Antworten
  • 689Ansichten
  • 1 Folge bereits