giovedì, gennaio 22, 2015

Biblioteca per node.js: conferma registrazione via posta elettronica

Come anticipato nel post precedente, vogliamo aggiungere alla nostra applicazione la funzionalità di conferma registrazione.

Il caso d'uso della funcionalità da aggiungere è il seguente
  • L'utente inserisce i dati per la registrazione
  • Il sistema memorizzerà le informazioni dell'utente e invierà un messaggio di posta elettronica per confermare la registrazione appena effettuata
  • Solo dopo aver confermato la registrazione, l'utente potrà effettuare l'accesso.
Ecco come vengono modificati i vari moduli.

Nel file delle rotte routes/utenti.js
 router.route('/conferma/:username')  
   .get(function(request,response){  
       serviziUtenze.confermaRegistrazione(request.params.username);  
       response.render('login', {registrazioneOk: 'Ora puoi effettuare il login'});  
    });  
aggiungiamo una rotta per gestire la conferma della registrazione: nei serviziUtente implementeremo un metodo ad hoc.

Nel file dei serviziUtenze modifichiamo i metodi di login, registrazione e aggiungiamo il nuovo metodo confermaRegistrazione
 var login = function(username,password) {  
           var utentiLoggati = utentiRegistrati.filter(function(utente) {  
                return utente.username === username &&   
                    utente.password === password &&  
                    utente.confermato === true;  
           });  
           return utentiLoggati[0];  
      };  
Il metodo login aggiunge il controllo sul nuovo campo booleano confermato, che viene inizializzato a false in fase di registrazione e posto a true con la funzionalità di conferma.
 var registra = function(utente) {  
      var href = 'http://whispering-peak-1284.herokuapp.com/utente/conferma/' + 
           utente.username;  
           utentiRegistrati.push(utente);  
           postino.sendMail({  
             from: 'passionejavascript@gmail.com',  
             to: utente.email,  
             subject: 'conferma registrazione',  
             html: 'Confermi la registrazione alla biblioteca con un click: ' +  
                   '<a href="' + href +   
                   '">Confermo!</a>'  
           }, function(err, info) {  
                  if (err)  
                    console.log(err);  
                  if (info)  
                    console.log(info);   
                });  
           console.log(utentiRegistrati);  
      };  
Nel metodo registra, viene inviato un messaggio di posta elettronica all'utente che si sta registrando, costruendo, nel corpp del messaggio in formato html, un opportuno indirizzo per attivare la funzionalità di conferma.
 var confermaRegistrazione = function(username) {  
      var utenteDaConfermare = utentiRegistrati.filter(function(utente) {  
           return utente.username === username;  
      });  
   
      if (utenteDaConfermare)  
           utenteDaConfermare[0].confermato = true;  
      };  
   
      return {  
           login : login,  
           registra : registra,  
           confermaRegistrazione: confermaRegistrazione  
      };
      ...
Nella conferma, cerchiamo l'utente nella collezione degli utenti registrati e modifichiamo a true la proprietà confermato.

Provate a testare la funzionalità all'indirizzo https://whispering-peak-1284.herokuapp.com/: registratevi con un indirizzo di posta valido, controllate la posta, attivate la conferma dal messaggio di posta e poi effettuate l'accesso.

Ho aggiornato su github il progetto installato su heroku, in modo che possiate avere tutto il codice a disposizione, in questo post è spiegato come utilizzare github.

Dopo aver fatto il pull del progetto, ricordatevi di eseguire npm install nella cartella di progetto per installare la dipendenza aggiuntiva nodemailer: se volete eseguire il programma in locale digitate node app.js e puntate il browser all'indirizzo http://localhost:5000.

Alla prox
Ivan

Nessun commento:

Posta un commento