Formulaire de login en plusieurs pas

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

J'aimerai savoir si quelqu'un pourrai m'aiguiller dans l'altération du formulaire de login de Drupal.
J'aimerai lors de la phase de login, pour un utilisateur existant, lui proposer de rentrer son adresse e-mail avant de l'identifier, si jamais celui-ci ne l'a pas déjà fait.

Merci d'avance.

Wayode.

Forum : 

en espérant ne pas dire de bétise

il y a cette fonction qui te permet de rediriger ta page de login

<?php
function user_login_destination() {
  $destination = drupal_get_destination();
  if ($destination['destination'] == 'user/login') {
    $destination['destination'] = 'user';
  }
  return $destination;
}

toi tu doit rediriger vers la page contenant ton formulaire pour pour prélever l'adresse email

ensuite tu as une pile de fonction lié à l'authentification, ca pourrait être une piste vers ce que tu désires

tu modifies / surcharge la fonction de validation de l'authentification en lui rajoutant une variables qui est à TRUE si le mail est correct et à FALSE sinon

un truc dans cette fonction la:

function user_login_authenticate_validate($form, &$form_state) {
  $password = trim($form_state['values']['pass']);
  if (!empty($form_state['values']['name']) && !empty($password)) {
    // Do not allow any login from the current user's IP if the limit has been
    // reached. Default is 50 failed attempts allowed in one hour. This is
    // independent of the per-user limit to catch attempts from one IP to log
    // in to many different user accounts.  We have a reasonably high limit
    // since there may be only one apparent IP for all users at an institution.
    if (!flood_is_allowed('failed_login_attempt_ip', variable_get('user_failed_login_ip_limit', 50), variable_get('user_failed_login_ip_window', 3600))) {
      $form_state['flood_control_triggered'] = 'ip';
      return;
    }
    $account = db_query("SELECT * FROM {users} WHERE name = :name AND status = 1", array(':name' => $form_state['values']['name']))->fetchObject();
    if ($account) {
      if (variable_get('user_failed_login_identifier_uid_only', FALSE)) {
        // Register flood events based on the uid only, so they apply for any
        // IP address. This is the most secure option.
        $identifier = $account->uid;
      }
      else {
        // The default identifier is a combination of uid and IP address. This
        // is less secure but more resistant to denial-of-service attacks that
        // could lock out all users with public user names.
        $identifier = $account->uid . '-' . ip_address();
      }
      $form_state['flood_control_user_identifier'] = $identifier;

      // Don't allow login if the limit for this user has been reached.
      // Default is to allow 5 failed attempts every 6 hours.
      if (!flood_is_allowed('failed_login_attempt_user', variable_get('user_failed_login_user_limit', 5), variable_get('user_failed_login_user_window', 21600), $identifier)) {
        $form_state['flood_control_triggered'] = 'user';
        return;
      }
    }
    // We are not limited by flood control, so try to authenticate.
    // Set $form_state['uid'] as a flag for user_login_final_validate().
    $form_state['uid'] = user_authenticate($form_state['values']['name'], $password);
  }
}
?>

cherches sur api.drupal.org le terme login

http://api.drupal.org/api/search/7/login

sinon comme article qui pourrais (je l'espère) t'intérésser:
http://drupal.org/node/258739

et comme module qui pourrais faire ce que tu demandes (c'est con j'aurais du mettre ca avant :)
http://drupal.org/project/logintoboggan

bonne chance :)