Jump to content

Envoi de mot de passe par mail lors de la création de client ?


Djael

Recommended Posts

Bonjour,

 

Problème rencontré :

 

Nous ajoutons nos clients nous même via le Back-Office, la page d'enregistrement est désactivée.

Ceci étant, nous souhaiterions automatiser lors de la création de ces derniers, un envoi de mail leur donnant le fameux lien permettant de réinitialiser leur mot de passe..

 

Des idées ?

 

Merci d'avance

Edited by Djael (see edit history)
Link to comment
Share on other sites

ce que j'ai compris:

 

les inscriptions sont interdites par les client directement, donc Djael créer des comptes client et donc leur impose un mot de passe.

 

Pour des raisons de sécurité et de confiance il souhaite envoyer un mail au client qu'il viens d'inscrire un lien vers une page permettant au client de changer ce mot de passe.

Link to comment
Share on other sites

Oui, là, on comprend la même chose. Mais je rajouterais surtout qu'il veut automatiser ça (même si, et on sera surement d'accord), le client peut toujours aller réinitialiser le mot de passe. Mais je ne pense pas que la création du client via le back office envoi un mail de création de compte, en fait.

Link to comment
Share on other sites

Vous avez bien résumé la chose !

 

Lors de la création dans le back-office, aucun mail n'est envoyé au client, et c'est ce que nous souhaiterions.

Un mail avec un lien pour réinitialiser son mot de passe.

 

Ca doit pas être bien compliqué, mais ici on rame.. :(

Link to comment
Share on other sites

  • 4 months later...
  • 2 months later...
  • 6 months later...

Hello,

 

Sur 1.5.5.0, je crée le compte avec un mot de passe bidon, puis je démarre la procédure de récupération du mot de passe avec l'adresse du compte client que je viens de créer. Ainsi le client reçoit l'email de réinitialisation.

 

Comment faire pour qu'à la création d'un compte client, il n'y ait pas besoin de saisir un mot de passe, et qu'il soit généré automatiquement et envoyé automatiquement au client ?

 

Guillaume

Link to comment
Share on other sites

  • 1 month later...

En fait je viens de trouver une solution toute simple utilisant les mails de base (désolé pour le module :D).

 

Il suffit de faire un override du controler admin customer, nom exact : "AdminCustomersController.php" qui se trouve dans /controllers/admin

 

Il vous suffit de mettre ça :





class AdminCustomersController extends AdminCustomersControllerCore
{
	public function processAdd()
	{
		if (Tools::getValue('submitFormAjax'))
			$this->redirect_after = false;
		// Check that the new email is not already in use
		$customer_email = strval(Tools::getValue('email'));
		$customer = new Customer();
		if (Validate::isEmail($customer_email))
			$customer->getByEmail($customer_email);
		if ($customer->id)
		{
			$this->errors[] = Tools::displayError('An account already exists for this email address:').' '.$customer_email;
			$this->display = 'edit';
			return $customer;
		}
		elseif ($customer = parent::processAdd())
		{
			$this->context->smarty->assign('new_customer', $customer);

			$this->sendConfirmationMail($customer);
			return $customer;
		}
		return false;
	}

	/**
	 * sendConfirmationMail
	 * @param Customer $customer
	 * @return bool
	 */
	protected function sendConfirmationMail(Customer $customer)
	{
		if (!Configuration::get('PS_CUSTOMER_CREATION_EMAIL'))
			return true;

		return Mail::Send(
			$this->context->language->id,
			'account',
			Mail::l('Welcome!'),
			array(
				'{firstname}' => $customer->firstname,
				'{lastname}' => $customer->lastname,
				'{email}' => $customer->email,
				'{passwd}' => Tools::getValue('passwd')),
			$customer->email,
			$customer->firstname.' '.$customer->lastname
		);
	}
}

ce fichier sera nommé pareil mais vous irez le placer dans /override/controllers/admin

 

Sur ce je vous souhaite une bonne fin de journée :).

 

Je précise, je suis en version 1.5.6

Edited by atcha_ (see edit history)
Link to comment
Share on other sites

plus simple encore, pour ton override met juste : 
 

<?php
class AdminCustomersController extends AdminCustomersControllerCore
{
	public function processAdd()
	{
		$customer = parent::processAdd();		
		if($customer AND empty($this->errors))			
			Mail::Send(
				Context::getContext()->employee->id_lang,
				'account',
				Mail::l('Welcome!'),
				array(
					'{firstname}' => $customer->firstname,
					'{lastname}' => $customer->lastname,
					'{email}' => $customer->email,
					'{passwd}' => Tools::getValue('passwd')),
				$customer->email,
				$customer->firstname.' '.$customer->lastname
				);
		return $customer;
	}
}

j'ai testé en local sur 1.5.6 et j'ai bien reçu le mail 

  • Like 1
Link to comment
Share on other sites

  • 2 months later...

Je dirais bien avoir une réponse mais il s'agit d'un nouveau module que j'ai réalisé et que je vends à 29.90€. Pas sur que ce soit donc une réponse souhaitée, ;-)

 

Pour l'info, le module est publié. Et il permet de générer des mots de passe clients et employés, et de pouvoir les envoyer (ou non !) par mail. ;-)

Link to comment
Share on other sites

plus simple encore, pour ton override met juste : 

 

<?php
class AdminCustomersController extends AdminCustomersControllerCore
{
	public function processAdd()
	{
		$customer = parent::processAdd();		
		if($customer AND empty($this->errors))			
			Mail::Send(
				Context::getContext()->employee->id_lang,
				'account',
				Mail::l('Welcome!'),
				array(
					'{firstname}' => $customer->firstname,
					'{lastname}' => $customer->lastname,
					'{email}' => $customer->email,
					'{passwd}' => Tools::getValue('passwd')),
				$customer->email,
				$customer->firstname.' '.$customer->lastname
				);
		return $customer;
	}
}

j'ai testé en local sur 1.5.6 et j'ai bien reçu le mail 

 

 

sinon ça c'est gratuit, merci la communauté  :D

Link to comment
Share on other sites

Le premier qui ose me dire que je n'ai pas compris ce principe est né: il s'agit de coeos.pro

 

Je te laisse retracer mon historique passé et présent, à ce sujet. Tu reviendras me voir quand tu en sauras plus.

 

Le fait de proposer un override (et ce gratuitement) ne m'empêche pas de réaliser un module payant. Je ne force personne à l'acheter et je ne cherche nullement à cacher les entraides gratuites qui, en effet, pour une fois ne sont pas de moi et il m'arrive bien souvent de les référencer. En cas.

  • Like 1
Link to comment
Share on other sites

Le premier qui ose me dire que je n'ai pas compris ce principe est né: il s'agit de coeos.pro

 

Je te laisse retracer mon historique passé et présent, à ce sujet. Tu reviendras me voir quand tu en sauras plus.

MDR, tu fais référence au module achat groupé GRATUIT que tu "reprends" pour en faire une version payante ?

 

Le fait de proposer un override (et ce gratuitement) ne m'empêche pas de réaliser un module payant.

Euh NON, atcha_ a donné un override gratuitement et j'ai apporté une petite optimisation gratuite de cet override, mais toi tu n'a RIEN proposé, hormis une solution payante :

 

Je dirais bien avoir une réponse mais il s'agit d'un nouveau module que j'ai réalisé et que je vends à 29.90€. Pas sur que ce soit donc une réponse souhaitée, ;-)

en tout cas, si tu veux vendre tes modules, je t'invite cordialement à le faire dans la bonne section, inutile de déterrer des post pour ça ;)

 

Débourser 30€ pour un module fonctionnel plutôt qu'une bidouille à l'arrache.com.

une bidouille qui fonctionne, et 30€ pour un copié collé de 10 lignes... :wacko:

Link to comment
Share on other sites

Allez encore un post qui va virer au "fight" et déborder sur du nimp...

Perso mon cher Coeos.pro je préfère en arrêter là quand je vois ta réponse faite à PrestaEdit... Mais je serais super curieux de décortiquer l'un de tes modules car ta prétention me paraît bien haute :)

Link to comment
Share on other sites

Bon, j'aime pas jouer aux citations de citations. Je te fais donc une rapide réponse et après, basta. L'idée n'est pas que ce sujet soit ton terrain de jeu. Au pire, tu passes en MP ou via ma boite mail, pas de soucis.

 

Concernant le module d'achats groupés, en effet je le reprends pour en proposer une version payante. Du moins, je reprends le principe. Ce module est proposé pour les versions 1.3 et 1.4 et est en désuétude. Il n'est absolument pas fonctionnel sur une 1.5 et donc encore moins sur une 1.6, en effet. Mon travail consiste à proposer une solution sur base de celle existante, niveau fonctionnalités, et ce améliorée. Grandement. Ceci dit, je ne vois pas ce qu'il vient faire dans ce sujet.

 

Je ne l'ai pas proposé, en effet. Mais, où ai-je mentionné l'avoir fait ? Si tu veux, je refais ma phrase: "Le fait que vous proposiez des overrides (et ce gratuitement), [...]". Mais, en fait, je crois que tout le monde avait compris, tu sais.

 

Je ne répondrais rien au sujet du déterrage ou du module payant. Ce n'est ni à toi ni à moi de le faire. Et ce serait idiot de ma part de réagir à cela.

 

Pour informations, le code du module est repris dans plusieurs hooks et comporte principalement du JavaScript. Je confirme, il y a également un appel à la méthode Send() de la classe Mail. Mais, jusque là, ça me semble tout à fait cohérent.

Donc, il ne s'agit nullement d'un simple copier/coller. Vraiment. Mais je ne t'encourage pas à acheter le module pour le vérifier par toi-même. Je sais que tu ne le feras pas. ;-)

 

Au plaisir donc de lire tes interventions d'entraides communautaires, plutôt que ces accusations sans queues ni têtes. ;-)

  • Like 1
Link to comment
Share on other sites

Bonsoir messieurs.

Je reçois beaucoup de mail en très peu de temps ^^.

Personnellement je ne vois pas l'intérêt d'une telle discussion. Une personne pose un problème, il y a plusieurs façons de le résoudre.

 

Le business model de Prestashop réside dans la vente de module, principalement. Je ne vois donc pas en quoi faire de la promotion pour un module (qui par ailleurs ne coûte pas bien cher) serait interdit ici.

 

Nous donnons une solution pour des personnes voulant se mettre un peu dans le code (ce qui peut-être gênant si ils ne s'y connaissent pas et que plus tard ils doivent modifier leur override ou mettre à jour etc), mais d'autres préféreront la facilité d'une simple installation en BO.

 

Je pense qu'avoir eu des réponses différentes est plutôt bon pour la communauté et pas l'inverse :).

 

Bref tout ça pour dire, stop flood ma boite mail ><.

  • Like 2
Link to comment
Share on other sites

  • 2 weeks later...
  • 1 month later...

Bonjour,

 

j'ai suivi la méthode de ATCHA en collant son code dans : override/controllers/admin

 

dans le fichier : AdminCustomersController.php (il n'y a dedans que le code d'Atcha posté le 14 Nov 2013 à 03:16 PM).

 

 

La seule modif que j'ai faite, c'est d'avoir remplacé "account" par "accountBO" car je veux utiliser un template mail spécifique dans le cas où c'est un de mes commerciaux qui créent le compte client ds le BO.

 

Donc dans Mail > fr > j'ai créé accountBO.html + accountBO.txt

 

Et cela ne marche pas.

 

Je viens de créer un compte client client dans mon BO et je re reçois aucun mail.

 

Qu'est-ce que j'ai oublié de faire pour que cela marche ? 

 

 

Merci d'avance pour votre aide & réponse, je ne pense pas être loin du but mais ...

 

Pauline.

 

 

 

Link to comment
Share on other sites

  • 1 month later...

Serait-il possible de passer ce post en résolu afin que les personnes intéressées par les différentes solutions puissent les trouver plus facilement ?
Merci d'avance à toi Djael ou à un admin du forum :).

Link to comment
Share on other sites

  • 4 months later...

regarde si tu as un fichier AdminCustomersController.php dans le dossier override/controllers/admin/

Tu n'as pas ce fichier :
créé un fichier avec notepad (bloc note de windows) ou notepad++ et copie colle le code que j'ai mis ici : http://www.prestashop.com/forums/topic/189158-envoi-de-mot-de-passe-par-mail-lors-de-la-creation-de-client/?do=findComment&comment=1456812

Tu as un fichier AdminCustomersController.php :
ouvre le et vérifie qu'il n'y a pas de fonction processAdd.

Pas de fonction processAdd : copie colle le code dans le fichier, dans la classe AdminCustomersController
Tu as un fichier AdminCustomersController.php et il contient la fonction processAdd, alors il faut modifier cette fonction pour y rajouter à la fin de la fonction :

if($customer AND empty($this->errors))			
			Mail::Send(
				Context::getContext()->employee->id_lang,
				'account',
				Mail::l('Welcome!'),
				array(
					'{firstname}' => $customer->firstname,
					'{lastname}' => $customer->lastname,
					'{email}' => $customer->email,
					'{passwd}' => Tools::getValue('passwd')),
				$customer->email,
				$customer->firstname.' '.$customer->lastname
				);
		return $customer;

si jamais il y a un return $customer; juste à la fin alors il faut le supprimer.

Link to comment
Share on other sites

Merci pour ta réponse rapide !!!

 

je n'avais pas le fichier AdminCustomersController.php, j'avais juste un fichier AdminOrdersController.

 

Alors j'ai créer un fichier AdminCustomersController.php, j'ai mit le code  :

 

<?php
class AdminCustomersController extends AdminCustomersControllerCore
{
    public function processAdd()
    {
        $customer = parent::processAdd();        
        
if($customer AND empty($this->errors))            
            
Mail::Send(
                Context::getContext()->employee->id_lang,
                'account',
                Mail::l('Welcome!'),
                array(
                    '{firstname}' => $customer->firstname,
                    '{lastname}' => $customer->lastname,
                    '{email}' => $customer->email,
                    '{passwd}' => Tools::getValue('passwd')),
                $customer->email,
                $customer->firstname.' '.$customer->lastname
                
);
        return $customer;
    }
}

 

je l'ai déposé dans override/controllers/admin/

 

A la création d'un compte client depuis le BO, le client ne reçoit toujours pas de mail ...

 

SNIFFFF

Edited by desbonsprix (see edit history)
Link to comment
Share on other sites

Bon je viens de réessayer et toujours rien, j'ai refait ETAPE par ETAPE la manip

 

création du fichier AdminCustomersController.php avec ton code > mettre dans override/controllers/admin/

 

et toujours rien !!!

 

Lorsque je créer un client, j'ai bien la notification de nouveau client en haut du BO mais aucuns mail est envoyé sur l'adresse mail du client ??

 

Doije faire une autre manip ? ou vérification ?

 

Greg

Link to comment
Share on other sites

salut coeos.pro
 
Voici un code que j'ai trouvé et que j'ai mis en dur dans le fichier AdminCustomersControlle.php  et ça fonctionne à merveille !!
 

	public function processAdd()
	{
		if (Tools::getValue('submitFormAjax'))
			$this->redirect_after = false;
		// Check that the new email is not already in use
		$customer_email = strval(Tools::getValue('email'));
		$customer = new Customer();
		if (Validate::isEmail($customer_email))
			$customer->getByEmail($customer_email);
		if ($customer->id)
		{
			$this->errors[] = Tools::displayError('An account already exists for this email address:').' '.$customer_email;
			$this->display = 'edit';
			return $customer;
		}
		elseif ($customer = parent::processAdd())
		{
			$this->context->smarty->assign('new_customer', $customer);
			Mail::Send(
			$this->context->language->id,
			'account',
			Mail::l('Welcome!'),
			array(
				'{firstname}' => $customer->firstname,
				'{lastname}' => $customer->lastname,
				'{email}' => $customer->email,
				'{passwd}' => Tools::getValue('passwd')),
			$customer->email,
			$customer->firstname.' '.$customer->lastname
		);
			return $customer;
		}
		return false;
	}

source :
http://www.prestashop.com/forums/topic/174072-recherche-envoie-de-mail-a-creation-nouveau-compte-client/
 
J'ai même créer un mail account2 pour différencier le mail d'origine qui n'est pas adapté ...
 
Merci pour ce coup de pouce car tu m'as mis sur la voie !!
 
Greg

Edited by desbonsprix (see edit history)
Link to comment
Share on other sites

hello a tous,

 

je suis sur une version 1.6.0.9

 

Je viens de reprendre le code "court" de la première page, fourni par coeos.pro

j ai copié le controleur dans l'override puis remplacé le code présent par celui fourni

 

et ...Cela fonctionne !!!!!!!

 

en revanche ca ne fonctionne pas lors de la modification du mdp dans l'admin, seulement sur une création de compte.

 

Merci beaucoup pour ce bout de code bien utile.

Edited by nico5969 (see edit history)
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...