AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Delphi DMS - Berechtigungssystem mit vererbbaren Berechtigungen
Thema durchsuchen
Ansicht
Themen-Optionen

DMS - Berechtigungssystem mit vererbbaren Berechtigungen

Ein Thema von Aviator · begonnen am 30. Aug 2016 · letzter Beitrag vom 2. Sep 2016
Antwort Antwort
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: DMS - Berechtigungssystem mit vererbbaren Berechtigungen

  Alt 1. Sep 2016, 22:41
ich glaube du hast dich verlesen.
Die Berechtigungen sollen natürlich nur im DMS abgebildet werden. Es ging mir lediglich darum, dass Dateien aus dem Windows Explorer ja einmalig dem DMS hinzugefügt werden müssen. Und das passiert in der Regel per FileOpen Dialog oder per Drag & Drop aus dem Explorer Fenster bzw. vom Desktop.
Ich glaube nicht, dass ich mich verlesen habe. Wir haben uns vielleicht missverstanden. Eben dieses Hinzufügen per Drag and Drop mit dem Explorer würde ich verhindern, und mit einem Frontend welches du über das DMS bereitstellst (kann ja auch aussehen wie der Explorer) erledigen. In diesem Frontend würde ich jeglichen Zugriff auf die Dateien abwickeln, und hätte somit eine zentrale Stelle, an welcher ich (über das von dir schon angedachte Klassendesign) auch alle Zugriffsrechte abfrage und definiere. Im Prinzip sowas wie echtes Client-Server-Management. Nur das DMS selber weiß, wo die Daten liegen. Die Benutzer greifen selber nicht mehr direkt auf die Daten zu.
Hmm. Du meinst also, dass ich noch eine Art Windows Explorer in mein Programm implementieren soll um die Daten erstmalig zur Dokumentenverwaltung hinzuzufügen? Wenn nicht, dann verstehe ich es nicht.

Wenn die Daten erst einmal im DMS eingecheckt sind, dann werden die an einem speziellen Ort abgelegt an den niemand mehr heran kommt ohne über das DMS die Datei/das Dokument zu öffnen.

Puhh.. ich muss zugeben, dass ich sehr verwirrt bin als das ich das Ganze hier noch richtig nachvollziehen könnte.

Irgendwie habe ich was gelesen von MS-SQL-Server. Da wäre ich ganz bei mkinzler. Die Reports in die DB schieben und das wunderbare Rechtesystem einer ausgewachsenen Datenbank nutzen. Lässt eigentlich nie Wünsche offen.

Dann habe ich was von Linux-Server gelesen. Warum dann nicht Samba nutzen? Da kann man ebenso richtige dolle Benutzerrechte in aller erdenklicher Form nutzen.

Das alles selber machen zu wollen, klingt für mich wie das Rad neu erfinden zu wollen. Oder gibt es irgendwas konkretes, spezielles, dass beide Ideen nie und nimmer umsetzen könnten? Wie gesagt.. ich habe es vielleicht noch nicht so recht erfasst, das Problem.
Ich hoffe ich kann nochmal etwas Licht ins Dunkel bringen.

In der Datenbank werden die Verweise auf ein Dokument abgelegt. Das Dokument, also die Datei, wird auf einem Server abgelegt auf den so niemand direkten Zugriff hat. Das ist ein Linux Fileserver auf den per Samba zugegriffen wird.

Alle anderen Metadaten wie Dateityp, Datum des Eincheckens usw. werden ebenfalls noch in der Datenbank abgelegt. Zudem sollen später die Berechtigungen (also binäre Zahlenwerte) pro Verzeichnis bzw. auch pro Dokument in der Datenbank gespeichert werden.

Ich wüsste nicht, wie ich aus meinem Programm heraus das Berechtigungssystem von Linux oder auch Windows nutzen sollte um genau diese Dinge abzubilden. Es wird ja auch noch einige andere Rechte außer Lesen, Schreiben, Ausführen geben die pro Verzeichnis/Dokument hinterlegt werden können.

Aber wie gesagt. Ich habe jetzt etwas im Kopf von dem ich ziemlich überzeugt bin, dass das klappen müsste. Wenn es eine bessere Idee (und eine Anleitung dazu ) gibt, dann bin ich auch dafür offen.

Aktuell würde mich aber interessieren, wie ich meine Klasse sinnvoll gestalten kann um das alles so effizient wie möglich abzubilden. Die Berchnung der einzelnen Rechte habe ich ja bereits in einem anderen Post dargestellt. Das müsste so eigentlich funktionieren. Es könnte höchstens sein, dass man das nochmal effizienter gestalten kann und man hierfür nicht "so viele" xor, or und and Operationen bräuchte.
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
989 Beiträge
 
Delphi 6 Professional
 
#2

AW: DMS - Berechtigungssystem mit vererbbaren Berechtigungen

  Alt 2. Sep 2016, 04:31
Hmm..

[QUOTE=Aviator;1346509][QUOTE=mm1256;1346483]
ich glaube du hast dich verlesen.

Alle anderen Metadaten wie Dateityp, Datum des Eincheckens usw. werden ebenfalls noch in der Datenbank abgelegt. Zudem sollen später die Berechtigungen (also binäre Zahlenwerte) pro Verzeichnis bzw. auch pro Dokument in der Datenbank gespeichert werden.
Die Berechtigungen als binärer Zahlenwert...

Ich glaube, da ist der Fehler!

Also ich würde nicht die Berechtigungen 'ausrechnen' sondern über die Datenbank beim Einchecken einer Datei diesem Eintrag über eine Verknüpfungstabelle die 'Gruppen' oder eventuell 'Benutzer' verlinken. Dies können N Verknüpfungen sein.

Wenn nun versucht wird auf ein 'Verzeichnis' in deinem DMS zuzugreifen, dann wird erst anhand dieser Verlinkungen das tatsächliche Recht ermittelt.

Wenn Du dieses 'Recht' direkt 'fest' bei der Datei einträgst ohne die Verknüpfungen, dann kannst Du beim Verändern eines Rechtes nicht wissen, woher die vorherigen Rechte kommen.

Alternativ kannst Du auch stat einer Gruppe oder eines Benutzers in der Verknüpfung auch den Parent in deiner visuellen Baumstruktur angeben und dann hat der Eintrag die gleichen Rechte, wie das übergeordnete Verzeichnis.

Achja, nach diesem Schema funktionieren übrigens auch Dateisysteme, dort ist die Datenabnk z.B. in der NTFS / ext3 Struktur eingebettet.

Geändert von HolgerX ( 2. Sep 2016 um 04:36 Uhr)
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: DMS - Berechtigungssystem mit vererbbaren Berechtigungen

  Alt 2. Sep 2016, 09:09
Die Berechtigungen als binärer Zahlenwert...

Ich glaube, da ist der Fehler!

Also ich würde nicht die Berechtigungen 'ausrechnen' sondern über die Datenbank beim Einchecken einer Datei diesem Eintrag über eine Verknüpfungstabelle die 'Gruppen' oder eventuell 'Benutzer' verlinken. Dies können N Verknüpfungen sein.

Wenn nun versucht wird auf ein 'Verzeichnis' in deinem DMS zuzugreifen, dann wird erst anhand dieser Verlinkungen das tatsächliche Recht ermittelt.
Hallo Holger du Frühaufsteher,

die Verlinkung der Gruppen wie du es nennst wollte ich ja auch in der Datenbank hinterlegen. Nun ist es aber ja so, dass dem Dokument eine oder mehrere Gruppen und ein oder mehrere Benutzer zugeordnet werden können. Diese Gruppen und/oder User können, wie das bei NTFS ja auch der Fall ist, pro Dokument natürlich auch unterschiedliche Rechte haben.

Wenn die Vererbung aktiviert ist, dann erhält das Dokument zwar die übergeordneten Rechte des Verzeichnis, aber ich kann ja trotzdem noch Berechtigungen hinzufügen bzw. sogar verweigern.

Also muss ja doch wiederum pro Dokument die eigentliche Berechtigung für den Benutzer aus Verzeichnis- und Dokumentrechten ermittelt werden. Und das pro Benutzer und aller dem Benutzer und Dokument zugeordneten Gruppen.

Und wenn die Vererbung deaktiviert wird, dann muss ich dem Dokument erst recht alle Informationen geben. Die Verlinkungen können auf das Dokument kopiert werden (wenn dies beim Deaktivieren gewünscht wird). Spezielle Dokumentrechte sind ja dann sowieso schon mit dem Dokument verknüpft.

Ich habe mir natürlich schon sehr viele Gedanken über das Problem gemacht. Aber vielleicht übersehe ich ja was und du kannst mir sagen, wie es einfacher gehen kann. Das Rechtesystem soll ja wirklich ziemlich stark an das NTFS Filesystem mit ACLs angelehnt sein.

Ein Problem das ich sicherlich noch habe ist, wenn ein Administrator im Hintergrund die Berechtigungen der Dokumente bzw. Verzeichnisse ändert. Sei es durch das Hinzufügen von Gruppen oder einfach nur die Erweiterung um bspw. das Recht "Verändern". Diese Rechte müssen dann ja ohne Neustart zur Laufzeit eingelesen werden. An der Stelle könnte ich mir noch etwas wie ein Aktualisieren Button vorstellen, der den ganzen Verzeichnisbaum neu aufbaut und die neuen Rechte einliest. Wie das automatisch im Hintergrund ablaufen könnte weiß ich (noch) nicht. Das selbe Problem bestünde aber auch für bereits in der Dokumentliste angezeigte Dokumente.

Wenn Du dieses 'Recht' direkt 'fest' bei der Datei einträgst ohne die Verknüpfungen, dann kannst Du beim Verändern eines Rechtes nicht wissen, woher die vorherigen Rechte kommen.

Alternativ kannst Du auch stat einer Gruppe oder eines Benutzers in der Verknüpfung auch den Parent in deiner visuellen Baumstruktur angeben und dann hat der Eintrag die gleichen Rechte, wie das übergeordnete Verzeichnis.
Also wie oben beschrieben möchte ich ja ein Flag haben das angibt, ob die Vererbung aktiviert oder deaktiviert ist. Die Idee mit dem Parent hatte ich auch schon. Allerdings dann später beim Erzeugen der Objektinstanz. Somit weiß ich, welches Verzeichnis das übergeordnete ist und kann dann immer eine Ebene nach oben gehen.


Ein anderes Problem ist, dass ich beim Suchen von Dokumenten nur noch eine Liste mit Dokumenten habe die aber nicht mehr in einer Verzeichnisstruktur dargestellt werden. Hier muss ich dazu sagen, dass ich darüber aktuell noch nicht wirklich nachgedacht habe. In der aktuellen Version ist es jedoch so. Somit hätte ich kein Parent Directory mehr um daran die Rechte abzuleiten. Aber da muss ich mir noch etwas überlegen. Bin aber auch für jeden Vorschlag dankbar.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz