cube-agency / nova-google2fa
此包为 Laravel Nova 提供Google2FA。
1.1.4
2023-11-07 10:13 UTC
Requires
- php: >=8.1.0
- bacon/bacon-qr-code: ^2.0
- pragmarx/google2fa-laravel: ^2.0
- pragmarx/recovery: ^0.2
README
此包强制为 Laravel Nova 实施双因素认证。
流程
激活
- 用户获取恢复码。
- 用户在设备上激活双因素认证。
验证
- 用户使用双因素认证验证登录。
恢复
- 如果用户输入无效代码,则显示恢复按钮。
- 用户输入恢复码。
- 用户登录后,可以通过 Nova 用户资源选择重置双因素认证。
- 添加用户重置双因素认证的能力
Text::make('Reset two-factor auth', function () { if (auth()->id() === $this->id) { $route = route('nova.google2fa.destroy'); $buttonText = __('nova-google2fa::2fa-auth.actions.reset'); return "<a href='{$route}' class='class=shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900 cursor-pointer rounded text-sm font-bold focus:outline-none focus:ring ring-primary-200 dark:ring-gray-600 inline-flex items-center justify-center h-9 px-3 shadow relative bg-primary-500 hover:bg-primary-400 text-white dark:text-gray-900'> {$buttonText}</a>"; } })->asHtml(),
安装
通过 composer 安装
$ composer require cube-agency/nova-google2fa
发布配置和迁移文件
$ php artisan vendor:publish --provider="CubeAgency\NovaGoogle2fa\ToolServiceProvider"
运行迁移
注意:在运行迁移之前,请确保根据您的项目调整配置值,以避免错误。
$ php artisan migrate
在您的 User 模型中使用 trait use CubeAgency\NovaGoogle2fa\Traits\HasGoogle2fa;
添加双因素认证关系
或者
手动在 User 模型中添加关系
use CubeAgency\NovaGoogle2fa\Models\User2fa; use Illuminate\Database\Eloquent\Relations\HasOne; ... /** * @return HasOne */ public function user2fa(): HasOne { return $this->hasOne(User2fa::class, 'user_id'); }
向 nova.config
中添加中间件。
[ ... 'middleware' => [ ... \CubeAgency\NovaGoogle2fa\Http\Middleware\Google2fa::class, ... ], ]
配置
return [ /** * Disable or enable middleware. */ 'enabled' => env('GOOGLE_2FA_ENABLED', true), 'models' => [ /** * Change this variable to path to user model. */ 'user' => 'App\User', /** * Change this if you need a custom connector */ 'user2fa' => User2fa::class, ], 'tables' => [ /** * Table in which users are stored. */ 'user' => 'users', ], 'recovery_codes' => [ /** * Number of recovery codes that will be generated. */ 'count' => 8, /** * Number of blocks in each recovery code. */ 'blocks' => 3, /** * Number of characters in each block in recovery code. */ 'chars_in_block' => 16, ], 'recovery_input' => 'recovery_code', 'app_store_links' => [ 'android' => 'https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en&gl=US', 'ios' => 'https://apps.apple.com/lv/app/google-authenticator/id388497605', ] ];