注册两种不同类型的用户

时间:2019-09-22 00:18:30

标签: laravel

我无法将用户注册为餐厅或消费者。

我正在使用内置的Laravels注册和登录模板。但是,我需要修改注册表单以包括一个类型。还使用迁移和播种器。

迁移

Schema::create('users', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('name');
        $table->string('email')->unique();
        $table->timestamp('email_verified_at')->nullable();
        $table->string('password');
        $table->rememberToken();
        $table->timestamps();
    });

种子

DB::table('users')->insert([
    'name' => "admin",
    'email' => 'admin@test.com',
    'password' => bcrypt('admin'),
    // 'type' => true
]);

当用户单击“注册”时,是否选中一个复选框?将包括在内,以供用户指定类型。如果用户注册为餐厅,则将授予某些权限。

3 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点,所有方法都取决于复杂性。通常,我会这样做:

我将创建一个角色表;

然后在用户和角色之间建立多对多关系。

创建用户后,我将在(用户)类方法中分配给定角色的关系,例如:

new_cols <- tribble(
  ~first_0_name, ~first_0_loc, ~streak_1,
  "i9", 10, 5,
  "i4", 5, 4,
  "i6", 7, 8,
  "i8", 9, 4,
  "i9", 10, 5,
  NA, NA, NA,
  "i1", 2, 5,
  "i3", 4, 8,
  "i2", 3, NA,
  "i1", 2, 1
)

然后对需要角色的操作进行检查:

df=pd.DataFrame({'comments':['xxy uuicz', '', 'jiko bhht'], 'label':['positive', 'negative', 'negative']})

但是为了可扩展性和约定以及更少的支票,我将使用Gate之类的东西,如此处所示:

https://laravel.com/docs/5.8/authorization

这仍然利用了上面的一些代码,但是在全局范围内强制执行,并且仅允许基于身份验证级别的特定路由访问。

您可以混合使用这两种方法,其中show()函数可能会通过hasRole()检查针对不同的身份验证级别显示不同的内容,并返回不同的响应。或者,您也可以使用登机口通过相同的检查来阻止整个路线。这完全取决于您的用例。

答案 1 :(得分:0)

您可以按照以下文档中的说明将字段添加到注册页面:customize-laravel-registration

答案 2 :(得分:0)

您可以添加诸如is_admin(位类型)之类的字段来检查用户的类型是1还是2。