Neuigkeiten:

moziloCMS verwendet Cookies. Wenn Sie auf unserer Seite weitersurfen, stimmen Sie der Cookie-Nutzung zu Datenschutzerklärung
moziloCMS Layouts
moziloCMS Plugins

Hauptmenü

Neues vom access_control Plugin (Mehrbenutzer Login-System)

Begonnen von mhsob, 30. November 2010, 22:06:39

« vorheriges - nächstes »

mhsob

Hallo allerseits,

jetzt hat's bis zur Version 2.0 doch nicht besonders lange gedauert. Es wurde munter herumoptimiert und auch gleich noch ein kleiner Feature-Wunsch von rolinux eingebaut (der "alte" Thread von der Nicht-Plugin-Ur-Version bis zum Plugin v1.0 ist hier zu finden).
Und hier geht's direkt zur Plugin-Downloadseite.

Neue Funktionen gegenüber v1.0:
  • In der Zugriffsliste ist jetzt der Benutzer "any_login" erlaubt (Kategorie/Seite sichtbar für jeden registrierten Benutzer)
  • Es wurden zwei Mechanismen zur Verwendung des aktuell angemeldeten Benutzers z.B. durch andere Plugins implementiert
  • Passwörter können jetzt auch durch die Benutzer selbst geändert werden, wenn der Admin dies für den jeweiligen Benutzer zulässt
  • Es wurde ein kleines Formular für die MD5-Verschlüsselung von Passwörtern hinzugefügt, somit muss dafür keine externe Seite bemüht werden

Im Detail wurden folgende Änderungen durchgeführt (Auszug aus doku.html):
Version 2.0
- Bugfix: vergessenes {access_control|doku} aus Plugin-Dropdown-Liste bei Inhaltsseitenbearbeitung
  gelöscht
- Performance verbessert
  Die accesslist wird für aktuellen Benutzer am Anfang gleich auf die für ihn freigeschalteten
  Kategorien/Inhaltsseiten gekürzt -> 1x etwas mehr Verarbeitungsaufwand, bei den wiederholten
  Folgeaufrufen ist dann deutlich weniger Stringsuche nötig
- Wird für eine Seite der Benutzer "any_login" angegeben, so muss fuer die Anzeige der Seite
  einfach nur irgendein registrierter Benutzer angemeldet sein.
- Plugin-Funktion zur Rückgabe des verifizierten aktuell angemeldeten Benutzers implementiert
  Der Name kann auf einer Seite ausgegeben werden oder über als Teil des Aufrufs an andere Plugins
  übergeben werden.
- Implementierung einer sehr einfachen "API", welche die Verwendung des aktuell angemeldeten
  Benutzers in anderen Plugins ermöglicht.
- Erweiterung der Befehlssyntax um ein Formular zur Änderung des Benutzerpassworts im Frontend
  (vom Admin für jeden Benutzer extra freischaltbar)
- Erweiterung der Befehlssyntax um ein kleines Formular zur MD5-Codierung von Passwörtern
- Erweiterung der Doku im Backend und Aufnahme der Dokus für die Benutzer- und Zugriffsliste
  in den Plugin-Beschreibungstext (kann in Version 1.1 aus den eigentlichen Eingabefeldern gelöscht
  werden)
- Im Vergleich zu v1.0 muss nicht mehr für einen Benutzer eine Kategorie alleine extra freigegeben
  werden, wenn er für die betreffende Kategorie inkl. einer Unterseite freigeschaltet ist.
Das Update v1.0 auf v2.0 ist sehr unspektakulär:
  • Alle "alten" Dateien mit denen aus dem neuen Archiv überschreiben, die Datei plugin.conf belassen
  • Optional aufräumen: Im Backend können aus Benutzer- und Zugriffsliste die Kommentarzeilen größtenteils entfernt werden, da die Doku jetzt in der eigentlichen Beschreibung im Backend enthalten ist

Wenn Ihr an weiteren Neuigkeiten bzgl. access_control interessiert seid, dann beobachtet einfach diesen Thread - ich werde mich voraussichtlich auch bei Folgeversionen hier melden...

Viel Spaß mit dem Plugin!
Manfred

stefanbe

#1
Hallo mhsob

zur Info hier gibts was neues :D

Hab dein Script mal kurz überflogen :)
mit dem Update siehe oben hast du nun zugrif auf das komplette Template mit Inhaltseite ($syntax->content {CONTENT} = "---content~~~Inhalt Inhaltseite~~~content---")
das heist du kanst {MAINMENUE} (-platz~MAINMENUE-platzend~) im Plugin austauschen gegen deinen Index
und auch wenn über die url action=search/sitemap kommt.
Damit müste es möglich sein dein Plugin ohne änderungen an der index.php zu nutzen

gruss stefanbe

mhsob

#2
Hi Stefan,

d.h. ich kann {MAINMENU} ersetzen, wie ich das bisher technisch gleichwertig durch eine Alternativfunktion wie z.B. {access_control|MY_MAINMENU} im Template gekonnt hätte?

Es geht aber nicht nur um die Begrenzung des Menüumfangs (auch bei Suche oder Sitemap), sondern darum, dass die Suche (nicht nur im Menü sondern auch in der Anzeige der Suchergebnisse im Inhaltsseitenbereich) keine Ergebnisse von Seiten liefert, die nicht betrachtet werden dürfen. Ausserdem soll mozilo das Standardverhalten für eine nicht vorhandene Inhaltsseite zeigen, wenn jemand die URL einer Seite kennt und aufruft, die ihn nichts angeht. Wie gesagt, es geht nicht nur um's Menü.

Langfristig werd' ich mir wohl eine andere Lösung einfallen lassen müssen oder Abstriche in kauf nehmen müssen oder auf der letzten mozilo Version stehenbleiben müssen, mit der's funktioniert. Oder es ist natürlich irgendwann mal ein Standardmodul.

In der jetzigen Plugin-Version steckt unerwartet viel Arbeit und ich bin momentan (vielleicht noch fälschlicherweise) der Meinung, dass die gewünchste Funktionalität ohne Patch nicht 100%ig erreicht werden kann.
Immerhin lässt sich inzwischen alles via Backend installieren, konfigurieren und wieder deinstallieren...

Prinzipiell wäre es aber interessant, wenn Du in dem von Dir verlinkten Post ausführlicher über die neuen Möglichkeiten berichten würdest.

Grüße
Manfred

stefanbe

#3
Zitat von: "mhsob"d.h. ich kann {MAINMENU} ersetzen, wie ich das bisher technisch gleichwertig durch eine Alternativfunktion wie z.B. {access_control|MY_MAINMENU} im Template gekonnt hätte?
Ja
Zitat von: "mhsob"Es geht aber nicht nur um die Begrenzung des Menüumfangs (auch bei Suche oder Sitemap), sondern darum, dass die Suche (nicht nur im Menü sondern auch in der Anzeige der Suchergebnisse im Inhaltsseitenbereich) keine Ergebnisse von Seiten liefert, die nicht betrachtet werden dürfen. Ausserdem soll mozilo das Standardverhalten für eine nicht vorhandene Inhaltsseite zeigen, wenn jemand die URL einer Seite kennt und aufruft, die ihn nichts angeht. Wie gesagt, es geht nicht nur um's Menü.
Ich geh mal davon aus das im Template dein Plugin drin steht.
Dann hast du nämlich volle kontolle.
z.B. jemand ruft eine geschützte Seite über die URL auf dann kanst du im Plugin durch Prüfen der URL oder $PAGE_REQUEST schauen ob das eine Geschütze Seite ist wenn ja Tauscht du einfach den Content Inhalt duch was anderes aus z.B. durch {access_control|login}.
Das selbe geht natürlich auch mit Search/Sidemap wegen den ergebnissen.

Zitat von: "mhsob"Prinzipiell wäre es aber interessant, wenn Du in dem von Dir verlinkten Post ausführlicher über die neuen Möglichkeiten berichten würdest.
Frag einfach nach :)

gruss stefanbe

mhsob

#4
Mir sind die neuen Möglichkeiten noch nicht ganz klar, aber damit hab ich auf alle Fälle auf einmal viele Baustellen - ich muss den (evtl. mozilo-versionsabhängigen) Hauptmenü-Code  mit copy&paste übernehmen und anpassen, muss den Content checken und evtl. nicht anzeigen, zusätzlich im Content eine Sitemap oder ein Suchergebnis erkennen und dann im generierten HTML rumwerkeln. Seh ich das falsch? Das kann ich mir durch einen kleinen Patch alles schenken! Gut, es ist eigentlich kein PLUGin sondern eher ein WELDin oder GLUEin  :) .
Inwieweit eine plugintechnisch perfekte Version kompatibel zu Folgeversionen (gar mozilo 2.0) wäre, weiss ich auch nicht - einige Arbeit wär's auf alle Fälle schon.

Bzgl. neuer Möglichkeiten werde ich nochmal im anderen Thread nachfragen.

Grüße
Manfred

rolinux

#5
Hallo Manfred!

Ich bin begeistert!  :P  :P  :P
Ich bin richtig geknickt, weil ich grade keine Anwendung dafür habe...

Nach dem Installieren des mozilo-Patches auf Revision 801 steht im Admin allerdings nach dem Aktivieren des Plugins
Patch Version 2.0 ** PATCH FEHLER **Aber grün markiert, und es funktioniert augenscheinlich auch alles. Aber die Meldung irritiert doch etwas...
Ich habe das Plugin deaktiviert vor dem mozilo-Patch und danach wieder aktiviert.

Gruß
Rolf
"Vergiss nie, dass die Musik viel zu wichtig ist,
um sie ganz den Profis zu überlassen."
(Robert Fulghum, amerikanischer Philosoph)

"Die Deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, d.h. du sollst sie nicht verändern oder in veränderter Form veröffentlichen."
(Verfasser unbekannt)

mhsob

#6
Hi Rolf!

Die Meldung sagt aus, dass zwar gepached wurde, aber nicht die erwartete Anzahl an Zeilen. Ich verstehe, warum es funktioniert - ist aber etwas Glück dabei...

Ich werde den Admins eine Version 2.0.1 zum Update im Plugin-Archiv senden. Die kommt mit 1.12.beta3 und der 1.12.beta3 Rev. 801 (und hoffentlich mit Folgeversionen) klar. Bis dahin stell ich's gleich mal hier rein.

Grüße und Danke für's Feedback
Manfred

rolinux

#7
Vielen Dank.
Jetzt stimmt die Anzeige.

Gruß
Rolf
"Vergiss nie, dass die Musik viel zu wichtig ist,
um sie ganz den Profis zu überlassen."
(Robert Fulghum, amerikanischer Philosoph)

"Die Deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, d.h. du sollst sie nicht verändern oder in veränderter Form veröffentlichen."
(Verfasser unbekannt)

stefanbe

#8
Hallo mhsob

Bin am überlegen ein GLOBALES cat/page array einzuführen was beim aufruf der Seite immer als erstes erzeugt wird.
z.B.

array(
    cat1 => array(
        page1,
        pgae2
    
)
    cat2 => array(
        page1,
        pgae2
    
)
)
 
Die function getDirContentAsArray() würde dann nur noch die infos aus dem array verarbeiten und nicht mehr aufs Filesystem zugreifen.

Du köntest dann in deinem Plugin das GLOBALE array so Verändern das die Geschüzten sachen nur bei bedarf enthalten sind.
Das würde dein Hack in getDirContentAsArray() überflüssig machen und damit würden auch andere Plugins z.B. DropDownMenu  mit deinem Plugin functionieren.
Auch die Suche/Sidemap währen dann nicht mehr das Problem (müste man noch Prüfen).

Was hälst du davon?
Was ist mit deinen globalen Hack in der index.php wie könnte man den entfernen?

gruss stefanbe

mhsob

#9
Hi stefanbe,

das hört sich sehr gut an. Ich müsste mal prüfen (dafür brauch ich ein bischen, da ich grad wieder weniger Zeit habe), ob ich die Login-Sache - wie ich das für die anderen Funktionen des Plugins schon getan habe - auch ohne Kollateralschäden ins Plugin ausgliedern kann. Ich muss auch mal probieren, wie ein header() im Plugin wirkt. Das header() auf sich selbst ist die einzige Möglichkeit, die POST-Daten zu löschen, um beim Reload nicht die Browser-Meldung zu erhalten.

Grüße
Manfred

stefanbe

#10
Zitat von: "mhsob"Das header() auf sich selbst ist die einzige Möglichkeit, die POST-Daten zu löschen, um beim Reload nicht die Browser-Meldung zu erhalten.
mach doch ein unset(POST); oder so solte gehen

gruss stefanbe

stefanbe

#11
Zur Info an den Plugin Autor siehe http://forum.mozilo.de/viewtopic.php?f=21&t=1422 :D

gruss stefanbe

mhsob

#12
Hi stefanbe,

Du Verrückter  :D - wenn das keine Steilvorlage für die Weiterentwicklung des access_control Plugins ist...
Wie gesagt, ich habe Appetit, aber grad keine Zeit. Ich bleib aber dran!

Grüße
Manfred

stefanbe

#13
hallo mhsob

diese CatPage sachen sind jetzt im nightly verfügbar und sind über global $CatPage im Plugin benutzbar :D

gruss stefanbe

frapa

#14
Das liest sich ja ziemlich kompliziert für einen Anfänger. :oops:

Zum Schutz der Dateien via Direktzugriff, soll man ja eine .htaccess anlegen.

Reicht da dieser Inhalt oder was muss dadrin stehen?

# directory-browsing verbieten
Options -Indexes

Ich habe das access_control noch nicht ausprobiert, muss mir das noch paar mal durchlesen was ich jetzt wo machen soll. :?

Generell aber ne tolle Sache.