Question

Je veux une autorisation qui empêche les gens de se connecter. (Ainsi, tous les utilisateurs du rôle X pourraient être temporairement bloqués, tout en gardant leurs pages de profil.)

Extrait du processus de connexion de Pro Drupal Development 2ème édition:

  1. POST de formulaire de connexion
  2. L'utilisateur est bloqué?
  3. L'utilisateur est refusée par le contrôle d'accès?

Je veux arrêter les utilisateurs à l'étape trois du processus. J'ai un module:

/**
 * Implementation of hook_perm().
 */
function odp_perm() {
  return array('log in');
}

/**
 * Implementation of hook_user
 * lock out without the 'log in' permission
 */
function odp_user($op, &$edit, &$account, $category = NULL) {
    if ($op == 'login' && ! user_access('log in')) {
      drupal_set_message("You do not have access to log in.", "error");
      drupal_goto('logout'); //doesn't work
      drupal_goto('content/party-tonight'); //also doesn't work
    }
}

Peut-être que je utilise drupal_goto mal.

Était-ce utile?

La solution

Je n'ai pas une instance Drupal pour tester cela sur ATM, mais je pense que vous voulez ceci:

/**
 * Implementation of hook_user
 * lock out without the 'log in' permission
 */
function odp_user($op, &$edit, &$account, $category = NULL) {
    if ($op == 'login' && ! user_access('log in')) {
        global $user;
        $user = drupal_anonymous_user();
        drupal_set_message("You don't have permission to log in");

    }
}

qui supprime leurs informations utilisateur et le remplace par l'utilisateur anonyme à la place.

Autres conseils

Je crois que ce accomplit ce que vous essayez de faire.

/**
 * Implementation of hook_user
 * lock out without the 'log in' permission
 */
function odp_user($op, &$edit, &$account, $category = NULL) {
    if ($op == 'login' && ! user_access('log in')) {
        drupal_set_message("You don't have permission to log in");

        //prevent login
        header("Location: http://www.example.com/?q=logout");
        // header("Location: http://www.example.com/logout"); if using clean URLs
    }
}

Déconnecte l'utilisateur et affiche un message. Si je me souviens bien, hook_user avec des feux de connexion op $ après que l'utilisateur se connecte, alors ce serait immédiatement les connecter ressortis -. Essentiellement faire en sorte qu'ils ne peuvent pas se connecter

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top