<?php
namespace SCart\Core\Front\Controllers\Auth;
use SCart\Core\Front\Controllers\RootFrontController;
use Illuminate\Foundation\Auth\ResetsPasswords;
use Illuminate\Http\Request;
use Illuminate\Auth\Events\PasswordReset;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Password;
use Illuminate\Support\Str;
use Auth;
class ResetPasswordController extends RootFrontController
{
/*
|--------------------------------------------------------------------------
| Password Reset Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling password reset requests
| and uses a simple trait to include this behavior. You're free to
| explore this trait and override any methods you wish to tweak.
|
*/
use ResetsPasswords;
/**
* Where to redirect users after resetting their password.
*
* @var string
*/
// protected $redirectTo = '/home';
protected $redirectTo = '/';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
parent::__construct(); //
$this->middleware('guest');
}
/**
* Process front Form forgot password
*
* @param [type] ...$params
* @return void
*/
public function showResetFormProcessFront(...$params)
{
if (config('app.seoLang')) {
$lang = $params[0] ?? '';
$token = $params[1] ?? '';
sc_lang_switch($lang);
} else {
$token = $params[0] ?? '';
}
return $this->_showResetForm($token);
}
/**
* Form reset password
*
* @param Request $request
* @param [string] $token
*
* @return [view]
*/
private function _showResetForm($token = null)
{
if (Auth::user()) {
return redirect()->route('home');
}
sc_check_view($this->templatePath . '.auth.reset');
return view(
$this->templatePath . '.auth.reset',
[
'title' => sc_language_render('customer.password_reset'),
'token' => $token,
'layout_page' => 'shop_auth',
'breadcrumbs' => [
['url' => '', 'title' => sc_language_render('customer.password_reset')],
],
]
);
}
public function resetPassword(Request $request)
{
/* $request->validate([
'token' => 'required',
'email' => 'required|email',
'password' => 'required|min:8|confirmed',
]); */
$data = $request->all();
$dataMapping['token'] = 'required';
$dataMapping['email'] = 'required|email';
$dataMapping['password'] = 'required|min:5|confirmed';
$validator = \Illuminate\Support\Facades\Validator::make($data, $dataMapping);
if ($validator->fails()) {
return redirect()->back()
->withErrors($validator)
->withInput();
}
$status = Password::reset(
$request->only('email', 'password', 'password_confirmation', 'token'),
function ($user, $password) {
$user->forceFill([
'password' => Hash::make($password)
])->setRememberToken(Str::random(60));
$user->save();
event(new PasswordReset($user));
}
);
return $status === Password::PASSWORD_RESET
? redirect()->route('login')->with('success', __($status))
: back()->withErrors(['email' => [__($status)]]);
}
}
|