Zum Inhalt springen

extbase Plugin: Login-Kontrolle / Userroles

Erstellt am 24. Juli 2011 · 4 Antworten · letzte Antwort am 26. Juli 2011

Tags: Frage

Marti51 ·

Hallo zusammen,

ich bin gerade dabei meine erste Extension mit extbase/fluid für Typo3 zu schreiben (Alles Neuland für mich ). Soweit läuft es auch, was mir zur Zeit noch Kopfzerbrechen bereitet ist die Zugriffskontrolle. Nicht eingeloggten Benutzern soll das Plugin nicht zugänglich sein, evtl. soll auch innerhalb des Plugins zwischen Usern mit verschiedenen Rollen unterschieden werden. Meine Fragen also:

1. Wie kann ich, von der Typo3-"Hauptseite" unabhängig, einen solchen Login direkt in meinem Plugin realisieren ? Muss ich dabei auf tx_ext_Model_feusers (?) zurückgreifen oder kann das auch "einfacher" realisiert werden? Und wie kann ich dann durch alle Controller-Aufrufe hindurch sicherstellen, dass auch wirklich nur eingeloggte User Zugriff haben und nicht auch welche, die sich einfach die Parameter zum Controller-Aufruf in der URL zusammengabaut haben?

2. Wenn die "Typo3-Hauptseite" bereits ein Login-Formular hätte, würde es dann ausreichen (sicherheitstechnisch) die Seite, auf der das Plugin eingerichtet ist, als "protected page" einzurichten ? Oder kann / sollte ich dann trotzdem bei jedem Controller-Aufruf nochmal prüfen, ob ein User eingeloggt ist (und wo würde ich die entsprechenden Angaben in Typo3 beziehen? Session?)

3. Wenn ich innerhalb der Extension zwischen verschiedenen Typo3-User-Rollen unterscheiden möchte, dachte ich mir, ich mache das einfach über ein "<f:if hasRole>", dann müsste ich aber analog zu 1 auch wieder auf die feusers zugreifen, richtig?

Es geht nicht darum, an bestehenden Usern etwas zu ändern oder neue User zu erstellen, es geht rein um eine "Zugriffskontrolle" für schon bestehende User.

oliver.​christ ·

Hi,
das war oder ist auch für mich ein sehr kniffliges Thema mit welchem ich sehr viel Zeit verbracht habe.
Ich habe mich an Jochen Rau's Buch orientiert und seiner Extension sjr_offers.
Rollen verwende ich nicht, aber ev. ist das schon mal ein Guter Einstiel.
Für die Templates erstellest Du Dir tatsächlich einen Viewhelper, welchen man aber umgehen könnte wie Du selbst schon bemerkt hast. Deshalb machst Du noch eine zusätzliche Prüfung im Controller.
tx_ext_Model_feusers brauchst Du glaube ich nicht eher

$GLOBALS['TSFE']->fe_user 
$GLOBALS['TSFE']->loginUser

Viel Kraft 😉

Gruß Olli

Marti51 ·

Danke für die schnelle Antwort, das werd ich mir morgen mal anschauen.
Für andere Tipps bin ich natürlich weiterhin dankbar. 😉

Eydamos ·

Man braucht das Rad ja nicht immer neu zu erfinden.

Nutz für das Login einfach die Extension felogin.
Wenn du unter dem Tab Access in der Seite oder auch direkt im Plugin die Rechte einschränkst, dann reicht das vollkommen aus und kann imho nicht umgangen werden.

Das Repository ist übrigens so aufgebaut, das die SQL Abfragen mit einbeziehen, ob ein eingeloggter user die Datensätze sehen darf oder nicht. Somit kannst du auch auf einzelne Datensätze im Access Tab die Rechte einschränken.

Marti51 ·

Ja, so wird es jetzt wohl auch geregelt werden (also über FElogin).
Trotzdem danke an Oliver, die Variante hab ich trotzdem auch mal gebaut, vieleicht braucht man's mal später noch.