[réglé] Validation ou approbation des inscriptions

Support et assistance pour l'utilisation de Joomla! 1.5.x : administration, gestion du contenu, des menus et des extensions natives... Et toutes les autres questions qui n'ont pas de place ailleurs

Moderators: Aidan38, sarki

Forum rules
Règles du forum
Locked
User avatar
Tiko
Joomla! Apprentice
Joomla! Apprentice
Posts: 21
Joined: Wed Apr 30, 2008 9:06 pm
Location: Burgundy
Contact:

[réglé] Validation ou approbation des inscriptions

Post by Tiko » Wed May 07, 2008 8:03 pm

Salut,

Je voudrais valider les inscriptions sur mon site afin de contrôler qui a accès ou non au contenu.
Actuellement, via le login form, un mail est envoyé avec un lien pour valider l'inscription. Seulement, je voudrais que ce sois moi qui valide l'inscription et pas le nouveau membre.

Avez-vous une idée comment je pourrais faire cela, svp ?

Remerciements,

Hatshepsout
Joomla! 1.5.0 stable
Last edited by Tiko on Sat May 10, 2008 8:44 pm, edited 1 time in total.

User avatar
mejean
Joomla! Hero
Joomla! Hero
Posts: 2714
Joined: Thu Aug 18, 2005 12:28 pm
Location: viewforum.php?f=19
Contact:

Re: Validation des inscriptions

Post by mejean » Fri May 09, 2008 8:22 am

Bonjour,

Regarde le composant (et son plugin) approbation : http://www.joomlagora.org/index.php/app ... gorie.html
Jérôme Bussière - simple utilisateur
www.cardabelle.net

User avatar
ouly
Joomla! Ace
Joomla! Ace
Posts: 1074
Joined: Sun Aug 21, 2005 9:18 pm
Contact:

Re: Validation des inscriptions

Post by ouly » Fri May 09, 2008 6:32 pm

Bonjour Tiko et mejean,
Juste pour information l'extension approbation n'est pas compatible J! 1.5.x

On m'a déjà demandé de la porter sur J! 1.5.x mais actuellement je n'ai pas suffisamment de temps :'(

Dans l'immédiat je propose de réappliquer un hack ressemblant à celui pour J! 1.0.x (voir ce sujet) en modifiant la classe JUserHelper :

Code: Select all

	/**
	 * Method to activate a user
	 *
	 * @param	string	$activation	Activation string
	 * @return 	boolean 			True on success
	 * @since	1.5
	 */
	function activateUser($activation)
	{
/*...*/
			$user->set('block', '0');
/*...*/
	}
de la sorte :

Code: Select all

	/**
	 * Method to activate a user
	 *
	 * @param	string	$activation	Activation string
	 * @return 	boolean 			True on success
	 * @since	1.5
	 */
	function activateUser($activation)
	{
/*...*/
			// On conserve le compte bloque
			//$user->set('block', '0');
/*...*/
	}
Et la classe UserController :

Code: Select all

	/**
	 * Save user registration and notify users and admins if required
	 * @return void
	 */
	function register_save()
	{
/*...*/

		// If user activation is turned on, we need to set the activation information
		$useractivation = $usersConfig->get( 'useractivation' );
		if ($useractivation == '1')
		{
			jimport('joomla.user.helper');
			$user->set('activation', md5( JUserHelper::genRandomPassword()) );
			$user->set('block', '1');
		}

/*...*/
	}
de la sorte :

Code: Select all

	/**
	 * Save user registration and notify users and admins if required
	 * @return void
	 */
	function register_save()
	{
/*...*/

		// If user activation is turned on, we need to set the activation information
		$useractivation = $usersConfig->get( 'useractivation' );
		if ($useractivation == '1')
		{
			jimport('joomla.user.helper');
			$user->set('activation', md5( JUserHelper::genRandomPassword()) );
		}
		// On bloque le compte dans tous les cas
		$user->set('block', '1');

/*...*/
	}
ouly

Note : pas testé :pop
Last edited by ouly on Fri May 09, 2008 6:33 pm, edited 2 times in total.
Reason: Ajout d'une note

User avatar
Tiko
Joomla! Apprentice
Joomla! Apprentice
Posts: 21
Joined: Wed Apr 30, 2008 9:06 pm
Location: Burgundy
Contact:

Re: Validation des inscriptions

Post by Tiko » Sat May 10, 2008 5:49 am

Ouly et Mejan,
J'ai trouvé ce que je cherchais et c'est très efficace. A quand une intégration directe de cette option dans le natif ? En tout cas, merci pur vos reponses.
Bon ben j'ai du modifier 2 fonctions dans le fichier afin de modérer les inscriptions.
Paramètre:
Configuration générale->Activation du compte du nouvel utilisateur->non

Fichier:
component/com_user/controller.php
commenter les 2 fonctions:
- function register_save()
- function _sendMailModeration(&$user, $password)
et les remplacer par celles-ci:

Code: Select all

function register_save()
	{
		global $mainframe;

		// Check for request forgeries
		JRequest::checkToken() or die( 'Invalid Token' );

		// Get required system objects
		$user 		= clone(JFactory::getUser());
		$pathway 	=& $mainframe->getPathway();
		$config		=& JFactory::getConfig();
		$authorize	=& JFactory::getACL();
		$document   =& JFactory::getDocument();

		// If user registration is not allowed, show 403 not authorized.
		$usersConfig = &JComponentHelper::getParams( 'com_users' );
		if ($usersConfig->get('allowUserRegistration') == '0') {
			JError::raiseError( 403, JText::_( 'Access Forbidden' ));
			return;
		}

		// Initialize new usertype setting
		$newUsertype = $usersConfig->get( 'new_usertype' );
		if (!$newUsertype) {
			$newUsertype = 'Registered';
		}

		// Bind the post array to the user object
		if (!$user->bind( JRequest::get('post'), 'usertype' )) {
			JError::raiseError( 500, $user->getError());
		}

		// Set some initial user values
		$user->set('id', 0);
		$user->set('usertype', '');
		$user->set('gid', $authorize->get_group_id( '', $newUsertype, 'ARO' ));

		// TODO: Should this be JDate?
		$user->set('registerDate', date('Y-m-d H:i:s'));

		// If user activation is turned on, we need to set the activation information
		$useractivation = $usersConfig->get( 'useractivation' );

		//michael: useractivation->Si oui, l'utilisateur recevra par email un lien sur lequel il devra cliquer pour activer son compte avant de pouvoir se connecter.
		if ($useractivation == '1')
		{
			jimport('joomla.user.helper');
			$user->set('activation', md5( JUserHelper::genRandomPassword()) );
			$user->set('block', '1');
		}
		//michael: ajout d'une modération d'inscription par l'admin du site:
		// - verouillage du nouveau compte
		// - l'admin reçoit un email de demande de validation du compte créé
		// - le nouveau membre reçoit un email de confirmation de demande d'inscription. Cet email ne contient pas le lien d'activation du compte
		else 
		{
			$user->set('block', '1');
			$password = JRequest::getString('password', '', 'post', JREQUEST_ALLOWRAW);
			$password = preg_replace('/[\x00-\x1F\x7F]/', '', $password); //Disallow control chars in the email			
			UserController::_sendMailModeration($user, $password);
		}

		// If there was an error with registration, set the message and display form
		if ( !$user->save() )
		{
			JError::raiseWarning('', JText::_( $user->getError()));
			$this->register();
			return false;
		}

//michael
/*
		// Send registration confirmation mail
		$password = JRequest::getString('password', '', 'post', JREQUEST_ALLOWRAW);
		$password = preg_replace('/[\x00-\x1F\x7F]/', '', $password); //Disallow control chars in the email
		UserController::_sendMail($user, $password);
*/
		// Everything went fine, set relevant message depending upon user activation state and display message
		if ( $useractivation == 1 ) 
		{
			$message  = JText::_( 'REG_COMPLETE_ACTIVATE' );
		} else {
			//$message = JText::_( 'REG_COMPLETE' );
			$message = JText::_( 'MSG_MODERATION' );
		}

		//TODO :: this needs to be replace by raiseMessage
		JError::raiseNotice('', $message);
		$this->register();
}

//michael: fonction de modération des inscriptions
	function _sendMailModeration(&$user, $password)
	{
		global $mainframe, $mes_moderation;

		$db		=& JFactory::getDBO();

		$name 		= $user->get('name');
		$email 		= $user->get('email');
		$username 	= $user->get('username');

		$usersConfig 	= &JComponentHelper::getParams( 'com_users' );
		$sitename 		= $mainframe->getCfg( 'sitename' );
		
		$useractivation = $usersConfig->get( 'useractivation' );

		$mailfrom 		= $mainframe->getCfg( 'mailfrom' );
		$fromname 		= $mainframe->getCfg( 'fromname' );
		$siteURL		= JURI::base();

		$subject 	= sprintf ( JText::_( 'Account details for' ), $name, $sitename);
		$subject 	= html_entity_decode($subject, ENT_QUOTES);

		if ( $useractivation == 1 )
		{
			$message = sprintf ( JText::_( 'SEND_MSG_ACTIVATE' ), $name, $sitename, $siteURL."index.php?option=com_user&task=activate&activation=".$user->get('activation'), $siteURL, $username, $password);
		} else 
		{
			$message = sprintf ( JText::_( 'SEND_MSG_MODERATION' ), $name, $sitename, $siteURL);
		}

		$message = html_entity_decode($message, ENT_QUOTES);

		//get all super administrator
		$query = 'SELECT name, email, sendEmail' .
				' FROM #__users' .
				' WHERE LOWER( usertype ) = "super administrator"';
		$db->setQuery( $query );
		$rows = $db->loadObjectList();

		// Send email to user
		if ( ! $mailfrom  || ! $fromname ) {
			$fromname = $rows[0]->name;
			$mailfrom = $rows[0]->email;
		}

		JUtility::sendMail($mailfrom, $fromname, $email, $subject, $message);

		// Send notification to all administrators
		$subject2 = sprintf ( JText::_( 'Account details for' ), $name, $sitename);
		$subject2 = html_entity_decode($subject2, ENT_QUOTES);

		// get superadministrators id
		foreach ( $rows as $row )
		{
			if ($row->sendEmail)
			{
				$message2 = sprintf ( JText::_( 'SEND_MSG_ADMIN' ), $row->name, $sitename, $name, $email, $username);
				$message2 = html_entity_decode($message2, ENT_QUOTES);
				JUtility::sendMail($mailfrom, $fromname, $row->email, $subject2, $message2);
			}
		}
	}
Ajouter dans le fichier:
language/fr-FR/fr-FR.com_user.ini

Code: Select all

SEND_MSG_MODERATION=Bonjour %s,\n\nMerci de votre inscription à %s.\n\nVotre inscription doit être validée par notre administrateur.\nVous serez prévenu par email lorsque votre compte sera activé et vous pourrez vous pourrez vous connecter à %s avec l'identifiant et le mot de passe que vous avez choisis lors de votre enregistrement.\n\nA bientôt.
MSG_MODERATION=Merci de votre inscription.<br>Votre inscription doit être validée par notre administrateur.<br>Vous serez prévenu par email lorsque votre compte sera activé.
J'espère être clair.

Michaël
Pour être vraiment parfait, il manquerait peut-être 2 choses :
- a quand l'envoi du mail a l'admin pour l'avertir d'une validation en instance ?
- a quand un envoi de mail automatique au membre lors de la validation de son enregistrement ?

Je pinaille ?

Encore merci,
Tiko

postb99
Joomla! Fledgling
Joomla! Fledgling
Posts: 3
Joined: Thu Sep 18, 2008 8:01 am

Re: [réglé] Validation des inscriptions

Post by postb99 » Thu Oct 16, 2008 1:57 pm

Bonjour Tiko et les autres,

Chouette proposition, mais on en est à la version 1.5.7 de Joomla et il y a l'air de ne rien y avoir de neuf en natif...

Avez-vous fait des modifications pour que l'admin soit prévenu de l'inscription etc ?

Merci.

Barbara

postb99
Joomla! Fledgling
Joomla! Fledgling
Posts: 3
Joined: Thu Sep 18, 2008 8:01 am

Re: [réglé] Validation des inscriptions

Post by postb99 » Mon Oct 20, 2008 8:43 am

Bonjour,

Comme j'utilise principalement le forum forum.joomla.fr mais que je suis tombée sur le même sujet sur ce forum-ci, voici le lien vers la discussion quasi-identique sur l'autre forum, avec la solution aux deux dernières demandes concernant la modération des inscriptions.

Je m'excuse platement auprès des modérateurs du cross-posting mais c'est pour ne pas tout répéter. C'est un peu bête qu'on ait deux forums, dans le fond ^^.

http://forum.joomla.fr/showpost.php?p=3 ... stcount=18

Bon hack et bonne journée,

Barbara

User avatar
mejean
Joomla! Hero
Joomla! Hero
Posts: 2714
Joined: Thu Aug 18, 2005 12:28 pm
Location: viewforum.php?f=19
Contact:

Re: [réglé] Validation des inscriptions

Post by mejean » Wed Oct 22, 2008 1:22 pm

Ouly,

Tout cela est-il toujours possible avec un plugin ?
Jérôme Bussière - simple utilisateur
www.cardabelle.net

kosse
Joomla! Apprentice
Joomla! Apprentice
Posts: 11
Joined: Fri May 02, 2008 5:16 pm

Re: [réglé] Validation des inscriptions

Post by kosse » Thu Nov 13, 2008 12:41 am

Moins élégant mais plus rapide (pas besoin de chipoter dans les fonctions) que les solutions précitées: simplement désactiver le lien de confirmation dans l'email envoyé à l'utilisateur. Faudra changer qqs lignes dans les fichiers de langues.

Dans le fichier language/fr-FR/fr/FR.com_user.ini repérez SEND_MSG_ACTIVATE (aux alentours de la ligne 118). Là, virez les %s du texte. L'utilisateur ne pourra pas se connecter car il n'aura pas activé son compte.
Ca donne un truc du style (remplacer XXXX par vos données):

Code: Select all

SEND_MSG_ACTIVATE=Bonjour.\n\n Merci de vous être inscrit chez XXXX.\n\n Nous activerons votre compte au plus tôt et vous informerons par email, vous pourrez vous connecter à l'espace membre en utilisant le nom d'utilisateur et le mot de passe que vous avez choisis.\n\nBien à vous, XXXX.
SEND_MSG_ADMIN=Bonjour %s. Un nouvel utilisateur s'est inscrit sur le site %s.\n Cet e-mail contient ses coordonnées : \n Nom : %s \n E-mail : %s \n Nom d'utilisateur : %s \n\n N'oubliez pas d'activer l'utilisateur dans le backend.
J'oubliais REG_COMPLETE_ACTIVATE aux alentours de la ligne 90

Code: Select all

REG_COMPLETE_ACTIVATE=Votre compte a été créé et une confirmation a été envoyée à l'adresse e-mail que vous avez saisie. Notez que vous devez <strong>attendre que votre compte soit confirmé</strong> avant de vous connecter.
Finalement dans le fichier fr-FR.ini, repérez E_NOLOGIN_BLOCKED (+/- ligne 175) et modifiez-le (si l'utilisateur tente de se connecter sans avoir été activé):

Code: Select all

E_NOLOGIN_BLOCKED=<strong>Connexion refusée!</strong> Votre compte a été bloqué ou alors il n'a pas encore été activé.
Voilà, pas top mais efficace et rapide (ça règle déjà l'envoi du mail a l'admin pour l'avertir d'une validation en instance). Faudra toujours envoyer un email signalant à l'utilisateur que son compte a été activé. En espérant que la version 1.5.8 nous intègre tout ça joliment...

User avatar
ouly
Joomla! Ace
Joomla! Ace
Posts: 1074
Joined: Sun Aug 21, 2005 9:18 pm
Contact:

Re: [réglé] Validation des inscriptions

Post by ouly » Sat Nov 15, 2008 10:30 am

mejean wrote:Ouly,

Tout cela est-il toujours possible avec un plugin ?
Peut-être il faudrait se plonger dans le code de la série 1.5.x pour déterminer si c'est effectivement possible...

chessman
Joomla! Apprentice
Joomla! Apprentice
Posts: 15
Joined: Wed Nov 30, 2005 5:25 pm

Re: [réglé] Validation des inscriptions

Post by chessman » Thu Apr 16, 2009 5:05 pm

Bonjour à tous,

je déterre ce post pour savoir si il y a eu du nouveau.

User avatar
mejean
Joomla! Hero
Joomla! Hero
Posts: 2714
Joined: Thu Aug 18, 2005 12:28 pm
Location: viewforum.php?f=19
Contact:

Re: [réglé] Validation ou approbation des inscriptions

Post by mejean » Tue May 19, 2009 12:40 pm

Et bien voilà, en effet, du nouveau : http://www.joomlaxi.com/downloads.html? ... einfo&id=8 ;)

Attention : cette extension ne figure par (encore ?) au JED !
Jérôme Bussière - simple utilisateur
www.cardabelle.net

gebus
Joomla! Apprentice
Joomla! Apprentice
Posts: 11
Joined: Thu Oct 13, 2011 8:18 am

Re: [réglé] Validation ou approbation des inscriptions

Post by gebus » Wed Aug 01, 2012 7:04 am

Bonjour, j'excave à nouveau le sujet : je n'ai pas réussi à trouver d'info qui datent de moins de... 3 ans. Joomla 2.5 intègre-t-il plusieurs politiques d'inscription ?

A mon sens, le lien d'activation est essentiel pour déterminer si le mail de l'utilisateur est correct ou non. Dans le cadre d'une activation contrôlée, l'idéal serait que le lien de l'utilisateur ne soit pas un lien d'activation mais un lien lançant un module qui enverrai un mail à l'administrateur ; c'est ce mail qui contiendrait le lien d'activation.
Ainsi l'administrateur n'aurait pas à se loguer à chaque fois sur l'espace admin pour valider les inscriptions.

User avatar
sebiseb
Joomla! Guru
Joomla! Guru
Posts: 706
Joined: Fri Aug 19, 2005 1:04 pm
Location: IdF - Centre
Contact:

Re: [réglé] Validation ou approbation des inscriptions

Post by sebiseb » Wed Aug 01, 2012 7:40 am

C'est désormais possible avec la version 2.5
Joomla 3.9.15 - template basé sur Protostar 1.0
outils d'administration : Akeeba Backup Core 7.0.2 - Admin Tools Core 5.5.0
extensions : JCE Editor Pro 2.8.9 - Creative Contact Form 4.6.2 - kunena « Oberon » 5.1.15

gebus
Joomla! Apprentice
Joomla! Apprentice
Posts: 11
Joined: Thu Oct 13, 2011 8:18 am

Re: [réglé] Validation ou approbation des inscriptions

Post by gebus » Wed Aug 01, 2012 8:02 am

Excellente nouvelle, merci ! :)

Comment faut-il procéder ? Je ne l'ai pas trouvé dans la configuration. S'agit-il d'un composant / module / plugin natif ?

User avatar
sebiseb
Joomla! Guru
Joomla! Guru
Posts: 706
Joined: Fri Aug 19, 2005 1:04 pm
Location: IdF - Centre
Contact:

Re: [réglé] Validation ou approbation des inscriptions

Post by sebiseb » Wed Aug 01, 2012 8:31 am

Dans l'administration ; Utilisateurs -> Gestion des utilisateurs -> icône : paramètres -> la boîte de dialogue s'ouvre sur composant ; les utilisateurs doivent pouvoir s'enregistrer eux-même, mais une approbation doit être faite par l'administrateur.
Joomla 3.9.15 - template basé sur Protostar 1.0
outils d'administration : Akeeba Backup Core 7.0.2 - Admin Tools Core 5.5.0
extensions : JCE Editor Pro 2.8.9 - Creative Contact Form 4.6.2 - kunena « Oberon » 5.1.15

gebus
Joomla! Apprentice
Joomla! Apprentice
Posts: 11
Joined: Thu Oct 13, 2011 8:18 am

Re: [réglé] Validation ou approbation des inscriptions

Post by gebus » Wed Aug 01, 2012 8:48 am

Impeccable, merci beaucoup Sebiseb !

Je vais pouvoir éviter d'installer Community Builder.

J'ai découvert hier qu'on pouvait créer, de façon native, des champs personnalisables lors de l'inscription. Pour ceux que ça intéresserait :

http://docs.joomla.org/Creating_a_profile_plugin
http://forum.joomla.org/viewtopic.php?t=582603


Locked

Return to “1.5 - Questions générales”