0

我在 laravel 工作,我正在使用 spatie 权限包,我想在注册时为用户分配不同的角色 我正在使用单选按钮从用户(例如编辑器、作家、博主)那里获取角色 我如何分配基于用户输入的用户不同角色

4

4 回答 4

2

在 Laravel 中Auth\RegisterController,您可以修改create()函数。如果您使用Spatie包,这将是有效的。

protected function create(array $data)
    {
        $user =  User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);

          $user->assignRole('customer'); //assign role to user
          return $user;    
    }
于 2020-08-20T13:52:02.990 回答
0

您可以尝试以下代码:

protected function create(array $data)
{

    

        $user=User::create([
            'first_name' => $data['first_name'],
            'last_name' => $data['last_name'],
            'user_name' => $data['user_name'],
            'role_name' => $data['role_name'],
            'phone' => $data['phone'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);

    $role_a = $data['role_name'];
    if($role_a  == 'student') {
        $role = Roles::select('id')->where('admin_name', 'student')->first();
        $user->roles()->attach($role);
        return $user;
        }
    elseif ($role_a  == 'clg_admin'){
        $role=Roles::select('id')->where('admin_name','clg_admin')->first();
        $user->roles()->attach($role);
        return $user;
    }
    elseif ($role_a  == 'univ_admin'){
        $role=Roles::select('id')->where('admin_name','univ_admin')->first();
        $user->roles()->attach($role);
        return $user;
    }
    elseif ($role_a  == 'gov_admin'){
        $role=Roles::select('id')->where('admin_name','gov_admin')->first();
        $user->roles()->attach($role);
        return $user;
    }
    elseif ($role_a  == 'hod'){
        $role=Roles::select('id')->where('admin_name','hod')->first();
        $user->roles()->attach($role);
        return $user;
    }

}
于 2020-07-15T16:11:29.883 回答
0

获取该用户输入并使用包自述文件中描述的 assignRole 函数

就像是

public function someController(Request $request)
{
    ....
    $user->assignRole($request->input('role'));
    ...
}

假设您有一个带有名称的表单输入(复选框、单选、文本)role

于 2018-07-31T15:45:47.827 回答
0

我终于找到了一种根据用户选择将不同角色附加到用户的方法

在我的注册创建功能

$role = $data['userType'];

    if ($role == 'User') {
        $user->assignRole('User');
    }elseif ($role =='Vendor') {
        $user->assignRole('Vendor');
    }  
于 2018-08-01T04:49:12.670 回答