@maks78945

Почему при таком способе создания пользователя пароль не корректный?

Добрый день, мне необходимо при заполнении данных в форме регистрировать такого пользователя, с этим проблем нету, но у меня возникла проблема, что если я создаю пользователя вот таким способом:

$pass = Str::random(10);

        $user['company_id']     = $company->id;
        $user['name']           = $company->contact;
        $user['surname']        = 'Admin';
        $user['phone']          = $company->phone;
        $user['email']          = $company->email;
        $user['password']       = bcrypt($pass);

        $item = new User($user);
        $item->save();


Я не могу авторизоваться под этими данными, я попробовал изменить способ записи пользователя в таблицу на вот такой:
$pass = Str::random(10);

        User::insert([
            'company_id'    => $company->id,
            'name'		    => $company->contact,
            'surname'	    => 'Admin',
            'email'		    => $company->email,
            'phone'         => $company->phone,
            'password'	    => bcrypt($pass),
        ]);


И у меня всё сработало, подскажите что не так с первым способом?
  • Вопрос задан
  • 51 просмотр
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега Laravel
Второй способ вставляет значение напрямую в БД, в обход Eloquent.
А это значит, что проблема в двойном хешировании пароля - сначала вы передаёте захешированное значение в атрибут, а где-то внутри модели есть ещё setter, который заново хеширует то, что передали. Такой сеттер был в старых версиях из коробки, в новых это убрали (или всё наоборот, я уже не помню).

Второй способ я не рекомендую использовать, поскольку вы таким образом теряете половину возможностей фреймворка, лучше разберитесь с первым.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы