imanghafoori/laravel-masterpass

一个简单但功能强大的包,帮助您轻松模拟用户。

v2.2.51 2024-06-26 21:46 UTC

README

🔑 一分钟内让您的登录表单变得智能。

Maintainability Imports StyleCI Latest Stable Version Daily Downloads Total Downloads Software License

专为每个智能 Laravel 开发者打造 ❤️

帮助您在 .env 文件中设置主密码,并用它登录任何账户以模拟用户。

这意味着每个账户都将有两个有效密码。原始密码和主密码。

这也可以帮助您在开发过程中以及出于测试目的,您想用多个用户名登录,而不想记住每个测试账户的所有正确密码。

  • 也支持 laravel-passport(自版本 2.0.6 及以上)

🔥 安装


composer require imanghafoori/laravel-masterpass

兼容 laravel 版本 5.5 及以上。

然后运行

php artisan vendor:publish --tag=master_password

🔧 配置

您唯一需要做的是将主密码放入 .env 文件

MASTER_PASSWORD=mySecretMasterPass

或者您也可以在这里放入密码的哈希版本以隐藏它,防止被盗取。👀

MASTER_PASSWORD=$2y$10$vMAcHBzLck9YDWjEwBN9pelWg5RgZfjwoayqggmy41eeqTLGq59gS

两种方式都可以正常工作。

  • 如果无法从 config/master_password.php 文件中读取主密码,则此包将完全禁用,并且不会做任何操作。

您可能还需要检查用户是否使用真实密码或主密码登录。

$bool = Auth::isLoggedInByMasterPass();

或者在 blade 文件中,您可以使用我们的指令

@isLoggedInByMasterPass

     Your are here by master password.

@endif

▶️ 高级用法

如果我想要将主密码放入数据库中?(不是 .env)

如果您想将主密码存储在数据库或其他地方

\Event::listen('masterPass.whatIsIt?', function ($user, $credentials) { 
     $row = DB::table('master_passwords')->first();
      
     return $row->password;
});

▶️ 超级管理员账户不应该通过主密码打开,对吧?

🔰 您希望支持团队通过主密码登录普通用户账户。但是

🔰 您不希望他们通过主密码登录超级管理员账户。

🔰 即使是支持团队的成员也不应该入侵彼此的账户。

🔰 换句话说,您希望管理员账户只有一个有效密码,而不是两个。主密码仅用于普通用户账户。

▶️ 那如何在代码中排除管理员账户?

在这种情况下,您可以监听 'masterPass.canBeUsed?' 事件,检查您的条件,并从中返回 false

示例

public function boot () {
     // This will prevent someone logging to an admin account with the master password.
     \Event::listen('masterPass.canBeUsed?', function ($user, $credentials) {
          if ($user->isAdmin) {
               return false;
          }
     });
          
}

🔰 这里 $user 变量指的是与凭据相关的用户。

如果我的员工离职了怎么办?!

为了真正安全并安心入睡,我们应该只允许有特殊权限的中级管理员使用主密码。

这样,他们必须首先以管理员身份登录,然后才能使用主密码登录普通用户账户。

因此,当您的员工离职时,您应移除他们使用主密码的权限或角色。

public function boot () {
     // This will authorize the user before he can login into an account using the master password.
     \Event::listen('masterPass.canBeUsed?', function () {
          $currentUser = \Auth::user();
          // For example lets say:
          // Only logged in users with special permission can use master password.
          
          if (! $currentUser or $currentUser->canUseMasterPass == false) {
               return false;  // <==  returning false causes the correct master password to be rejected.    
          }

     });
          
}

因此,您可以在房间里大声喊出主密码,但如果您不给他们使用权限,他们就无法使用它。

▶️ 它是否与其他自定义守卫兼容?

是的,只要您保留 Laravel 提供的默认用户提供者,这将正常工作。

请记住,如果您从监听器返回除 null 以外的任何内容,则其他监听器将不会调用。

因此,如果您想继续检查过程,请返回 null

还添加了对 laravel-passport 的支持。

⚠️ 注意

  • 请记住,为了显而易见的原因,您的主密码应该足够长且复杂。

⭐ 您的星星激励我们做得更多 ⭐

一如既往,如果您觉得这个软件包很有用,并想鼓励我们维护和改进它,请点击星星按钮以表达您的意愿。

作者的其他软件包

💎 一个小巧而强大的软件包,为您的Laravel应用程序提供更好的结构和缓存机会。

💎 将函数式编程概念引入Laravel,以避免空引用错误。

💎 使用 hey-man 软件包,授权和验证现在变得非常简单!!!

💎 它会自动检查您的Laravel应用程序