Я пытаюсь добавить настраиваемое поле 'role' в Laravel 5.3 User Auth. Роль будет определять, является ли пользователь администратором среди других ролей, и потому, что в Auth-подклассах используются массовые назначаемые атрибуты, существует уязвимость.Добавление пользовательского (защищенного) поля в Laravel 5.3 Auth
Поэтому я изменил свою модель пользователя в:
protected $guarded = [
'role'
];
RegisterController я добавил свои собственные поля (пользователь по умолчанию будет иметь роли = клиент);
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
'facebook_id' => $data['facebook_id'],
'linkedin_id' => $data['linkedin_id'],
'avatar' => $data['avatar'],
'token' => $data['token'],
'role' => 'customer',
Я получаю сообщение об ошибке:
SQLSTATE[HY000]: General error: 1364 Field 'role' doesn't have a default >value (SQL: insert into
users
(name
,password
, >facebook_id
,linkedin_id
,avatar
,token
,updated_at
, >created_at
) values (name, [email protected], hashed password, , , , , >2017-01-20 17:21:16, 2017-01-20 17:21:16))
не могу за жизнь мне понять это.
Я думал, что, возможно, я не использую массовый назначаемый вход, но у меня есть чувство, которое может испортить остальную часть эшафот Auth.
Спасибо за любую помощь
ОК спасибо, я понимаю, как это работает, я все еще немного смущен, почему мой первоначальный метод не удается, хотя ..! Cheers – Ash
весь смысл охраняемого вы не можете передать 'create (['role' => 'foo'])' – Moak