【问题标题】:How to redirect users conditionally?如何有条件地重定向用户?
【发布时间】:2021-01-08 14:45:20
【问题描述】:

我在使用 Jetstream 的 Laravel 上,我正在使用响应来重定向用户,一旦用户注册自己。每当用户注册时,我都能成功地重定向用户。只有管​​理员可以创建用户或邀请他们。因此,每当我从管理面板创建用户时,它会将我重定向到 route('frontend.dashboard'),它只能由具有客户端角色的用户查看。所以当我以管理员身份登录时,它会抛出一个状态错误 404。

如何在管理员注册帐户时省略重定向部分。所以用户只有在他自己注册时才会被重定向。

  • RegisterResponse.php
class RegisterResponse implements RegisterResponseContract
{

    public function toResponse($request)
    {
        if(Auth::user()->hasAnyRoles(['Administrator', 'Employee'])) {
            return redirect()->route('backend.dashboard');
        }

        return redirect()->route('frontend.dashboard');
    }

【问题讨论】:

标签: php laravel laravel-8


【解决方案1】:

您可以使用中间件来限制用户重定向不同的路由。

否则,您可以在数据库中创建两个名为“权限”和“功能”的表。 表格列应该是这样的:

- 表(权限):

 Schema::create('permissions', function (Blueprint $table) {
                    $table->id();
                    $table->unsignedInteger('user_id');
                    $table->unsignedInteger('feature_id');
                    $table->timestamps();
                });

- 表格(功能):

Schema::create('features', function (Blueprint $table) {
                $table->id();
                $table->string('name');
                $table->timestamps();
            });

现在创建一个这样的辅助函数,它将检查特定用户是否有权重定向到特定路由。 **

  • 辅助功能:

**

function has_permission($feature_name)
{
    $user = Auth::user();
    if($user->role->name == 'admin' ){
        $status = True;
    }else{
        $feature = Feature::where('name', $feature_name)->first();
        $status = Permission::where([['user_id', $user->id],['feature_id', $feature->id]])->exists();
    }
    return $status;
} 

所以,现在您可以在控制器中为每个重定向到这样的页面的函数添加条件:

if (!has_permission('shipments')) {
            $notification=array(
                'message' => 'Sorry ! You do not have permission',
                'alert-type' => 'warning'
            );

谢谢。祝你编码愉快

【讨论】:

  • 感谢您的回复!我会尝试实施您的解决方案。
猜你喜欢
  • 1970-01-01
  • 2018-10-25
  • 2011-04-14
  • 2020-05-01
  • 2012-12-30
  • 2019-10-23
  • 2021-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多