Laravel обновляет пароль пользователя из формы с помощью хэша - PullRequest
0 голосов
/ 19 мая 2018

Итак, у меня есть эта форма с 3 полями (электронная почта пользователя, пароль и подтверждение пароля).эта форма отправляет сообщение по маршруту, который приводит меня к следующему контроллеру :

public function updateUser($id, Request $request){

    //validate post data
    $this->validate($request, [
        'email' => 'required|email',
        'password' => 'required|confirmed|min:6',
    ]);

    $request->all();

    $request['email'] = $request['email'];
    $request['password'] = Hash::make($request['password']);


    $postData =  [$request['email'], $request['password']];

    User::find($id)->update($postData);

    //store status message
    Session::flash('success_msg', 'User details updated successfully!');

    return redirect()->route('admin.user');

}

Проблема в том, что этот код вообще не обновляет мою базу данных, хотя и не дает мне ошибок.

В основном я пытаюсь разрешить администратору изменять данные учетной записи по умолчанию в панели администратора.Сведения об администраторе по умолчанию создаются сеялкой после установки приложения.(Это приложение для одного пользователя - только администратор)

Спасибо всем!

Ответы [ 3 ]

0 голосов
/ 19 мая 2018

Вы должны передать ключ массива, чтобы можно было идентифицировать столбец.

public function updateUser($id, Request $request){
    //validate post data
    $this->validate($request, [
        'email' => 'required|email',
        'password' => 'required|confirmed|min:6',
    ]);
    $userData = $request->only(["email","password"]);
    $userData['password'] = Hash::make($userData['password']);
    User::find($id)->update($userData);
    Session::flash('success_msg', 'User details updated successfully!');
    return redirect()->route('admin.user');
}
0 голосов
/ 19 мая 2018

Вы можете установить хеширование пароля по умолчанию в вашей модели пользователя, выполнив это

    public function setPasswordAttribute($value)
    {
        $this->attributes['password'] = Hash::make($value);
    }

, чем обновить пользователя, просто сделайте это

User::find($id)->update($request->only('email','password'));
0 голосов
/ 19 мая 2018
public function updateUser($id, Request $request){

    //validate post data
    $this->validate($request, [
        'email' => 'required|email',
        'password' => 'required|confirmed|min:6',
    ]);

    $input = $request->all();

    $input['email'] = $request['email'];
    $input['password'] = Hash::make($request['password']);

    User::find($id)->update($input);

    //store status message
    Session::flash('success_msg', 'User details updated successfully!');

    return redirect()->route('admin.user');

    }
...