I want to assign a role to user during sign up in Laravel 5.2 default AuthController, so how to do this if anyone idea? Here I have three tables users , roles and user_roles thanks
My migrations: users_migration:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password', 60);
$table->rememberToken();
$table->timestamps();
});
}
user_role:
public function up()
{
Schema::create('user_roles', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id');
$table->integer('role_id');
$table->timestamps();
});
}
roles migration:
public function up()
{
Schema::create('roles', function (Blueprint $table) {
$table->increments('id');
$table->string('name', 60);
$table->text('description');
$table->timestamps();
});
}
And the models:
User model:
.
.
.
public function roles()
{
return $this->belongsToMany('App\Role', 'user_roles','user_id','role_id');
}
Role model:
class Role extends Model
{
protected $primaryKey = 'r_id';
public function users()
{
return $this->belongsToMany('App\User', 'user_roles','role_id','user_id');
}
}
here are what I do but you can change it whatever you want.
i'll override register()
of registerUsers trait in AuthController.
public function register(Request $request)
{
//your logic
$roles = $request->input('role_id');
$method = $roles instanceof Role ? 'save' : 'saveMany';
//you can use foreach too
$user->roles()->$method($roles);
}
as mentioned at the docs you can use $user->roles()->attach($roleId)
to attach roles to user
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.