diff --git a/beike/Shop/Http/Controllers/Account/AccountController.php b/beike/Shop/Http/Controllers/Account/AccountController.php index 59bbca38..984d7725 100644 --- a/beike/Shop/Http/Controllers/Account/AccountController.php +++ b/beike/Shop/Http/Controllers/Account/AccountController.php @@ -12,12 +12,20 @@ namespace Beike\Shop\Http\Controllers\Account; use Beike\Models\Customer; +use Beike\Repositories\CustomerRepo; use Beike\Shop\Http\Controllers\Controller; +use Beike\Shop\Http\Requests\ForgottenRequest; +use http\Env\Request; +use Illuminate\Support\Facades\Hash; use function auth; use function view; class AccountController extends Controller { + /** + * 个人中心首页 + * @return \Illuminate\Contracts\Foundation\Application|\Illuminate\Contracts\View\Factory|\Illuminate\Contracts\View\View + */ public function index() { $data = auth(Customer::AUTH_GUARD)->user()->toArray(); @@ -25,4 +33,19 @@ class AccountController extends Controller return view('account/account', $data); } + /** + * 修改密码,提交"origin_password"、"password", "password_confirmation", 验证新密码和确认密码相等,且原密码正确则修改密码 + * @param ForgottenRequest $request + * @return array + * @throws \Exception + */ + public function updatePassword(ForgottenRequest $request) + { + if (Hash::make($request->get('origin_password')) != current_customer()->getAuthPassword()) { + throw new \Exception("原密码错误"); + } + CustomerRepo::update(current_customer(), ['password' => $request->get('password')]); + + return json_success('密码修改成功'); + } } diff --git a/beike/Shop/Routes/shop.php b/beike/Shop/Routes/shop.php index 9331585a..6297c258 100644 --- a/beike/Shop/Routes/shop.php +++ b/beike/Shop/Routes/shop.php @@ -61,6 +61,7 @@ Route::prefix('/') ->middleware('shop_auth:' . Customer::AUTH_GUARD) ->group(function () { Route::get('/', [AccountController::class, 'index'])->name('account.index'); + Route::get('update_password', [AccountController::class, 'updatePassword'])->name('account.update_password'); Route::resource('addresses', AddressController::class); Route::get('orders', [OrderController::class, 'index'])->name('account.order.index');