Как отправить массив в Laravel auth RegisterController? - PullRequest
0 голосов
/ 31 октября 2019

В моем проекте 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>
...