Automatisiertes Anlegen von Frontendusern

Gesperrt
mko
Beiträge: 123
Registriert: Di 1. Feb 2005, 10:26
Wohnort: Österreich
Kontaktdaten:

Automatisiertes Anlegen von Frontendusern

Beitrag von mko »

Hallo,

wir haben folgendes vor: In Contenido gibt es ein Mitarbeiterverzeichnis, als eigene Tabelle. Aus dieser Tabelle möchte ich nun für jeden Mitarbeiter ein eigenes Login/Passwort (md5 kodiert) für den Frontendbereich generieren.

Dazu schreibe ich die benötigten Felder in die Tabelle con_frontendusers und con_frontendgroupmembers (Gruppenzuordnung). Die User werden auch unter Administration - Frontenduser (Gruppe) richtig angezeigt, nur klappt das Login nicht (Invalid Username or Password! - sonst keine Fehlermeldung in den Logs).

Habe ich etwas vergessen?

Danke für Eure Unterstützung.
Markus
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Verwende die entsprechenden Contenido-Objekte. D.h. class.frontend.user.php um sicherzustellen, dass die Informationen so in der DB gespeichert werden, wie es erwartet wird (urlencoded z.B.).

Ein Beispiel, wie man das Objekt nutzt, findest Du im Newsletter-Handler-Modul (Output), siehe Signatur.

Ansonsten stellt sich die Frage, wann Du diese Fehlermeldung erhältst:
- Wenn Du das Login-Modul oder ein ähnliches verwendest, hast Du noch ein Problem bei der Eintragung.
- Wenn Du das Login-Formular meinst, welches erscheint, wenn man auf eine geschützte Kategorie klickt, so gibt es da noch einen Fehler in der front_crcloginform.inc.php - eine Anmeldung darüber scheitert fürs Frontend fast immer.

Empfehlung: Eigenes Login-Modul verwenden und geschützte Kategorie erst in der Navi anzeigen, wenn der User angemeldet ist (Beispiel siehe Hauptnavigations-Modul des Beispiel-Mandanten zu V4.6.x).

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
mko
Beiträge: 123
Registriert: Di 1. Feb 2005, 10:26
Wohnort: Österreich
Kontaktdaten:

Beitrag von mko »

Kenne mich leider beim objektorientierten Programmieren nicht mehr so aus. Daher der herkömmliche Weg - leider ohne Erfolg...

Code: Alles auswählen

<?php
        
        include("../db.inc");  
        
        $ZID = $_GET['ID'];  // Einschränkung des Imports
             
        $idfrontenduser = 13; // manueller Startwert User-ID
        $idfrontendgroupmember = 16; // manueller Startwert Gruppen-ID

        $result = @mysql_db_query("contenido","SELECT ID, mail, sn, Funktion FROM con_adr_sih WHERE (aktiv=1 AND mail!='' AND ID>$ZID)");
        while ($row = mysql_fetch_array($result)) {

            $Email = urlencode($row["mail"]); //Username
            $SYS = md5(sysadmin); // Author und Modifiedby
            $Default = "01234567890AbCdEfGhIjKlMnOpQrStUvWxYz";
            $Default = str_shuffle($Default); // Passwort erzeugen
            $Funktion = $row["Funktion"];
            $Funktion = substr($Funktion,0,1)+ 4; //Bestimmt Gruppennummer aus Userinfo
            
 	    if (strlen($Default) < 6) { //Normiert Passwort
		$Default=str_pad($Default,6,'a');
            } else {
                $Default=substr($Default,0,6);   
	    }
            
            $Passwort = md5($Default); //Codiert Passwort
           
	   //Kontrollausgabe
            echo ("User: ".$Email."<br>");
            echo ("User-ID: ".$idfrontenduser."<br>");
            echo ("Group-ID: ".$idfrontendgroupmember."<br>");	
	    echo ("Passwort: ".$Default."<br>");
            echo ("Funktion: ".$Funktion."<br>");
	    echo ("<br>");            

	    $idfrontenduser = $idfrontenduser + 1; //Erhöht User-ID
            $idfrontendgroupmember = $idfrontendgroupmember +1; //Erhöht Gruppen-ID
           
           mysql_query("INSERT INTO con_frontendgroupmembers SET 
                idfrontendgroupmember ='$idfrontendgroupmember',
                idfrontendgroup = '$Funktion',
                idfrontenduser = '$idfrontenduser'") or die(mysql_error());

           mysql_query("INSERT INTO con_frontendusers SET 
		idfrontenduser ='$idfrontenduser',
                idclient = '2', 
		username = '$Email',
		password = '$Passwort',
 		active = '1',
		author = '$SYS',
                created = 'date(Y-m-d H:i:s)',
		modified = ' date(Y-m-d H:i:s)',
		modifiedby = '$SYS'") or die(mysql_error()); 
?> 
Der Fehler tritt auf, nachdem ich im Loginmodul (Einfaches Login-Modul/Author: Andreas Lindner/Version:1.0) User/Passwort eingebe.
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Sieht grundsätzlich gut aus - sollte gehen.

Ansonsten das ganze nochmal via Objekten...

Ist ein Modul (Output), in ein Template einbauen, Template einem Artikel zuweisen und einmal im Backend Artikel anklicken
(so dass man in den Editor gelangt).

Ungetestet.

Code: Alles auswählen

<?php
        cInclude("classes", "class.frontend.users.php");
        cInclude("classes", "class.frontend.groups.php");

        $oFEUsers = new FrontendUserCollection;
        $oFEGroupMembers = new FrontendGroupMemberCollection;

        $db2 = new DB_Contenido;
               
        $ZID = $_REQUEST['ID'];  // Einschränkung des Imports 
              
        $sSQL = "SELECT ID, mail, sn, Funktion FROM con_adr_sih WHERE aktiv='1' AND mail != '' AND ID > '".$ZID."'"; 
	$db2->query($sSQL);

        while ($db2->next_record()) {
            $Email = $db2->f("mail");

            if (!$oFEUsers->userExists($Email)) {
               $Default = "01234567890AbCdEfGhIjKlMnOpQrStUvWxYz";
               $Default = str_shuffle($Default); // Passwort erzeugen

               if (strlen($Default) < 6) { //Normiert Passwort 
                  $Default=str_pad($Default,6,'a'); 
               } else { 
                  $Default=substr($Default,0,6);    
               }

               $oFEUser = $oFEUsers->create($Email, $Default);
               $oFEUser->set("active", 1);
               $oFEUser->store();

               $Funktion = $row["Funktion"];
               $Funktion = substr($Funktion,0,1)+ 4; //Bestimmt Gruppennummer aus Userinfo 
                        
               $oFEGroupMembers->create($Funktion, $oFEUser->get($oFEUser->primaryKey));

               //Kontrollausgabe
               echo ("User: ".$Email."<br>"); 
               echo ("User-ID: ".$idfrontenduser."<br>"); 
               echo ("Group-ID: ".$oFEUser->get($oFEUser->primaryKey)."<br>");    
               echo ("Passwort: ".$Default."<br>"); 
               echo ("Funktion: ".$Funktion."<br>"); 
               echo ("<br>");
           } else {
              echo $db2->f("mail")." existiert bereits.<br>";
           }
       }
?> 
Gruß
HerrB
Zuletzt geändert von HerrB am Fr 21. Jul 2006, 17:17, insgesamt 1-mal geändert.
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
mko
Beiträge: 123
Registriert: Di 1. Feb 2005, 10:26
Wohnort: Österreich
Kontaktdaten:

Beitrag von mko »

Ich habe deine Version einmal eingebaut. Bekomme zwar bei Klick auf Edit eine Fehlermeldung (Fatal error: Cannot instantiate non-existent class: capiclient in), aber nachdem ich auf Vorschau klicke werden die Daten in die Tabellen geschrieben. Und das Login klappt...
Gesperrt