imanghafoori / laravel-masterpass
一个简单但功能强大的包,帮助您轻松模拟用户。
Requires
- php: >=5.6.0
- laravel/framework: ^5.5|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- imanghafoori/php-imports-analyzer: ^v1.0.5
- laravel/passport: >=v1.0.0
- orchestra/testbench: ^3.5|^4.0|^5.0|^6.0|^7.0|^8.0|^9.0
Suggests
- imanghafoori/laravel-anypass: Allows you login with any password in local environment.
- imanghafoori/laravel-decorator: Allows you to easily apply the decorator pattern in a laravel app.
- imanghafoori/laravel-heyman: It allows to write expressive code to authorize, validate and authenticate.
- imanghafoori/laravel-terminator: Gives you opportunity to refactor your controllers.
- imanghafoori/laravel-widgetize: Gives you a better structure and caching opportunity for your laravel apps.
README
🔑 一分钟内让您的登录表单变得智能。
专为每个智能 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应用程序