web-dev-qa-db-fra.com

Ajouter plusieurs utilisateurs dans Joomla

Comment ajouter plusieurs utilisateurs dans Joomla 3 sans utiliser d’extension?

Merci! :)

3
Justin C

Je vois dans les balises de votre question que vous utilisez mysql et phpmyadmin, alors je suppose que vous recherchez en quelque sorte un INSERT des enregistrements d'utilisateurs directement dans la base de données Joomla.

Cependant, veuillez noter que l'approche exacte devrait dépendre de l'endroit où vous souhaitez importer ces utilisateurs et des données utilisateur réelles que vous avez déjà et que vous souhaitez importer.

De plus, si ces utilisateurs existent dans un autre site Joomla de versions précédentes, cela pourrait être possible soit par migration de la base de données, soit en utilisant une extension telle que SP Tranfer , qui serait la méthode la plus simple et la plus facile pour conserver les identifiants et autres données utilisateur avec le reste du site. Dans ce cas, vous ne devriez pas avoir à vous soucier d'autres types d'importation directe de base de données.

Importation DB simple d'utilisateurs

Tableau des utilisateurs

Mais disons que vous avez une simple liste d’utilisateurs avec les noms et les courriels que vous souhaitez importer, vous devrez insérer des enregistrements dans des tables à deux bases de données pour Joomla 3, le #__users et le #__user_usergroup_map _ .

Pour le #__users Les champs essentiels sont: name, username, email, password, block

Donc, vous devriez vous retrouver avec un [~ # ~] insérer [~ # ~] Requête comme:

INSERT INTO `#__users` (`name`, `username`, `email`, `password`, `block`)
VALUES
    ('User1 Name', 'username1', '[email protected]', '$2y$10$Zy4d0JrrUq7Ed6pAzMFtQ.IZf5NtAsMyhDS7AwXlAZqMBgogqCev6', 0),
    ('User2 Name', 'username2', '[email protected]', '$2y$10$Zy4d0JrrUq7Ed6pAzMFtQ.IZf5NtAsMyhDS7AwXlAZqMBgogqCev6', 0),
    ('User3 Name', 'username3', '[email protected]', '$2y$10$Zy4d0JrrUq7Ed6pAzMFtQ.IZf5NtAsMyhDS7AwXlAZqMBgogqCev6', 0);

etc...

Mots de passe

En ce qui concerne le champ du mot de passe, vous pouvez utiliser un mot de passe par défaut pour tous les utilisateurs, puis demander à chaque utilisateur de réinitialiser son mot de passe pour pouvoir se connecter.

Par exemple, dans la requête ci-dessus, la valeur du champ de mot de passe $2y$10$Zy4d0JrrUq7Ed6pAzMFtQ.IZf5NtAsMyhDS7AwXlAZqMBgogqCev6 utilisé est pour 'test123 ', pour tous les 3 utilisateurs.

Si vous avez accès aux vrais mots de passe de chaque utilisateur et souhaitez les utiliser, vous devrez les générer. Vous trouverez plus d'informations sur le cryptage du mot de passe utilisateur J3 ici: https://stackoverflow.com/questions/21304038/joomla-3-2-1-password-encryption .

ID utilisateur

Une autre note pour le #__users _ table est le champ id (qui sera auto-incrémenté). Si vous souhaitez conserver des utilisateurs avec des identifiants déjà attribués, vous devez également les inclure dans votre requête Insertion, sinon chaque utilisateur obtiendra automatiquement son identifiant.

Champ de bloc

Enfin, la valeur de blocage définie sur 0 indiquera à Joomla que ces utilisateurs ne sont ni bloqués ni autorisés à utiliser leurs comptes.

Table User_Usergroups

Maintenant, pour terminer l'importation des utilisateurs, vous devrez également affecter tous les utilisateurs à un groupe d'utilisateurs. Ceci est fait en combinant l'identifiant de l'utilisateur avec un groupe d'utilisateurs. Généralement, la majorité des utilisateurs accède au groupe d'utilisateurs enregistré (avec le groupe d'utilisateurs par défaut id = 2).

Donc, vous devrez exécuter une requête INSERT qui fera simplement quelque chose comme:

INSERT INTO `#__user_usergroup_map` (`user_id`, `group_id`)
VALUES
    (20, 2),
    (21, 2),
    (22, 2);

Pour le user_id _ , vous devez utiliser les identifiants attribués à vos utilisateurs depuis la précédente insertion.

J'espère que cela aidera à vous donner une base pour commencer et à vous adapter en fonction de vos besoins spécifiques.

MISE À JOUR:

En réalité, le champ Bloquer n’est pas obligatoire, car la valeur par défaut est 0. Cependant, je vais laisser les réponses ci-dessus telles quelles.

8
FFrewin

J'ai fait un appel ajax et ensuite juste passé les variables à ce script.

define('_JEXEC', 1);
define('JPATH_BASE', __DIR__);
define('DS', DIRECTORY_SEPARATOR);

/* Required Files */
require_once(JPATH_BASE . DS . 'includes' . DS . 'defines.php');
require_once(JPATH_BASE . DS . 'includes' . DS . 'framework.php');
$app = JFactory::getApplication('site');
$app->initialise();

require_once(JPATH_BASE . DS . 'components' . DS . 'com_users' . DS . 'models' . DS . 'registration.php');

$model = new UsersModelRegistration();

jimport('joomla.mail.helper');
jimport('joomla.user.helper');
$language = JFactory::getLanguage();
$language->load('com_users', JPATH_SITE);

$jinput = JFactory::getApplication()->input;

$type       = 0;
$name       = $jinput->get('name', '', 'string');
$username   = $jinput->get('username', '', 'string');
$email      = $jinput->get('email', '', 'email');
$password   = $jinput->get('password', '', 'string');
$alias      = strtr($name, array(' ' => '-'));
$sendEmail  = 1;
$activation = 0;

$data = array(
    'username'   => $username,
    'name'       => $name,
    'email1'     => $email,
    'password1'  => $password, // First password field
    'password2'  => $password, // Confirm password field
    'sendEmail'  => $sendEmail,
    'activation' => $activation,
    'block'      => "0", 
    'groups'     => array("2", "10")
);

$response = $model->register($data);

//print_r($data); //tested
$model->register($data);

Placez ce script dans votre répertoire racine. J'ai essayé le script et ça marche bien.

Faites-moi savoir si vous avez des problèmes.

1
Joomler