📜  在 magento 2 中创建管理员密码 - PHP (1)

📅  最后修改于: 2023-12-03 15:23:13.297000             🧑  作者: Mango

在 Magento 2 中创建管理员密码 - PHP

为 Magento 2 创建管理员密码是一项必须完成的任务。这篇文章将告诉您如何通过 PHP 代码来创建 Magento 2 的管理员密码。

步骤
  1. 创建一个新的 PHP 文件,例如 create_admin_password.php

  2. 在文件中添加以下代码来引入 Magento 2 的自动加载文件:

    require __DIR__ . '/app/bootstrap.php';
    $bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
    
  3. 接下来,为 Magento 2 使用的 ObjectManager 创建一个实例:

    $objectManager = $bootstrap->getObjectManager();
    
  4. 现在,我们可以使用 get 方法从 ObjectManager 中获取 Magento\User\Model\UserFactory 类的实例,以便创建管理员用户:

    $userFactory = $objectManager->get('\Magento\User\Model\UserFactory');
    $userModel = $userFactory->create();
    
  5. 使用以下代码设置管理员用户名和电子邮件地址:

    $userModel->setUserName('admin');
    $userModel->setEmail('admin@example.com');
    
  6. 为了设置管理员密码,使用以下代码将纯文本密码转换为哈希密码:

    $password = 'admin123'; // 请使用自己的密码
    $userModel->setPassword($password); 
    

    然后,使用以下代码将管理员密码哈希保存到数据库:

    $salt = md5(uniqid()); 
    $hash = md5($salt . $password) . ':' . $salt;
    $userModel->setPasswordHash($hash);
    
  7. 使用以下代码将管理员角色分配给用户:

    $roleFactory = $objectManager->get('\Magento\Authorization\Model\RoleFactory');
    $userRole = $roleFactory->create();
    $userRole->setName('Administrators')
        ->setPid(0)
        ->setRoleType(\Magento\Authorization\Model\Acl\Role\Group::ROLE_TYPE)
        ->setUserType(\Magento\User\Model\User::USER_TYPE_ADMIN);
    $userModel->setRole($userRole);
    
  8. 现在,我们可以保存新创建的管理员用户:

    $userModel->save();
    
  9. 完整的 PHP 代码如下:

    <?php
    
    require __DIR__ . '/app/bootstrap.php';
    $bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
    
    $objectManager = $bootstrap->getObjectManager();
    $userFactory = $objectManager->get('\Magento\User\Model\UserFactory');
    $userModel = $userFactory->create();
    $userModel->setUserName('admin');
    $userModel->setEmail('admin@example.com');
    $password = 'admin123';
    $userModel->setPassword($password);
    $salt = md5(uniqid());
    $hash = md5($salt . $password) . ':' . $salt;
    $userModel->setPasswordHash($hash);
    $roleFactory = $objectManager->get('\Magento\Authorization\Model\RoleFactory');
    $userRole = $roleFactory->create();
    $userRole->setName('Administrators')
        ->setPid(0)
        ->setRoleType(\Magento\Authorization\Model\Acl\Role\Group::ROLE_TYPE)
        ->setUserType(\Magento\User\Model\User::USER_TYPE_ADMIN);
    $userModel->setRole($userRole);
    $userModel->save();
    
  10. 运行这个 PHP 脚本以创建 Magento 2 的管理员密码:

    php create_admin_password.php
    
结论

在 Magento 2 中,创建管理员密码是一个简单的过程,只需简单的 PHP 代码即可完成。使用以上步骤,您现在可以从客户端访问 Magento 2 后台功能并开始管理您的商店!