+ Antworten
Ergebnis 1 bis 7 von 7

Thema: Auto User Creation

  1. #1
    Neu an Board
    Registriert seit
    05.08.2010
    Beiträge
    4
    Bedankte sich
    0
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Auto User Creation

    Hallo zusammen,

    ich habe eine Frage bzgl. der automatischen Benutzerregistrierung von joomla, nachdem die Authentifizierung des "Authentifizierungs-Plugin" (von mir selbst erstellt) erfolgreich war. Die Option "Auto User Creation" habe ich bereits im Backend aktiviert. Die Vorgehensweise lautet wie folgt:

    1. Mittels des selbst erstellten Plugins, soll der Benutzer über eine bestehende .Net Klasse (PHP DOTNET) in der Datenbank und in der Domäne verifiziert werden. War dies erfolgreich, so wird der Status auf JAUTHENTICATE_STATUS_SUCCESS gesetzt. Andernfalls auf JAUTHENTICATE_STATUS_FAILURE.

    2. Der Benutzer soll automatisch in der #__users Tabelle der Joomla Datenbank angelegt werden.

    Das klappt auch alles soweit ganz gut, nachdem ich die Zeilen 193-196 in der Datei libraries\joomla\database\table\user.php auskommentiert hatte. Nun erscheint jedoch die Meldung, dass ich keinen Zugriff auf diese Seite habe, weil mein Benutzer zwar einer Gruppe zugewiesen wird (#__users Tabelle) aber in der Mapping Tabelle (#__user_usergroup_map) wird dazu kein Eintrag erstellt. Das ist auch der Grund, weshalb diese Meldung erscheint. Ich könnte dies natürlich auch in der Datei plugins\user\joomla\joomla.php auskommentieren, wollte es aber aus Sicherheitsgründen beibehalten. Kann mir jemand sagen wo sich das SQL Statement befindet, indem der Benutzer in die Tabelle (#__users) eingetragen wird? Oder hat sonst jemand eine komfortablere Lösung parat?

    Gruß, JeyB

  2. #2
    War schon öfter hier
    Registriert seit
    23.09.2009
    Beiträge
    233
    Bedankte sich
    0
    Erhielt 62 Danksagungen
    in 59 Beiträgen

    Standard

    Bitte korrigiere mich; das Joomla! Authentification Plugin verhindert, soweit mir bekannt nicht die Anmeldung an Joomla! wenn die Authentifizierung im 2. System scheitert und false zurückgeliefert wird.

    Es reicht nicht den Benutzer in der #__users einzutragen. Weitere Tabellen sind #__core_acl_aro und #__core_acl_groups_aro_map.

    Wenn der Eintrag nicht über SQL erfolgen muss, schlage ich vor das System die Arbeit erledigen zu lassen. Für dich wird es ab "#2. Get required system objects" interessant.
    http://www.diademblogs.com/content-m...ur-custom-code

    Auch XML-RPC ließe sich verwenden und wenn es um die Anmeldung an eine Windows Domäne geht, hier einige Links.
    http://extensions.joomla.org/extensi...o0OiJsZGFwIjt9
    http://extensions.joomla.org/search?...+plugin&q=ldap
    http://community.joomla.org/gsoc2009...iguration.html
    http://blog.hakanwolf.de/2009/07/lda...ive-directory/
    Tell 'em what they want to hear. That will keep them coming back for more. I 've got some for everyone.

  3. #3
    Neu an Board
    Registriert seit
    05.08.2010
    Beiträge
    4
    Bedankte sich
    0
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Ja da hast du recht. Ich möchte ja auch nicht den Benutzer manuell anlegen sondern überlasse das Joomla. Aber warum weist er dem automatisch kreiertem Benutzer nicht die von mir standardmäßig angegebene Usertype = 2 (registered) zu? Habe nachgeschaut und festgestellt, dass in der Mapping Tabelle #__user_usergroup_map kein Eintrag erstellt wird, sondern nur wenn man über das Oberflächen Backend einen neuen Benutzer erstellt.
    Weiß dazu jemand eine Lösung? Es muss doch irgendwo das SQL Statement zu finden sein, welches bei der Erstellung des Benutzers, z.B. in der #__users Tabelle oder auch in den anderen Tabellen, wie z.B. #__core_acl_aro und #__core_acl_groups_aro_map gemacht wird. Habe bereits mit dem "findstr" Tool nach dem Satz "INSERT INTO" und ähnliche Varianten in dem Joomla Ordner und Unterordnern gesucht, konnte aber kein INSERT INTO finden, welches sich auf die Tabelle #__users bezieht.

    Meine eigentliche Frage lautet:
    Ist es ein BUG von joomla, dass ein Benutzer, der automatisch von joomla angelegt wird, keiner Gruppe zugewiesen wird?
    Geändert von JeyB (05.08.2010 um 13:25 Uhr)

  4. #4
    War schon öfter hier
    Registriert seit
    23.09.2009
    Beiträge
    233
    Bedankte sich
    0
    Erhielt 62 Danksagungen
    in 59 Beiträgen

    Standard

    Der Usertype "Registered" hat die Group-Id 18 - leg neue Benutzer über new JUser (besser JFactory::getUser(0) an und speichere dann mit $user->save(). Dadurch werden alle Einträge in den entsprechenden Tabellen vorgenommen.
    Wenn du es direkt über SQL machen möchtest / musst:
    Benutzer in #__users speichern, Insert Id für #__core_acl_aro verwenden und anschliessend group id und aro id mappen.
    Tell 'em what they want to hear. That will keep them coming back for more. I 've got some for everyone.

  5. #5
    Hat hier eine Zweitwohnung Avatar von progandy
    Registriert seit
    25.06.2007
    Beiträge
    1.784
    Bedankte sich
    8
    Erhielt 588 Danksagungen
    in 530 Beiträgen

    Standard

    Wie das einbinden von externen Userdatenbaknen funktioniert, kannst du sehr gut am OpenID-Plugin nachvollziehen.
    Suche und FAQ helfen bei Problemen oft weiter!

  6. #6
    Neu an Board
    Registriert seit
    05.08.2010
    Beiträge
    4
    Bedankte sich
    0
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Funktioniert

    Jetzt klappt es wunderbar. Habe folgende Änderungen in Joomla 1.6 vorgenommen, damit die user-auto-creation funktioniert.

    Datei: libraries\joomla\user\user.php
    Funktion: save
    Hinweis: Fügt diesen Code an der Stelle ein, wo das Attribut ID der Klasse gesetzt ist.
    PHP-Code:
    $db JFactory::getDBO();
    $db->setQuery(
    'INSERT INTO `#__user_usergroup_map` (`user_id`, `group_id`)' .
    ' VALUES ('.$this->id.', '.$this->usertype.')'
    );
    if(!
    $db->query())
    {
       return 
    JError::raiseWarning('SOME_ERROR_CODE'
       
    'Error occurred:<br>'.$db->getErrorMsg());

    Datei: plugins\user\joomla\joomla.php
    Funktion: _getUser
    PHP-Code:
    $lEmail = (empty($user['email'])) ? $user['username'].'@test.com' $user['email'];
    $instance->set('email'            $lEmail); 
    Danach sollte der Benutzer von Joomla in der Joomla Datenbank angelegt werden, vorausgesetzt die Option "Auto User Creation" ist beim "Users - Joomla!" Plugin aktiviert und es wird dafür gesorgt, dass das Authentifizierungs - Plug-In den Status JAUTHENTICATE_STATUS_SUCCESS setzt.
    Vielleicht hilft es anderen, die die selben Probleme haben wie ich.

    Danke an alle anderen, die mir zu diesem Thema nützliche Informationen gegeben haben

    Gruß, JeyB

  7. #7
    War schon öfter hier
    Registriert seit
    23.09.2009
    Beiträge
    233
    Bedankte sich
    0
    Erhielt 62 Danksagungen
    in 59 Beiträgen

    Standard

    Zitat Zitat von JeyB Beitrag anzeigen
    Jetzt klappt es wunderbar. Habe folgende Änderungen in Joomla 1.6 vorgenommen, damit die user-auto-creation funktioniert.
    Bitte um Entschuldigung ... vielleicht hätte ich im Vorfeld mehr Augenmerk auf den Bereich lenken sollen in dem der Thread liegt.
    Tell 'em what they want to hear. That will keep them coming back for more. I 've got some for everyone.

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein