0

我想根据用户设置切换 Fortify 功能。

My/config/fortify.php默认启用了一组基本功能:

'features' => [
    Features::resetPasswords(),
    Features::updateProfileInformation(),
    Features::updatePasswords(),
],

其余功能根据数据库设置动态启用。

这是我的AppServiceProvider::boot()方法:

public function boot()
{
    $features = (array)config('fortify.features');

    if (setting_bool('user_registration')) {
        $features[] = Features::registration();
    }

    if (setting_bool('verify_email')) {
        $features[] = Features::emailVerification();
    }

    if (setting_bool('two_factor')) {
        $features[] = Features::twoFactorAuthentication();
    }

    config()->set('fortify.features', $features);
}

当我访问该网站时,该代码有效(启用了功能)。

但是,这些动态启用功能的关联路由未注册,也不会显示在artisan route:list.

仅在启用该fortify/routes/routes.php功能时才注册路由:

if (Features::enabled(Features::emailVerification())) {
  // register the associated routes ...
}

if (Features::enabled(Features::twoFactorAuthentication())) {
  ...
}

如何为动态启用的功能生成路由?


更新#1:正如评论中所建议的,我已经在FortifyServiceProvider课堂上包含了代码。路线没有改变。我还将代码添加到中间件,仍然没有运气。

看来我需要在laravel/fortify配置路由之前注入此代码。截至目前,我的代码是在包初始化之后执行的。

4

0 回答 0