В моем проекте Laravel 6 я пытаюсь использовать пакет laratrust с системой авторизации / регистрации Laravel. Я изменил форму регистра авторизации по умолчанию, добавил два дополнительных поля для роли пользователя и разрешения. Поле разрешения представляет собой массив флажков. Как я могу сохранить эти два новых значения поля, используя контроллер регистра auth, особенно массив permissions?
Что я сделал:
- добавил два новых столбца в таблицу пользователей
- добавил поля в стандартную форму регистра авторизации
- добавилвходные данные для валидатора
- добавили входные данные в массив $ fillable в пользовательской модели
RegisterController
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
'role' => ['required'],
'permissions' => ['required'],
]);
}
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
'role_id'=> $data['role'],
/* is this the correct syntax to loop through the array
of the permissions ? */
foreach($data['permissions'] as $index => $value){
'permission_id' =>$data['permissions']
},
]);
}
}
Модель пользователя
protected $fillable = [
'name', 'email', 'password','role_id','permission_id',
];
Регистрационная форма (введенные мной данные)
<div class="form-group row">
<label for="role" class="col-md-4 col-form-label text-md-right">User Type</label>
<div class="col-md-6" style=" margin-left: 239px;">
<select class="form-control" name="role" id="role">
<option value selected disabled> -- Choose Role --</option>
@foreach ($roles as $role)
<option value="{{$role->id}}">{{$role->name}}</option>
@endforeach
</select>
@error('role')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>
<div class="form-group row">
<label class="col-md-4 col-form-label text-md-right">User Permissions</label>
<div class="col-md-6" style="margin-left: 239px;">
@foreach ($permissions as $permission)
<input id="permission" type='checkbox' name="permissions[]"
value="{{ $permission->id }}"/> {{$permission->name}}
@endforeach
@error('permission')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
</div>