我在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
部分有问题,但是什么?我不知道。帮助将不胜感激。
编辑: 我正在尝试检查,如果密码字段是否填写,如果没有填写,保留密码,如果填写,检查它是否与当前密码不同,如果不同,改变它,否则保持原样
答案 0 :(得分:0)
变化
if (!$this->hash->check($this->input->get('password'), $user->password))
{
$user->password = $user->password;
} else {
$user->password = $this->input->get('password');
}
到
if ($this->input->get('password'))
{
$user->password = $this->input->get('password');
}