it-swarm.it

Registrare l'utente tramite uno script esterno e una password casuale

Ho questo PHP che voglio chiamare da un'app mobile, che registra un indirizzo e-mail, utilizza una password casuale e attiva automaticamente e chiede all'utente di reimpostare la password al primo accesso.

Questo è l'array $ data che sto passando alla funzione di registrazione serModelRegistration:

$data = array( 
  'username' => $username,
  'name' => $name,
  'email1' => $email,
  'password1' => $password, // First password field
  'password2' => $password, // Confirm password field
  'sendEmail'  => '0',
  'block' => '0',
  'activation' => '0',
  'groups' =>array("2","10"));

I parametri sendEmail, attivazione e gruppi non stanno davvero facendo nulla ... hanno provato a cambiarli, usando invece di '0' e hanno giocato con l'ordine, ma niente aiutato.

È possibile?

In caso contrario, esiste un modo per effettuare una semplice registrazione e-mail che registra l'e-mail e richiede una reimpostazione della password?

3
Laureant

Non credo che ci sia un modo, all'interno del core di Joomla, di forzare un ripristino della password. Ci sono comunque alcune estensioni per questo genere di cose.

Il valore di attivazione non farà nulla, penso, se stai creando un utente dall'oggetto JUser.

Penso che il parametro sendEmail dovrebbe funzionare, in termini di invio all'utente dei propri dettagli. Controlla le opzioni in User Manager, forse "Invia password" è impostato su "No" lì. È possibile che sia impostato su No lì e che sovrascriva il parametro. Potrebbe anche esserci un problema con il server che invia e-mail. Puoi verificarlo in "Configurazione globale", nella scheda "Server", facendo clic sul pulsante "Invia posta di prova" in basso a destra. Questo mostrerà se il server sta inviando posta ok, e se ricevi il messaggio di prova, che non viene catturato dai filtri antispam.

Puoi semplicemente inviare la posta all'utente stesso, dal tuo script, con qualcosa come ...

<?php  
$data = array( 
  'username' => $username,
  'name' => $name,
  'email1' => $email,
  'password1' => $password, // First password field
  'password2' => $password, // Confirm password field
  'sendEmail'  => '0',
  'block' => '0',
  'activation' => '0',
  'groups' =>array("2","10")
);

$user = new JUser;
if ($user->bind($data)) {
    if ($user->save()) {
        echo "user created <br/>";

        # welcome message
        $welcome_email = "Welcome . " . $name . "\n"
        $welcome_email .= "Your username is . " . $username . "\n"
        $welcome_email .= "Your password is . " . $password . "\n"        

        # email set-up
        $config = JFactory::getConfig();
        $sender = array( 
            $config->get( 'mailfrom' ),
            $config->get( 'fromname' ) 
        );
        $mailer = JFactory::getMailer();
        $mailer->setSender($sender);    
        $mailer->isHTML(false);     

        # send the email
        $mailer->addRecipient($email);
        $mailer->setSubject('Your user account is created');
        $mailer->setBody($welcome_email);
        $send = $mailer_admin->Send();
        if ( $send !== true) {
            echo "Admin email failed: \n" . print_r(error_get_last(), true) . "<br/>";
            echo "send toString: \n" . $send->__toString() . "<br/>";
        } else {
            echo "Admin email sent<br/>";
        }
    } else {
        echo "create error " . $user->getError() . "<br/>";
    }    
} else {
    echo "bind error " . $user->getError() . "<br/>";
}               
?>

Tutto quanto sopra è per Joomla 3.6.4, può variare per le versioni precedenti.

Spero che questo sia utile, fammi sapere se hai domande o idee. :)

2
AndyGaskell