Joomla Benutzerregistrierung nur mit gültiger "Firmen-Nr." zulassen?

  • Joomla Version
    4.4.12
    PHP Version
    PHP 8.3.x
    Hoster
    Lokal

    Hallo,

    wie könnte ich folgenden Wunsch am einfachsten umsetzen:

    - Die Joomla Benutzerregistrierung ist grundsätzlich auf erlaubt gestellt
    - Es sollen jetzt aber nur "gezielte" Personen die Möglichkeit bekommen, sich final registrieren zu können (insg. weit unter 100 Benutzer)

    Eine Möglichkeit wäre jetzt, wenn es beim Registrierungsformular einfach ein zusätzliches Text/-Nummernfeld gäbe.
    Im Vorfeld bekommen dann nur bestimmte Personen eine Art "Firmencode" von mir zugestellt (<10).

    Nur wenn ein gültiger "Firmencode" bei der Registrierung eingegeben wird, soll die Registrierung möglich sein.

    Gibt es für diesen Wunsch evtl. bereits ein vorhandenes Plugin (welches ich noch nicht entdeckt habe)?

    Wenn nein, wie könnte ich diesen Wunsch am besten umsetzen?
    Override von Core-Files mit inbegriffen - nur mal schnell als Idee in Raum geworfen, dass "Favourite Book" oder "About Me" zu missbrauchen und dies dann beim Registrierungsversuch auf die ~10 Codes gegenzuprüfen :/

    Danke

  • Soll ja ganz einfach sein - habe ein wenig selber versucht zu basteln.

    Eigentlich sollte das schon als quick & dirty Lösung langen:

    Die ersten Tests waren mal schon erfolgreich.

    P.S.: Wie gesagt, ich 'missbrauche' das Buchempfehlung Feld hier für meine Zwecke des "Firmencodes".

    D.h. im User-Profile Plugin nur 'Buchempfehlung' enabled, ganzer Rest disabled (auch alles disabled unten bei 'User profile fields for profile edit form'). Dazu noch ein Language Override von PLG_USER_PROFILE_FIELD_FAVORITE_BOOK_LABEL zu 'Firmen-Code' und das war's eigentlich schon. Hab ich etwas vergessen?

  • Hallo Heart1010,

    als "quick & dirty" Lösung ist das mehr als ausreichend und gut gelöst.

    Wenn du noch ein bisschen Zeit investierst, dann kannst du auch das Feld in deinem Plugin laden und auf das Profilplugin vom Core ganz verzichten.

  • Zitat

    Wenn du noch ein bisschen Zeit investierst, dann kannst du auch das Feld in deinem Plugin laden und auf das Profilplugin vom Core ganz verzichten.

    Ich würde das sehr empfehlen!
    Wenn die Seite mal von jemand anderem betreut werden muss (das ist nichts ungewöhniches) kommt er nicht ohne Weiteres auf die Idee, etwa unter Buchempfehungen zu suchen.

    Joomla ist ja über die Jahre gewachsen, diese Sachen mit Buchempfehlung stammen noch aus einer Zeit, als Leute noch Bücher gelesen haben. Ich hoffe, dass wir dieses Feld mal ganz los werden können.

  • firstlady  Kubik-Rubik Vielen Dank für den Hinweis, war ja gar nicht so schwer das umzusetzen mit einem zusätzlichen Feld und der onContentPrepareForm Methode.


    Aber die quick & dirty hat natürlich den scharmanten Nebeneffekt, dass ich jederzeit nachvollziehen kann, welchen Firmencode dieser Nutzer bei der Registrierung genutzt hat. Wie würde ich das mit dem eigenen Feld machen können?

    Hier mal meine jetzige Version v1.0.1 mit dem eigenen Feld.

  • Ok, mit Hilfe von ChatGPT ein wenig weiter gebastelt und zusätzlich zum User Plugin (mit der `firmencode` Prüfung und nun Speicherung als 'firmcode' profile_key in der Joomla user_profile db) noch ein weiteres System Plugin gemacht, dass beim Editieren eines Joomla Users im Backend diesen Firmencode auch als neues Fieldset mit anzeigt und änderbar macht).

    Wenn es einer brauchen kann, bitteschön....

  • Du könntest die Speicherung der Eingabe (onUserAfterSave) und das Formular im Editiermodus (onContentPrepareData) auch über das Benutzerplugin machen und dir das Systemplugin sparen, wenn du es weiter optimieren möchtest.

  • Du könntest die Speicherung der Eingabe (onUserAfterSave) und das Formular im Editiermodus (onContentPrepareData) auch über das Benutzerplugin machen und dir das Systemplugin sparen, wenn du es weiter optimieren möchtest.

    Natürlich!

    Also hier alles kombiniert in einem Plugin.

    Ich habe hier eine zweite Datei `firmcode_optional.xml` im forms Ordner erstellt, die `required="false"` (anstatt true) drin hat.
    Hintergrund ist, dass der firmcode bei der User-Registrierung ja Pflicht sein soll. Wenn ich jetzt aber einen User im Backend bearbeite, kann es ja durchaus sein, dass dieser keinen Firmencode haben soll/muss (z.B. weitere Admin-User).

    Hoffe, dass passt so mit den zwei unterschiedlichen forms xml Dateien?

    Kubik-Rubik Danke für den Hinweis - kA warum ich da zuerst zwei unterschiedliche Plugins dafür gemacht habe 🤦‍♂️