Registrierung per Einladungslink oder so was ähnliches?

  • Joomla Version
    5.0.3
    PHP Version
    PHP 8.1.x
    Hoster
    privater Hoser
    Link (URL) zur Seite mit dem Problem
    https://new.blaue-saenger.de/

    Hallo zusammen,


    wenn ich es richtig verstehe, kann man die Möglichkeit zur Registrierung nur global an- oder abschalten:

    • wenn es angeschaltet ist, wird im Login-Modul ein entsprechender Link für alle angezeigt und das Formular ist erreichbar,
    • wenn man es abschaltet, verschwindet nicht nur der Link im Modul, sondern die Registrierungsseite ist generell nicht erreichbar. Selbst wenn man den Link vorher gespeichert hat und nun von Hand aufruft, kommt man nur zu einem normalen Loginformular

    So weit, so gut


    Aber:

    Ich will nun für einen Verein eine Seite aufbauen und den Mitgliedern die Möglichkeit geben, sich selbst zu registrieren - aber nur denen.


    Sponat würde mir für sowas eine Art "Registrierung nach Einladung" vorschweben: ich schicke an alle Mitglieder einen Link, mit dem sie dann auf eine Registrierungsseite kommen und sich dann selbstständig registrieren.


    Oder gibt es noch eine andere einfache Möglichkeit, nur bestimmten Personen die Registrierung zu ermöglichen?


    Herzliche Grüße

    Ulli

  • Hallo Ulli,

    Joomla kann ja nicht wissen, wer nun berechtigt sein soll oder nicht.

    Die Entscheidung für die Freigabe nach einer Registrierung kann man so einstellen, dass diese erst im BE durch einen berechtigten User erlaubt werden muss. Das mit dem Link kannst du schon machen aber zu finden ist dieser Link ja auch im WWW, wenn man sich etwas auskennt.


    Viele Vereine legen Ihre User selbst an und lassen die Registrierung komplett weg.

    Bedeutet, dass jedes Vereinsmitglied automatisch auch einen Zugang erhält.

  • Link im Modul z.B. per CSS verstecken:


    Code
    ul.mod-login__options li + li +li {
     display: none ;
     visibility: hidden;
    }


    Link wäre:

    example.com/index.php?option=com_users&view=registration


    Ist aber wie oben schon in #2 geschrieben kein Hinderniss z.B. für Bots usw.


    Es wäre also zumindest z.B. noch ein entsprechender Eintrag in der .htaccess oder alternativ ein Template-Override erforderlich um das gewünschte zu erreichen.


    Eine entsprechende Umleitung ähnlich wie dort fürs Backend beschrieben ist wohl auch für die Registierung denkbar und möglich, habe ich aber noch nie verwendet:


    Administrator-Verzeichnis per htaccess schützen


    Joomla Adminverzeichnis sichern ohne zusaetzliches Login Backend


    Quelle für Template-Override in welchem man dann z.B. mit zusätzlichem eigenen Code einen geheimen Wert in der URL abfrägt und nur wenn der Wert richtig vorhanden ist erscheint das Formular:


    github.com/joomla/joomla-cms/blob/5.0.3/components/com_users/tmpl/registration/default.php


    Beispiel für einen diesbezüglichen Link:

    example.com/index.php?option=com_users&view=registration&geheimerwert=meingeheimnis0815

  • Viele Vereine legen Ihre User selbst an und lassen die Registrierung komplett weg.

    Genau das würde ich gerne vermeiden, weil der gesamt Workflow dann über mich laufen würde, so nach dem Motto "richte mir doch mal einen Account ein" und ich muss von Benutzername bis Passwort alles eintragen.


    Deswegen meine Überlegung mit einem Link. Ich würde einfach einen entsprechenden QR-Code generieren und im Vereinshaus zur Verfügung stellen oder den Link an die Vereinsmitglieder versenden. Dann würden sie ihre Daten auf der Seite selbst eintragen, würden eine Mail mit einem Bestätigungslink bekommen, und der Admin muss die Registierung dann nur bestätigen.


    Ich hatte gehofft, dass es dazu schon eine Plugin-Lösung (oder eine andere Umsetzung) gibt, aber ich versuch das auch gern mal so, wie Sieger66 das beschrieben hat :)

  • Um ein entsprechendes Template-Override zu nutzen genügt es aber schon nachfolgenden Code:


    vollständig in der Datei dort zu speichern:


    /templates/cassiopeia/html/com_users/registration/default.php


    somit wird bei Nutzung des Cassiopeia-Core-Templates das Formular der Registrierung nur noch dann nutzbar angezeigt wenn man das Geheimnis wie bei nachfolgendem Beispiel an die URL anhängt:


    example.com/index.php?option=com_users&view=registration&secret=0815


    secret und 0815 kann man im Code(Zeile 36) ja nach belieben leicht selbst abändern und somit ist dann z.B. auch möglich:


    example.com/index.php?option=com_users&view=registration&geheim=jahr2024


    und jede andere Variante die man möchte...

  • Und wer gerne mehr dazu lesen möchte wie die Zeile 36 "funktioniert" siehe z.B.:


    Input | Joomla! Programmers Documentation
    The Joomla Input functionality provides an easy-to-use interface to obtaining and sanitising the data of several of the PHP Superglobals
    manual.joomla.org

  • Der Code in #6 hat leider noch einen kleinen "Schönheitsfehler" wenn man bei der Registrierung z.B. einen bereits vorhandenen Benutzernamen oder email-Adresse verwendet bekommt man nach absenden des Formulars nur die Fehlermeldung aber nicht mehr das Formular mit den bereits eingegebenen Daten zu sehen . Das kann man zwar per "Zurück-Button" vom Browser wieder mit den bereits eingetragenen Daten zur Verfügung gestellt bekommen, ist aber nicht wie ursprünglich.

    Daher besser anstatt des Code in #6 den kompletten nachfolgenden Code verwenden:




    Dann bekommt man, wie ursprünglich, bei einer Fehlermeldung nach dem absenden des Formulares auch wieder das Registrierungsformular mit den bereits eingegebenen Daten zur Korrektur zur Verfügung gestellt und auch die Fehlermeldung/en.