Home Forum Nuclos Entwicklung Makros und Regeln Aktuellen Benuzter in Regel abfragen

Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 15)
  • Autor
    Beiträge
  • #1625
    Erik Bergmann
    Teilnehmer

    Hallo,

    durch diese Diskussion https://www.nuclos.de/index.php/nuclos-forum/businessprozesse/717-direktes-setzen-eines-status?lang=de#918 angestoßen, habe ich mich gefragt, ob ich innerhalb einer Regel den aktuellen User ermitteln kann…

    Viele Grüße,
    Bergmann

    #1626
    Alpha Alpha
    Teilnehmer

    Hallo Bergmann,

    dies geht über die Methode getCurrentUser() im RuleInterface.

    alpha

    #1649
    bachmann bachmann
    Teilnehmer

    Da das Thema ähnlich ist, führe ich dieses einfach mal weiter: kann ich in der Regel ermitteln, ob der Benutzer in einer bestimmten Gruppe ist?

    Ich würde gerne eine Freigabeprüfung implementieren. Also wenn ein Wert (z.B. Währungsbetrag) des Datensatzes einen in der Regel festgelegten Wert übersteigt, darf nur eine bestimmte Benutzergruppe einen Statuswechsel durchführen.

    #1659

    … und eine weitere Frage noch 😉
    Kann man überhaupt die Berechtigungen eines Benutzers in Regeln verändern?

    #1851
    Alpha Alpha
    Teilnehmer

    Hallo rom,

    auch die Benutzerrechte werden in Nuclos als Entitäten verwaltet und lassen sich theoretisch auch innerhalb einer Regel abgreifen und ändern (sofern der ausführende Benutzer die notwendigen Rechte auf diese Entitäten besitzt).

    Allerdings solltest du beachten, dass sich bei neueren Versionen die Struktur dieser (internen) Entitäten ggf. ändern. Dein Skript wäre also nicht mehr portabel.

    Viele Grüße,
    alpha

    #1865
    Erik Bergmann
    Teilnehmer

    alpha schrieb:

    Hallo Bergmann,

    dies geht über die Methode getCurrentUser() im RuleInterface.

    alpha

    Oh, danke.

    #1918
    bachmann bachmann
    Teilnehmer

    *push*

    bachmann schrieb:

    Da das Thema ähnlich ist, führe ich dieses einfach mal weiter: kann ich in der Regel ermitteln, ob der Benutzer in einer bestimmten Gruppe ist?

    #1920

    Inwieweit wird es nicht mehr portabel? Ändern sich die Entitäten selber?
    Wenn ja, betrifft es dann vermutlich auch andere Regeln, oder?
    Wird es überhaupt einen Migrationsmechanismus für Regeln geben? Für welche Version sind diese Änderungen geplant?
    Danke.

    alpha schrieb:

    Hallo rom,

    Allerdings solltest du beachten, dass sich bei neueren Versionen die Struktur dieser (internen) Entitäten ggf. ändern. Dein Skript wäre also nicht mehr portabel.

    Viele Grüße,
    alpha

    #1921
    Alpha Alpha
    Teilnehmer

    Hallo bachmann,

    bachmann schrieb:

    Da das Thema ähnlich ist, führe ich dieses einfach mal weiter: kann ich in der Regel ermitteln, ob der Benutzer in einer bestimmten Gruppe ist?

    Meinst du die Objektgruppe? getCurrentUser() liefert ein MasterDataVO zurück, welches den aktuellen User beschreibt. Das Feld „group“ gibt die Objektgruppe an („groupId“ die ID dazu).

    alpha

    #1923
    Alpha Alpha
    Teilnehmer

    rom schrieb:

    Inwieweit wird es nicht mehr portabel? Ändern sich die Entitäten selber?

    Die Entitäten für den Benutzer und dessen Rechte sind Nuclos-interne Entitäten. Die können sich in der Tag von Version zur Version verändern (ansonsten könnten wir ja keine neue Features einbauen :cheer: ).

    Wird es überhaupt einen Migrationsmechanismus für Regeln geben?

    Die Problematik ist uns bewusst. Momentan werden Regeln aber nicht automatisch migriert.

    Für welche Version sind diese Änderungen geplant?

    Das lässt sich nicht so spezifisch sagen sondern hängt von der Entität ab. Für 2.5 und 2.6 sind aber diverse Erweiterungen (und damit auch Veränderungen) zu erwarten.

    alpha

    #1927

    Die Regeln werden nicht migriert, werden sie aber zumindest validiert, oder soll ich selber alle Regeln auf kompatibilität zur neuen Version überprüfen?
    Wie macht Ihr es selber bei nuclos Entwicklung? Automatisierte Tests?

    #2023
    bachmann bachmann
    Teilnehmer

    alpha schrieb:

    Meinst du die Objektgruppe? getCurrentUser() liefert ein MasterDataVO zurück, welches den aktuellen User beschreibt. Das Feld „group“ gibt die Objektgruppe an („groupId“ die ID dazu).

    Hallo alpha,

    ich meine die Benutzergruppen, denen der Benutzer zugeordnet ist. Also Beispiel:


    if (server.istBenutzerInBenutzergruppe("Abteilungsleiter")) {
    // Benutzer ist Benutzergruppe Abteilungsleiter zugeordnet
    }
    else {
    // Benutzer ist Benutzergruppe Abteilungsleiter NICHT zugeordnet
    }

    Wenn ein Benutzer Abteilungsleiter ist, soll er andere Berechtigungen haben (z.B. Status bei Objekten wechseln, bei denen ein Attributwert einen (in der Regel hinterlegten) Wert übersteigt).

    #2115

    Du kannst dir die Daten in der Regel komplett zusammensammeln?

    Das einzige was da zu bedenken ist das du in dem Fall „anders herum“ fragen musst, also ob der Benutzer in der Gruppe ist.
    Da sollte eine Suchbedingung dir die entsprechenden Datensätze liefern.

    #2231
    bachmann bachmann
    Teilnehmer

    Hallo DALek,

    können Sie mir ein Beispiel für diese Suchbedingung geben?

    #2235

    Gerne:

    CollectableComparison condition = server.newGOComparison("name", ComparisonOperator.EQUAL, "nuclos");
    Collection foundUsers = server.getMasterDataIds("user", new de.novabit.nucleus.server.genericobject.searchcondition.CollectableSearchExpression(condition));

    Danach hast du eine Collection mit allen UserIds die der Suche entsprechen. Dann kannst du mit


    MasterDataVO user = server.getMasterData("user", (Integer)foundUsers.iterator().next());

    dir den entsprechenden Datensatz holen.

    Wenn dir das nicht reicht, oder du noch weitere Fragen hast: stehe gerne zur Verfügung.

Ansicht von 15 Beiträgen - 1 bis 15 (von insgesamt 15)