Willkommen, Gast
Home › Foren › Nuclos Bedienung › Administration und Installation › [Gelöst]Berechtigung per User/Gruppe auf Datensatz
Hallo Forum,
Leider komme ich mit Wiki und Forum nicht weiter.
Kurz die beschreibung was ich erreichen möchte.
Es gibt ein BO mit namen „AB“
Dort erstellte Datensätze sollen nur von dem Benutzer(X), welcher sie erstellt hat, eingesehen/bearbeitet werden können.
Sprich er kann keine „fremden“ Datensätze von Benutzer Y oder Z sehen.
Zusätzlich soll es aber möglich sein das die Gruppe „Verwaltung“ alle Datensätze sieht.
Ich habe mich mit Datensatzfreigaben und Objektgruppen versucht – jedoch sind die Wiki Einträge dazu so alt das ich es nicht schaffe. Es fehlt das kleine Stück damit ich es verstehe.
Videos gibts es dazu noch keine.
kann wer mit mit einem Beispiel weiterhelfen.
Gerne erstelle ich danach einen Wiki Artikel diesbezüglich bzw. passe die alten an.
lg
Franz
Hallo Franz,
bei Datensatzfreigaben gehst Du wie folgt vor:
1.
Datensatzfreigabe erstellen, Konfiguration -> Datenquellen->Datensatzfreigabe
z.B. zeige nur die AB-Daten an, die der eingeloggte Benutzer erstellt hat
—>
SELECT AB.“intid“ „intid“
FROM AB
WHERE AB.“strcreated“ = ‚$username‘
Benutzergruppe aufrufen und die Gruppe des Benutzers X aufrufen. Dort in Reiter „Datensatzfreigaben“ dann die unter 1. erstellte Freigabe auswählen.
That’s it.
Gruß
Frank
Danke das hilft schon um einiges weiter.
Nun versteh ich den Editor auch um einiges mehr.
leider bekomm ich noch einen Error.
Im Editor hab ich mein BO „T1.AB“ und die „T2.nuclos_user“
In der ersten Spalte die Tabelle „T1.AB“, Spalte „“ gewählt.
In der zweiten Spalte „T2.nuclus.user“, Spalte „createdBy“ und die Bedingung „=’$username'“
Mein Syntax (mit Editor) sieht nun so aus:
SELECT
T1."intid" "INTID"
FROM
k4ed_ab T1,
t_md_user T2
WHERE
(
T2."strcreated" = '$username'
)
Bekomme jedoch den Error:
ehlermeldung: Fehler beim Laden der Daten für das Businessobjekt agj3WZWg34V1CXRKrmvw.
Stack Trace:
org.nuclos.common2.exception.CommonFatalException: Fehler beim Laden der Daten für das Businessobjekt agj3WZWg34V1CXRKrmvw.
at org.nuclos.client.masterdata.MasterDataDelegate.getMasterDataProxyList(MasterDataDelegate.java:322)
at org.nuclos.client.ui.collect.search.MasterDataSearchStrategy.getSearchResult(MasterDataSearchStrategy.java:115)
at org.nuclos.client.ui.collect.search.MasterDataObservableSearchWorker.getResult(MasterDataObservableSearchWorker.java:41)
at org.nuclos.client.ui.collect.search.MasterDataObservableSearchWorker.getResult(MasterDataObservableSearchWorker.java:1)
at org.nuclos.client.ui.collect.result.SearchResultStrategy$1$1.work(SearchResultStrategy.java:175)
at org.nuclos.client.ui.CommonMultiThreader$WorkerThread.run(CommonMultiThreader.java:136)
Caused by: org.nuclos.server.dblayer.DbException: executeQuery(SELECT COUNT (t.INTID) FROM K4ED_AB AS t RIGHT OUTER JOIN (SELECT
T1."intid" "INTID"
FROM
k4ed_ab T1,
t_md_user T2
WHERE
(
T2."strcreated" = 'mkriegl'
)
) a_nuclosRgt809 ON (t.INTID = a_nuclosRgt809.INTID) WHERE (t.INTID IN (SELECT ds."intid" FROM (SELECT
T1."intid" "INTID"
FROM
k4ed_ab T1,
t_md_user T2
WHERE
(
T2."strcreated" = 'mkriegl'
)
) ds)) LIMIT 2) failed
Noch eine Anmerkung:
Ich weiß und sehe das dein Syntax anderst aussieht.
Habe aber bewusst versucht den Editor zu verwenden weil ich denke das auch ein anderer Neuling so vorgehen würde.
Jedoch bekomm ich den Syntax von dir ohne der Nuclus_User Table im Editor (noch) nicht hin.
Bin aber grad am experementieren.
lg
Habs nun hinbekommen mit dem Editor,
Aber iwo hängt auch darin ein bug.
Konnte nicht von anfang an die selbe Spalte mit T1 befüllen.
Darum dachte ich das ist eine limitierung.
Error bekomme ich aber nachwie vor:
Caused by: java.sql.SQLException: ERROR: column a_nuclosrgt809.intid does not exist
Position: 193
Statement schaut nun so aus:
SELECT
T1."intid" "INTID"
FROM
k4ed_ab T1
WHERE
(
T1."strcreated" = '$username'
)
in der Vorschau funktioniert alles und ich bekomme eine initd zurück.
Kann das noch mit anderen Berechtigungen zusammenhängen ?
Wenn ich dem User „su“ rechte gebe – ziehen dan die Datensatzfreigaben noch ?
Edit:
wenn ich danach in „AB“ mit dem User einen neuen Eintrage mache bekomme ich auch den Fehler:
aused by: java.sql.SQLException: ERROR: column a_nuclosrgt809.intid does not exist
Position: 974[code]
verstehe noch nicht was falsch läuft.
Hier einmal das ganze log auf pastebin.
(nicht wundern, das BO heisst bei mir „scouting“
AB wurde verwendet um es hier einfacher zu halten.)
Du verwendest postgresql >= 9.3, dann versuche diesen Workaround:
SELECT T1."intid" INTID <-- ohne " um INTID
FROM k4ed_ab T1
WHERE T1."strcreated" = '$username'
Postgresql moniert, dass a_nuclosRgt809.INTID nicht existiert. Der Subquery nutzt „INTID“, im ON-Teil wird aber a_nuclosRgt809.INTID verwendet.
Meiner Meinung nach ist das ein Bug in nuclos.
Gruß
Frank
danke !
funktioniert.
Gibts dazu schon ein Ticket im Jira ?
nein, dass überlasse ich Dir 😉
Gruß
Frank
Wir halten das nicht für einen Bug. Die Anführungszeichen zwingen Postgres zur Case-Sensitivität, d.h. „INTID“intid
Hallo nuclosian,
das verstehe ich .
Allerdings sehe ich den Fehler bei den mit [b] markierten Stellen:
SELECT COUNT (t.INTID) FROM K4ED_AB AS t RIGHT OUTER JOIN (SELECT
T1."intid" "INTID"
FROM
k4ed_ab T1,
t_md_user T2
WHERE
(
T2."strcreated" = 'mkriegl'
)
) a_nuclosRgt809 ON (t.INTID = a_nuclosRgt809.INTID) ... usw...
.
Wenn der Administrator eine Datensatzfreigabe wie folgt entwickelt:
SELECT
T1."intid" "INTID"
FROM
k4ed_ab T1,
t_md_user T2
WHERE
(
T2."strcreated" = 'mkriegl'
)
Diese SQL ist laut nuclos und postgres zunächst korrekt.
Dann kann es aber nicht sein, dass es Fehler gibt, wenn die Datensatzfreigabe zur Anwendung kommt. Der Fehler liegt dann bei
a_nuclosRgt809.INTID, welches ja bei dem Konstrukt weiter oben a_nuclosRgt809.“INTID“ heissen müsste.
Der Administrator kann ja nicht wissen, was nuclos aus seiner einfachen SQL-Anweisung für ein Konstrukt erstellt. Woher soll er dann wissen, dass „INTID“ falsch ist , dagegen INTID aber richtig!
Das ist definitiv ein Bug.
Gruß
Frank
davon abgesehen habe ich den Editor verwendet und nicht selbst den Syntax geschrieben (da ich diese Funktionalität testen wollte)
Also entweder Bug oder by design fehlerhaft 😉
aber ich bin das gewohnt – bin im Icinga Open Source Developer Team und da werden meine Jira Tickets auch zuerst mit „nicht reproduzierbar“ abgelehnt 😉
Gibt es denn ein Ticket dazu?
support.nuclos.de/browse/NUCLOS-3914
nochmal eine Frage zu dem Thema.
Das mit den Datensatzfreigaben funktioniert eigentlich wie ich es will.
Jedoch bekam ich nun eine neu Anforderung bzw. eine Erweiterungs Wunsch.
Nehmen wir 3 Benutzer an:
A (darf nur teile eine Datensatzes lesen)
B (darf nur seine eigenen Datensätze lesen – komplett)
C (darf alle Datensätze lesen – komplett)
B und C hab ich mit Hilfe der Datensatzfreigabe wie hier im Thread beschrieben – gelöst.
Aber wie solle ich Benutzer (bzw. Benutzer Gruppe) A abbilden ?
Ist das überhaupt möglich ?
Das geht, indem man die Attribute Attributgruppen zuweist. Dann kann man im Statusmodell die Berechtigungen für jede Gruppe separat ändern.
sry aber nein, das kann ich mit „normalen“ Attributgruppen nicht realisieren.
Wie stellst du dir das vor ?
Dann müsste man die Attributgruppen automatisch von angemeldeten User abhängig machen können.
eventuell ist es ein beschreibungs fehler von mir.
Benutzer A (bzw Gruppe A ) sieht seine eigenen Datensätze, und alle anderen aber nur teile davon.
Benutzer B (bzw Gruppe B ) – mit DF, sieht seine eigenen komplett und die anderen gar nicht.
Benutzer C (bzw Gruppe C ) – mit DF, sieht alle Datensatzfreigaben.
Die Gruppe B würde wegfallen wenn ich A realisieren kann.
Du musst angemeldet sein, um auf dieses Thema antworten zu können.