Rechtemanagement ungenügend....
Hallo,
ich möchte gern einstellen unter welchen Umständen ein Datensatz gelöscht werden darf bzw. unter welchen Umständen ein Datensatz erstellt werden darf (z.B. ob genug Daten in einer Fremdtabelle vorhanden sind). Das aktuelle Rechtemanagement ist dafür ungeeignet. Z.b. kann ich einstellen das ein Nutzer datensätze erstellen kann. Er kann aber nicht seine eigenen löschen. Ich muss also einem Nutzer vollen Zugang gestattet damit er seine versehentlich erstellten Datensätze löschen kann.
6 Antworten
-
Stimmt, an diesen Punkt bin ich auch schon mit meinem Rollenmanagement "hängen geblieben". Wäre klasse, wenn das weiter ausgebaut werden könnte.
-
wäre es eine Lösung wenn er zwar vollen Zugang bekommt, jeder nur die von ihm erstellten Datensätze sehen, bzw editieren kann? Gibt doch ein "schreibbar wenn" bzw. "lesbar wenn" Option. Man könnte dort zB lesbar wenn: 'Erstellt von' = user() or userHasRole("admin") einfügen
-
ja schon ein Ansatz, habe ich aber nach 20 Minuten dabei belassen... löschbar ist es damit trotzdem von jedem und das ist das schlimmste. was zB schwierig ist wäre zusätzlich die Situation „nur löschbar wenn der Auftrag noch nicht freigegeben ist“
ich möchte nicht einen neuen mitarbeiter ins system nehmen der dann erstmal tabula rasa über alle aufträge geht. wenn er nur quatsch in seiner eigenen welt macht ist das besser
-
Hallo,
ein "Löschbar wenn" ähnlich dem "Lesbar wenn" und "Schreibbar wenn" wäre schon schön. Zwischenzeitlich kannst Du dir vielleicht mit einem anderen Vorgehen helfen:
Du gibst nur der Admin-Rolle das Recht zu löschen - den Benutzer-Rollen nicht. In den zu löschenden Datensatz fügst Du ein logisches Feld "zu löschen" (oder so ähnlich) ein, Vorgabe ist nein und du prüfst in dem Feld in "Schreibbar wenn" ab, ob die Voraussetzungen für das Löschen gegeben sind.
Im Code "Lesbar wenn" filterst du diese so gekennzeichneten Datensätze raus:
'zu löschen'=false
Dadurch erscheinen die Datensätze schon mal nicht mehr und sind für den "normalen Benutzer" wie ein gelöschter Datensatz. Das eigentliche Löschen übernimmt dann ein Admin regelmäßig über einen Button mit dem Code:
delete (select 'Meine Tabelle' where 'zu löschen' = true)
oder in dem der Code in den Trigger "Nach dem Öffnen der Datenbank folgendes Skript ausführen" ausgeführt wird.
Nicht perfekt und mit etwas mehr Aufwand verbunden - sollte aber funktionieren... und würde die Möglichkeit für den Admin bieten, falsch gelöschte Datensätze wieder herzustellen, in dem das Feld 'zu löschen' wieder deaktiviert wird.
VG Frank
-
... dann könnte man eine Befehlsschaltfläche mit "
delete(this)
" ja auch direkt nur bestimmten Nutzergruppen sichtbar machen... -
... oder kann die per "Datensätze löschen" ausgeklammerte Benutzergruppe auch nicht per Skript löschen?
Content aside
- vor 5 JahrenZuletzt aktiv
- 6Antworten
- 1547Ansichten