0

Laravel で Sentry を使用してユーザー情報を更新することについて質問を受けました。

コントローラーでこれを取得しました:

public function update()
{
    try{
        $user = $this->sentry->getUser();

        $user->username     = $this->input->get('username');
        $user->first_name   = $this->input->get('first_name');
        $user->last_name    = $this->input->get('last_name');
        $user->email        = $this->input->get('email');
        $user->description  = $this->input->get('description');

        if (!$this->hash->check($this->input->get('password'), $user->password))
        {
            $user->password = $user->password;
        } else {
            $user->password = $this->input->get('password');
        }

        if($user->save())
        {
            return $this->redirect->to('admin');
        } else {
            return $this->redirect->to('admin/'.$user->username.'/');
        }
    }
    catch (\Exception $e)
    {
        return $this->redirect->to('user/'.$user->username.'/profile/edit')->withErrors(array('login'=> $e->getMessage()));
    }
}

フォームの送信時に処理されます。ただし、入力フィールドにパスワードを入力せずに、ユーザー情報の他の何かを更新してフォームを送信するとします。また、「空の」パスワードフィールドを使用して、それとはまったく異なるものを作成します。そのため、元のパスワードを使用してログインできなくなります。

hash->checkその部分に何か問題があることは知っていますが、何ですか?知らない。助けていただければ幸いです。

編集:パスワードフィールドが入力されているかどうか、入力されていない場合はパスワードをそのままにして、入力されている場合は現在のパスワードと異なるかどうかを確認しようとしています。違うなら変える、そうでなければそのままにしておく

4

1 に答える 1