Bonjour,
Il n'existe pas encore de méthode pour créer un formulaire d'inscription. Le formulaire d'authentification lui peut simplement être créé mais pas l'inscription. ça viendra, c'est dans la todo list mais en attendant faut se le faire à la main en PHP.
Voila un code qui permet de faire ce type de formulaire (c'est celui employé sur cette page :
http://www.automne.ws/web/fr/458-identification.php). Tu peux le reprendre et l'insérer dans une de tes rangée :
Code :
<row>
<?php
$action = io::request('action', array('create', 'check'));
$message = $error = $lastname = $firstname = $email = $login = $pass1 = $pass2 = $spam = '';
if ($action == 'create') {
$spam = io::request('name');
$login = io::request('login');
$pass1 = io::request('pass1', 'sensitiveIO::isValidPassword');
$pass2 = io::request('pass2', 'sensitiveIO::isValidPassword');
$lastname = io::request('lastname');
$firstname= io::request('firstname');
$email = io::request('email', 'io::isValidEmail');
if ($spam) {
$error .= 'Erreur : Le champ name ne doit pas être rempli (antispam) ...<br />';
}
if (!$login) {
$error .= 'Erreur : L\'identifiant est obligatoire ...<br />';
} elseif (CMS_profile_usersCatalog::loginExists($login, $cms_user)) {
$error .= 'Erreur : Cet identifiant existe déjà ... Veuillez en choisir un autre.<br />';
}
if (!$pass1 || !$pass2) {
$error .= 'Erreur : Les champs "Mot de passe" sont manquant ou incorrects ...<br />';
} elseif ($pass1 != $pass2) {
$error .= 'Erreur : Les champs "Mot de passe" sont différents ...<br />';
}
if (!$lastname) {
$error .= 'Erreur : Le nom est obligatoire ...<br />';
}
if (!$email) {
$error .= 'Erreur : L\'email est manquant ou invalide ...<br />';
}
if (!$error) {
$user = new CMS_profile_user();
$user->setLogin($login);
$user->setPassword($pass1);
$user->setLastName($lastname);
$user->setFirstName($firstname);
$user->setLanguage(new CMS_language('fr'));
$contactData = new CMS_contactData();
$contactData->setEmail($email);
$user->setContactData($contactData);
if ($user->writeToPersistence()) {
// groupe des utilisateurs authentifiés
$groupObject = CMS_profile_usersGroupsCatalog::getByID(AUTHENTICATED_USERS_GROUP_ID);
$groupObject->addToUserAndWriteToPersistence($user);
// groupe de tous les utilisateurs
$groupObject = CMS_profile_usersGroupsCatalog::getByID(ALL_USERS_GROUP_ID);
$groupObject->addToUserAndWriteToPersistence($user);
//inactive user
$user->setActive(false);
$user->writeToPersistence();
//Création de la clé d'identification
$key = base64_encode(io::generateKey(20).'_'.$user->getUserId() ^ ENCODING_KEY);
//Création de l'email de confirmation
$template = (is_file(PATH_MAIL_TEMPLATES_FS)) ? PATH_MAIL_TEMPLATES_FS : '';
$mail = new CMS_email();
$mail->setEmailFrom(APPLICATION_POSTMASTER_EMAIL);
$mail->setFromName(APPLICATION_LABEL);
$mail->setSubject('Validation de votre compte utilisateur', true);
$mail->setEmailTo($email);
$pageURL = CMS_tree::getPageValue('{{pageID}}', 'url');
$body =
'Votre compte utilisateur sur le site <a href="http://www.automne.ws">www.automne.ws</a> a été créé avec succès.<br /><br />'.
'Pour finaliser votre inscription, merci de cliquer sur le lien ci dessous :<br /><br />'.
'<a href="'.$pageURL.'?action=check&key='.$key.'">» Activez votre compte</a><br /><br />'.
'Toute l\'équipe vous souhaite la Bienvenue dans la communauté Automne !<br /><br />';
$mail->setEmailHTML($body);
$mail->setFooter('Cet email est généré automatiquement par Automne concernant le site http://www.automne.ws.'."\n".'Ne répondez pas directement à ce message.');
$mail->setTemplate($template);
$mail->sendEmail();
$message = 'Votre compte a été créé. Un email vous a été envoyé pour valider votre inscription.';
} else {
$error .= 'Erreur lors de la création du compte, veuillez rééssayer ...<br />';
}
}
} elseif ($action == 'check') {
$key = io::request('key');
//Lecture de l'ID utilisateur à partir de la clé
$key = base64_decode($key) ^ ENCODING_KEY;
if( strpos($key,"_") !== false ) {
@list( $generatedKey, $userId ) = explode( "_", $key );
}
if (io::isPositiveInteger($userId)) {
$user = CMS_profile_usersCatalog::getByID($userId);
if (!is_object($user) || $user->hasError() || $user->isActive()) {
$error .= 'Erreur : Ce lien d\'activation est invalide ...<br />';
} else {
//Active user
$user->setActive(true);
$user->writeToPersistence();
$message = 'Votre compte a été activé. Vous pouvez maintenant vous identifier à l\'aide du formulaire ci-dessus.';
}
} else {
$error .= 'Erreur : Ce lien d\'activation est invalide ...<br />';
}
}
//Create user form
$content = '';
if ($message) {
$content .= '<h2>Créer votre compte :</h2><div class="cms_forms_msg">'.$message.'</div>';
} elseif ($action != 'check' && $cms_user->getUserId() == ANONYMOUS_PROFILEUSER_ID) {
$content .= '<h2>Créer votre compte :</h2>
<p>Vous ne possédez pas encore de compte sur Automne.ws ? Créez en un facilement à l\'aide du formulaire suivant.</p>';
if ($error) {
$content .= '<div class="cms_forms_error_msg">'.$error.'</div>';
}
$content .= '
<div class="cms_forms">
<a name="formAnchorCreate"></a><p> </p>
<form action="#formAnchorCreate" method="post" id="cms_forms_create">
<input type="hidden" name="action" value="create" />
<table width="100%" cellspacing="1" cellpadding="1" border="0" align="center">
<tbody> <tr>
<td style="text-align: right;"><label for="lastname">* Nom (ou Pseudo)</label></td>
<td><input type="text" name="lastname" value="'.io::htmlspecialchars($lastname).'" /></td>
</tr>
<tr>
<td style="text-align: right;"><label for="firstname">Prénom</label></td>
<td><input type="text" name="firstname" value="'.io::htmlspecialchars($firstname).'" /></td>
</tr>
<tr>
<td style="text-align: right;"><label for="email">* Email</label></td>
<td><input type="text" name="email" value="'.io::htmlspecialchars($email).'" /><br />
<small>Sera utilisé pour valider votre compte.</small>
</td>
</tr>
<tr>
<td style="text-align: right;"><label for="login">* Identifiant</label></td>
<td><input type="text" name="login" value="'.io::htmlspecialchars($login).'" /></td>
</tr>
<tr>
<td style="text-align: right;"><label for="pass1">* Mot de passe</label></td>
<td><input type="password" name="pass1" value="'.io::htmlspecialchars($pass1).'" /></td>
</tr>
<tr>
<td style="text-align: right;"><label for="pass2">* Confirmez le mot de passe</label></td>
<td><input type="password" name="pass2" value="'.io::htmlspecialchars($pass2).'" /></td>
</tr>
<tr>
<td style="text-align: right;"> </td>
<td><input type="submit" value="Créer votre compte" name="submit" class="button" /></td>
</tr>
</tbody>
</table>
<span style="display:none;"><input type="text" name="name" value="'.io::htmlspecialchars($spam).'" /></span>
</form></div><p>
Conformément à la loi informatique et liberté du 06.01.78 (article 34), vous disposez d\'un droit d\'accès, de modification, de rectification et de suppression des données vous concernant.
</p>';
} elseif ($action == 'check' && $error) {
$content .= '<h2>Créer votre compte :</h2>';
if ($error) {
$content .= '<div class="cms_forms_error_msg">'.$error.'</div>';
}
}
echo $content;
?>
</row>
Tu trouvera l'explication de chaque méthode employée ci-dessus dans l'API :
http://www.automne.ws/api/En plus de ce code dans ta rangée, tu dois définir un certain nombre de constantes dans ton fichier config.php :
Code :
//key used to check user email (in profile creation)
define("ENCODING_KEY",'définir ici une clé très complexe');
//Identifiant du groupe des utilisateurs authentifiés
define('AUTHENTICATED_USERS_GROUP_ID', 8);
//Identifiant du groupe "Tout le monde"
define('ALL_USERS_GROUP_ID', 4);
Tu notera que ce code associe automatiquement les nouveaux utilisateurs à deux groupes : Un groupe "Tout le monde" (auquel appartient l'utilisateur anonyme) et un groupe "Utilisateurs authentifiés" qui permet de mettre des droits spécifiques pour ces utilisateurs. Dans ton cas, rien n'empêche d'ajouter des groupes au fur et à mesure en fonction de cases à cocher présentes dans le formulaire. Il te faut juste adapter un peu le code que je te donne ci-dessus, mais si tu as des connaissances de base en PHP tu t'en sortira et au besoin je peux te filer un coup de patte
Bonne découverte d'Automne !