![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/pdf-ai.com/private_html/app/Http/Controllers/User/ |
<?php
namespace App\Http\Controllers\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\Rules;
use App\Rules\ValidateUserPasswordRule;
use App\Models\User;
class UserPasswordController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(Request $request)
{
$google2fa = app('pragmarx.google2fa');
// Add the secret key to the registration data
$google_data = $google2fa->generateSecretKey();
// Save the registration data to the user session for just the next request
session()->put('google_data', $google_data);
$qr_code = $google2fa->getQRCodeInline(
config('app.name'),
auth()->user()->email,
$google_data
);
return view('user.profile.password');
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request)
{
$request->validate([
'current_password' => ['required', new ValidateUserPasswordRule],
'new_password' => ['required', Rules\Password::min(8)],
'new_confirm_password' => ['required','same:new_password', Rules\Password::min(8)],
]);
User::find(auth()->user()->id)->update(['password'=> Hash::make($request->new_password)]);
toastr()->success(__('Password Successfully Updated'));
return redirect()->back();
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function google(Request $request)
{
$google2fa = app('pragmarx.google2fa');
// Add the secret key to the registration data
$google_data = $google2fa->generateSecretKey();
if (!auth()->user()->google2fa_enabled) {
$user = User::find(auth()->user()->id)->first();
$user->google2fa_secret = $google_data;
$user->save();
}
$qr_code = $google2fa->getQRCodeInline(
config('app.name'),
auth()->user()->email,
$google_data
);
return view('user.profile.google', compact('qr_code', 'google_data'));
}
/**
* Activate Google 2FA Security
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function activate2FA(Request $request)
{
$google2fa = app('pragmarx.google2fa');
$request->validate([
'key' => 'required|numeric',
]);
$valid = $google2fa->verifyKey(auth()->user()->google2fa_secret, $request->key);
if ($valid) {
$user = User::find(auth()->user()->id)->first();
$user->google2fa_enabled = true;
$user->save();
session()->put('2fa', auth()->user()->id);
toastr()->success(__('Google 2FA Login feature is successfully activated'));
return redirect()->back();
} else {
toastr()->error(__('Provided Google Authentication OTP key do not match'));
return redirect()->back();
}
}
/**
* Deactivate Google 2FA Security
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function deactivate2FA(Request $request)
{
$google2fa = app('pragmarx.google2fa');
$request->validate([
'key' => 'required|numeric',
]);
$valid = $google2fa->verifyKey(auth()->user()->google2fa_secret, $request->key);
if ($valid) {
$user = User::find(auth()->user()->id)->first();
$user->google2fa_secret = '';
$user->google2fa_enabled = false;
$user->save();
if ($request->session()->has('2fa')) {
session()->forget('2fa');
}
return redirect()->back()->with('success','Google 2FA Login feature is successfully deactivated');
} else {
return redirect()->back()->with('error','Provided Google Authentication OTP key do not match');
}
}
}