Submitted by Maxime69 on
Bonjour,
Je cherche à cacher le champs Nom d'utilisateur puis faire en sorte qu'à l'inscription lorsque l'utilisateur appui sur valider que le nom d'utilisateur devienne la concaténation de 2 champs (nom+prénom).
J'utiliserai ensuite LoginTobogan pour une identification par email.
Peut-être existe-t-il un module ?
Merci d'avance pour votre réponse.
Il existe le module realnames
Permalien Soumis par khtuluu le 19 Juillet, 2010 - 09:42
Il existe le module realnames qui ressemble a peut près a ce que tu veux faire, mais je pense qu'il ne correspond pas complètement a tes besoins. Il te reste l'option de faire toi même un module pour utiliser le hook_form_alter donner une valeur par défaut a ton champ "name" le modifier en type "hidden" retirer la propriété "required" et traiter toi même sa valeur une fois que ton formulaire de création de compte serait soumis
Bonjour et merci pour ta
Permalien Soumis par Maxime69 le 20 Juillet, 2010 - 09:02
Bonjour et merci pour ta réponse.
En effet, le module realname ne fait pas exactement ce que je veux mais j'en ai trouvé un autre qui correspond très bien pour ceux qui comme moi sauront coder en php.
http://drupal.org/project/email_registration
Il me reste encore à gérer le cas de doublon de username et de regarder l'identification car à priori ça marche avec email + password et username + password et je veux que ça fonctionne simplement avec email + password
Mes modifications du code de la page
email_registration.module
<?php
// $Id: email_registration.module,v 1.5.2.13 2010/02/25 21:25:07 chrisherberte Exp $
/
* @file
* For registration process without a username
*
*/
/
* Implementation of hook_user().
*
*/
function email_registration_user($op, &$edit, &$account, $category = NULL) {
switch ($op) {
case 'insert':
// Other modules may implement hook_email_registration_name($edit, $account)
// to generate a username (return a string to be used as the username, NULL
// to have email_registration generate it)
$names = module_invoke_all('email_registration_name', $edit, $account);
// Remove any empty entries
$names = array_filter($names);
$field_nickname = $_POST["field_nickname"][0]["value"];
$namenew = ucwords($field_nickname);
$field_family_name = $_POST["field_family_name"][0]["value"];
$namenew .= ' ' . strtoupper($field_family_name);
if (empty($names)) {
// Default implementation of name generation
#$namenew = preg_replace('/@.*$/', '', $edit['mail']);
// Remove unwanted characters
#$namenew = preg_replace('/[^a-zA-Z0-9.-]/', '', $namenew);
// if username generated from email record already exists, append underscore and number eg:(chris_123)
#if (db_result(db_query("SELECT count(*) FROM {users} WHERE uid <> %d AND LOWER(name) = LOWER('%s')", $account->uid, $namenew)) > 0) {
// find the next number available to append to the name
# $sql = "SELECT SUBSTRING_INDEX(name,'_',-1) FROM {users} WHERE name REGEXP '%s' ORDER BY CAST(SUBSTRING_INDEX(name,'_',-1) AS UNSIGNED) DESC LIMIT 1";
# $nameidx = db_result(db_query($sql, '^'. $namenew .'_[0-9]+$'));
# $namenew .= '_'. ($nameidx + 1);
#}
}
else {
// One would expect a single implementation of the hook, but if there
// are multiples out there use the last one
#$namenew = array_pop($names);
}
// replace with generated username
if (db_query("UPDATE {users} SET name = '%s' WHERE uid = '%s'", $namenew, $account->uid)) {
$edit['name'] = $namenew; // update in the user array for access by other modules
}
// if email verification is off and a new user is the one creating account, log the new user in with correct name
global $user;
if (!variable_get('user_email_verification', 1) && $user->uid == 0) {
$user = $account;
$user->name = $namenew;
}
$account->name = $namenew;
break;
}
return;
}
/
* Implementation of hook_form_alter().
*
*/
function email_registration_form_alter(&$form, $form_state, $form_id) {
switch ($form_id) {
case 'user_register':
if (isset($form['account']) && is_array($form['account'])) {
$form['account']['name']['#type'] = 'hidden';
$form['account']['name']['#value'] = user_password();
$form['account']['mail']['#title'] = t('E-mail');
}
else {
$form['name']['#type'] = 'hidden';
$form['name']['#value'] = user_password();
$form['mail']['#title'] = t('E-mail');
}
$form['#submit'][] = 'custom_email_registration_name_submit';
break;
case 'user_pass':
$form['name']['#title'] = t('E-mail');
$form['name']['#description'] = t('Enter your e-mail address. You\'ll be sent a new password immediately.');
break;
case 'user_login':
$form['name']['#title'] = t('E-mail');
$form['name']['#description'] = t('Enter your e-mail address.');
$form['pass']['#description'] = t('Enter the password that accompanies your e-mail.');
$form['name']['#element_validate'][] = 'email_registration_user_login_validate';
break;
case 'user_login_block':
$form['name']['#title'] = t('E-mail');
$form['name']['#element_validate'][] = 'email_registration_user_login_validate';
break;
}
}
/
* Custom submit handler to fix redirect for immediate logins
* #648450
*
*/
function custom_email_registration_name_submit($form, &$form_state) {
if (!isset($form_state['user'])) {
return;
}
$admin = user_access('administer users');
$account = $form_state['user'];
if (!variable_get('user_email_verification', TRUE) && $account->status && !$admin) {
// No e-mail verification is required, create new user account, and login
// user immediately.
$auth = array(
'pass' => $form_state['values']['pass'],
'name' => $account->name,
);
if (user_authenticate($auth)) {
// Authenticated, add a message and go to the users account
// Since the standard workflow doesn't work, no other messages should appear.
drupal_set_message(t('Registration successful. You are now logged in.'));
$form_state['redirect'] = 'user/'. $account->uid;
}
}
}
/**
* Custom validation function for user login form.
* Allows users to authenticate by email only, which is our preferred method.
*
*/
function email_registration_user_login_validate($form, &$form_state) {
if (isset($form_state['values']['name'])) {
if ($name = db_result(db_query("SELECT name FROM {users} WHERE LOWER(mail) = LOWER('%s')", $form_state['values']['name']))) {
$form_state['values']['name'] = $name;
}
}
}
Bonjour, Je cherche à faire
Permalien Soumis par webapart le 7 Février, 2011 - 11:52
Bonjour,
Je cherche à faire exactement la même chose : cacher le champ Nom d'utilisateur et le remplir par défaut avec la valeur prenom.nom.
As-tu réussit à adapter le module Email registration ?
Est-il possible d'avoir la modification complète ?
Merci.
Bonjour,
Permalien Soumis par lemoustic le 30 Juin, 2017 - 11:49
Bonjour,
Avez-vous depuis ce message évolué dans votre réécriture de ce module ?
Je cherche à faire la même chose que vous.
Merci