[gelöst] Intranet mit versteckten Bereichen
am 13.09.2019 - 10:51 Uhr in
Hallo zusammen,
wir planen derzeit eine Umsetzung des Intranets für 7000 Nutzer mittels Drupal 8 und stoßen im Bereich des Dateisystems auf Schwierigkeiten. Für mögliche Ansätze und Ideen wäre ich sehr dankbar.
Unser Intranet soll zum einen aus öffentlichem Bereich bestehen. Dieser enthält aktuelle Pressemitteilungen auf der Startseite und verweist im öffentlichen Menü auf Beiträge mit allgemeinen Informationen, Bildergalerien und Dokumenten. Darüber hinaus gibt es sechs unabhängige Bereiche. Jeder dieser Bereiche will nur seinen Angehörigen die Informationen und Dokumente zur Verfügung stellen. Zum Teil handelt es sich um sehr heikle Informationen.
Unser Ansatz sieht derzeit so aus:
• Für jeden Bereich wurde eine eigene Rolle definiert
• Für jeden Bereich eigenen Inhaltstypen angelegt. Damit ein Bereich nur seinen Inhaltstypen aufrufen darf, wurde ein Taxonomy-Vokabular mit Bereichen und Rollenzuordnungen eingerichtet und dieses Vokabular innerhalb eines jeden Inhaltstypen eingebunden. Über das Modul „Permissions by Term“ wird dafür gesorgt, dass ein Bereich lesend nur auf die eigenen Beiträge zugreifen darf.
• Das Dateisystem wurde auf privat, in Verbindung mit dem Modul „IMCE“ umgestellt. Wir haben sieben Oberordner angelegt (Öffentlicher Bereich + 6 versteckte Bereiche) und IMCE-Rolle-Profil-Zuordnungen für diese Verzeichnisse definiert. Das sorgt dafür, dass ein Bereich die Dateien eines anderen Bereichs weder sehen noch aufrufen darf. Öffentliche Dateien kann jeder sehen.
Insgesamt funktioniert der Ansatz sehr gut, bis auf einen optischen Seiteneffekt. Aktuell wird beim Aufruf einer Seite zuerst der Text angezeigt und anschließend werden die Bilder nachgeladen. Die privaten Dateien werden, wenn ich richtig informiert bin, von Drupal nicht gecacht. Den meisten Teil des Intranets macht der öffentliche Bereich aus.
Ich habe versucht das öffentliche und private Dateisystem mittels IMCE zu kombinieren, habe jedoch festgestellt, dass nur eine von beiden Möglichkeiten zeitgleich genutzt werden kann. Ich habe auch eine Hook-Funktion geschrieben, die den Browser veranlasst die Bilder im Cache zu speichern, suche jedoch nach einer Alternative, weil wir sehr viele Unterseiten haben, die von einzelnen Benutzern selten aufgerufen werden. Wenn sie die eine Seite alle paar Tage aufrufen, wird jedes Bild aufgrund des Cache-Ablaufs erneut heruntergeladen.
Eine mögliche Lösung wäre, dass sämtliche Bilder im öffentlichen Bereich liegen und die restlichen Dateien im privaten Dateisystem. Somit wären die Bilder gecasht und das optische Problem gelöst. Im aktuellen Intranet auf Joomla-Basis ist ebenso gelöst. Nur wie kann man das umsetzen? Der öffentliche Bereich sollte ebenfalls mittels der Unterordner strukturiert werden können und die Bereiche sollten auch nur innerhalb des eigenen Sammelordners die Dateien verwalten können.
Lösungen wie Group sind nicht richtige Wahl, da wir auf AD-Anbindung mit SSO setzen.
Über Ideen und Vorschläge wäre ich sehr dankbar.
- Anmelden oder Registrieren um Kommentare zu schreiben
Da es in einem Intranet läuft,
am 13.09.2019 - 14:30 Uhr
das eh' für externen Zugriff gesperrt ist, kann man alle "normalen" User als Gäste betrachten (sehen alles, was öffentlich ist) und die speziellen User sind dann registrierte User, die sich auch anmelden müssen (somit zusätzlich der üsychologische Effekt der Sicherheit durch neue Anmeldung).
Damit hast du die Bereiche sauber getrennt.
Wenn du privates Dateisystem eingeschaltet hast, werden die Medien über Drupal ausgeliefert.
Ein direkter Zugriff ist unterbunden. Um auch nicht aus Versehen an Medien zu kommen, sollten diese außerhalb des WEB-Serverbereichs gespeichert werden, dann kann dieser sie auch nicht aus Versehen ausliefern (weil jemand zufällig den Pfad kennt)
Grüße
Ronald
Hallo Ronald, danke für die
am 16.09.2019 - 09:08 Uhr
Hallo Ronald, danke für die Antwort.
Im Moment scheitere ich an der Umsetzung der gleichzeitigen Nutzung des öffentlichen und privaten Dateisystems. Wir haben 7 verschiedene Bereiche und jeder Bereich hat eigene Redakteure. In beiden Dateisystemen sollen die Redakteure nur eigene Bereiche verwalten und durch Unterordner strukturieren dürfen. Wie kann man das umsetzen? Mit IMCE kann man ja Rollenprofile erstellen, aber ich schaffe nicht beide Dateisysteme gleichzeitig anzuzeigen. Es würde mir reichen, dass sämtliche Bilder im öffentlichen Dateisystem liegen und der Rest im privaten. Eventuell einen Dateibrowser oder zusätzliche IMCE-Alternative für Bilder nutzen, aber leider finde ich nichts passendes.
Aktuell nutzen wir Joomla als Intranetlösung. Joomla hat in der Version 2.5 nur das öffentliche Dateisystem, aber Zugriff auf einzelne Dateien kann mittels eines Drittmoduls "Phocadownload" auf Rollen beschränkt werden. Für Drupal 8 habe ich leider kein passendes Modul gefunden.
Wenn es um Document Management geht
am 16.09.2019 - 10:42 Uhr
also die Verwaltung von Dateien im Dateisystem, ist Drupal vielleicht nicht der richtige Ansatz.
In vielen größeren Unternehmen ist SharePoint vorhanden. Das ist erheblich besser für Dokumenten Management geeignet.
Oder auch Alfresco.
Wenn du so etwas mit Drupal umesetzen willst, musst du dir ein wenig Gedanken zu den Strukturen machen.
Dann ist alles in privaten Verzeichnissen, die außerhalb des Dateisystems liegen, die vom WEB-Server erreichbar sind.
Der WEB-Server kann dann keine Dateien ausliefern, sondern dies muss immer von Drupal geschehen, wo die Identität geprüft wird.
Das macht aber die Zugriffe entsprechend langsamer.
Geht es um strukturierte Informationen, ist Drupal sicher im Vorteil.
Die Frage ist auch, und das kannst nur du selbst, oder deine User beantworten, ob die Informationen in Dateien zu halten sind, oder ob es besser wäre, diese in Datenbanktabellen abzulegen.
Grüße
Ronald
Unsere Idee war ja auch
am 16.09.2019 - 11:28 Uhr
Unsere Idee war ja auch zunächst nur auf das private Dateisystem zu setzen und den Zugriff auf das Dateisystem über ICME-Profile zu regeln. Das habe ich im ersten Post etwas ausführlicher beschrieben. Es funktioniert ja auch so, wie gewünscht. Das Problem ist, dass dann die Bilder von Drupal nicht gecasht werden und erst die Texte und dann die Bilder erscheinen. Es sollte zeitgleich geschehen.
An Drupal kommen wir wohl nicht vorbei, ist eine politische Entscheidung. Ich sehe zwei mögliche Ansätze:
Hier stellt sich eine weitere Frage
am 16.09.2019 - 11:59 Uhr
wie geheim sind diese "geheimen Dokumente"?
Wenn sie nur nicht im Portal angezeigt werden sollen, aber kein Problem besteht, wenn findige User sie dennoch finden können, muss man keinen so großen Aufwand betreiben.
Wenn sie aber wirklich geheim sind, also unter keinen Umständen von der falschen Gruppe geöffnet werden dürfen, muss viel mehr getan werden.
Für ersteres bieten sich Views mit entsprechenden Filtern bei öffentlichem Dateisystem an.
Wer einen Safe für bestimmte Daten braucht, kann diesen natürlich nach eigenen Definitionen selbst realisieren.
Dann kommt ihr aber an einem eigenen Modul nicht mehr vorbei. Möglich ist damit alles.
Grüße
Ronald
Es handelt sich zum Teil um
am 16.09.2019 - 12:13 Uhr
Es handelt sich zum Teil um Gremienentscheidungen. Der direkte Aufruf eines Links auf eine Datei, z. B. bei einer Weitergabe, soll blockiert werden.
Habe nach langem Suchen und
am 18.09.2019 - 10:12 Uhr
Habe nach langem Suchen und Ausprobieren, für uns eine passende Lösung gefunden und diese möchte ich kurz vorstellen. Sie wird komplett über IMCE realisiert.
Damit die Bilder von Drupal gecacht werden, wird der öffentliche Bereich ausschließlich für Bilder verwendet. Die restlichen Dateien, unabhängig von Wichtigkeit, kommen in das private Verzeichnis, da auf diese nur verlinkt wird und somit keine Cache-Probleme entstehen.
Um die beiden Dateisysteme gleichzeitig zu nutzen, wurde ein Redaktion-Menü als Block einer Region zugeordnet. Diese enthält u. a. die Links "imce/private" und "imce/public". Standardmäßig wird über den Link "imce" das Standard-Dateisystem aufgerufen. Dort legt man die Dateien ab. Wichtig ist, dass man für das öffentliche und das private Dateisystem die IMCE-Rolle-Profil-Zuordnungen definiert.
Damit innerhalb des CKEditors beim Klick auf IMCE-Image bzw. IMCE-Link das korrekte Dateisystem aufgerufen wird, wurde die folgende Funktion, unter imce.input.js, erweitert.
/**
* Click event of an url button.
*/
urlButtonClick: function(e) {
var url = Drupal.url('imce');
if (this.InputType === "image") {
url += "/public";
}
else if (this.InputType === "link") {
url += "/private";
}
url += (url.indexOf('?') === -1 ? '?' : '&') + 'sendto=imceInput.urlSendto&inputId=' + this.InputId + '&type=' + this.InputType;
// Focus on input before opening the window
$('#' + this.InputId).focus();
window.open(url, '', 'width=' + Math.min(1000, parseInt(screen.availWidth * 0.8, 10)) + ',height=' + Math.min(800, parseInt(screen.availHeight * 0.8, 10)) + ',resizable=1');
return false;
},