2016-02-17 5 views
1

Я использую проверку подлинности в комплекте с Laravel 5.2:Laravel 5.2 Изменение функциональности пароля пользователя

https://laravel.com/docs/5.2/authentication#included-routing

Я хочу реализовать функциональные возможности «изменить пароль» для пользователей, прошедших проверку подлинности и у меня есть два варианта:

  1. Я могу использовать включенный маршрут '/ password/reset', не оптимальный, но нормально. Но он работает только тогда, когда пользователь не вошел в систему. Могу ли я заставить его работать и для аутентифицированных пользователей?

  2. Я могу создать форму «ввести новый пароль» в виде и метод updatePassword в UsersController. Но мне нужно проверить, не является ли отправленный пароль пустым, это означает, что пользователь хочет его изменить, затем применить правила проверки, затем зашифровать его и обновить. Правильно ли это? Будут оценены любые примеры.

ответ

1

Я думаю, что # 2 - путь, это просто другое поле в форме пользовательских настроек. В моем приложении это выглядит следующим образом:

$user->update($request->except('password')); 
if($request->get('password') != ""){ 
    $user->password = Hash::make($request->get('password')); 
} 
$user->save(); 

я специальную проверку, чтобы гарантировать, что я не обновить пароль с чистого поля. Добавьте подтверждение по вкусу.

+1

Да, «Идет для этого варианта. Благодарю. –

0

Вы можете установить набор атрибутов в модели как

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

В методе редактирования:

if (empty($request->password)) { 
     $data = $request->except('password'); 
    } else { 
     $data = $request->all(); 
    } 

    $user = $this->userRepository->update($data, $id); 
1

Я осуществил изменение пароля в моем файле пользователя, как показано ниже

public function postReset(Request $request) 
    { 
      $this->validate($request, [ 
        'password' => 'required|confirmed','email' => 'required|email', 

      ]); 
      $user = User::findOrFail($id); 
      $input = $request->input(); 
      //Change Password if password value is set 
      if ($input['password'] != "") { 
       //dd(bcrypt($input['password'])); 
       $input['password'] = bcrypt($input['password']); 
      } 
      $user->fill($input)->save(); 
    } 
Смежные вопросы