【发布时间】:2015-04-08 14:38:13
【问题描述】:
您好,我正在使用 Laravel,我正在为用户身份验证和角色使用几个包,它们是 Zizaco Confide,我想首先更新用户密码,他们应该在那里输入当前密码和新密码并确认密码,然后他们应该匹配。现在验证有效,但用户密码未在数据库中更新。我的代码如下:
public function updatePassword($id) {
$rules = array(
'now_password' => 'required',
'password' => 'min:5|confirmed|different:now_password',
'password_confirmation' => 'required_with:password|min:5'
);
//password update.
$now_password = Input::get('now_password');
$password = Input::get('password');
$passwordconf = Input::get('password_confirmation');
$validator = Validator::make(Input::only('now_password', 'password', 'password_confirmation'), $rules);
if ($validator->fails()) {
return Redirect::back()->withErrors($validator);
}
elseif (Hash::check($now_password, Auth::user()->password)) {
$user = User::find($id);
$user->password = Hash::make($password);
$user->save();
return Redirect::back()->with('success', true)->with('message','User updated.');
} else {
return Redirect::back()->withErrors('Password incorrect');
}
}
没有使用此代码块更新用户密码的任何想法
$user = User::find($id);
$user->password = Hash::make($password);
$user->save();
用户模型
<?php
use Zizaco\Confide\ConfideUser;
use Zizaco\Confide\ConfideUserInterface;
use Zizaco\Entrust\HasRole;
class User extends Eloquent implements ConfideUserInterface
{
use SoftDeletingTrait;
use ConfideUser;
use HasRole;
protected $softDelete = true;
public function favourites()
{
return $this->hasMany('Favourite');
}
}
【问题讨论】:
-
它的逻辑很好,但你在控制器功能中有太多事情要做。您应该将该逻辑提取到存储库或服务提供商中。
-
您使用的是标准用户模型 - 还是其他模型?那里有任何验证或变异器吗?也许发布您的用户模型...
-
你怎么知道密码没有更新?
-
我正在使用 confide 模型,因为我注销并尝试了新密码,但尝试旧密码失败,但它成功了。多次尝试。
-
不提供更新密码的方法吗?
标签: php authentication laravel passwords eloquent