File size: 3.43Kb
<?php
namespace App\Http\Controllers\Admin\Auth;
use App\Models\Admin;
use App\Models\AdminPasswordReset;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ResetsPasswords;
use Illuminate\Support\Facades\Password;
use Illuminate\Http\Request;
class ResetPasswordController extends Controller
{
/*
|--------------------------------------------------------------------------
| 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 login / registration.
*
* @var string
*/
public $redirectTo = '/admin/dashboard';
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('admin.guest');
}
/**
* Display the password reset view for the given token.
*
* If no token is present, display the link request form.
*
* @param \Illuminate\Http\Request $request
* @param string|null $token
* @return \Illuminate\Http\Response
*/
public function showResetForm(Request $request, $token)
{
$pageTitle = "Account Recovery";
$resetToken = AdminPasswordReset::where('token', $token)->where('status', 0)->first();
if (!$resetToken) {
$notify[] = ['error', 'Verification code mismatch'];
return to_route('admin.password.reset')->withNotify($notify);
}
$email = $resetToken->email;
return view('admin.auth.passwords.reset', compact('pageTitle', 'email', 'token'));
}
public function reset(Request $request)
{
$this->validate($request, [
'email' => 'required|email',
'token' => 'required',
'password' => 'required|confirmed|min:4',
]);
$reset = AdminPasswordReset::where('token', $request->token)->orderBy('created_at', 'desc')->first();
$user = Admin::where('email', $reset->email)->first();
if ($reset->status == 1) {
$notify[] = ['error', 'Invalid code'];
return to_route('admin.login')->withNotify($notify);
}
$user->password = bcrypt($request->password);
$user->save();
$reset->status = 1;
$reset->save();
$userIpInfo = getIpInfo();
$userBrowser = osBrowser();
notify($user, 'PASS_RESET_DONE', [
'operating_system' => $userBrowser['os_platform'],
'browser' => $userBrowser['browser'],
'ip' => $userIpInfo['ip'],
'time' => $userIpInfo['time']
],['email'],false);
$notify[] = ['success', 'Password changed'];
return to_route('admin.login')->withNotify($notify);
}
/**
* Get the broker to be used during password reset.
*
* @return \Illuminate\Contracts\Auth\PasswordBroker
*/
public function broker()
{
return Password::broker('admins');
}
/**
* Get the guard to be used during password reset.
*
* @return \Illuminate\Contracts\Auth\StatefulGuard
*/
protected function guard()
{
return auth()->guard('admin');
}
}