관리-도구
편집 파일: LoginSecurityController.php
<?php namespace App\Http\Controllers; use App\Models\LoginSecurity; use Auth; use Hash; use Illuminate\Http\Request; class LoginSecurityController extends Controller { public function show2faForm(Request $request){ $pageTitle = '2FA Authentication'; $user = Auth::user(); $google2fa_url = ""; $secret_key = ""; if ($user->loginSecurity && $user->loginSecurity->google2fa_secret) { $google2fa = new \PragmaRX\Google2FAQRCode\Google2FA(); $google2fa_url = $google2fa->getQRCodeInline( 'MyNotePaper Demo', $user->email, $user->loginSecurity->google2fa_secret ); $secret_key = $user->loginSecurity->google2fa_secret; } $data = array( 'user' => $user, 'secret' => $secret_key, 'google2fa_url' => $google2fa_url ); return view('frontend.user.2fa_settings',compact('pageTitle'))->with('data', $data); } /** * Generate 2FA secret key */ public function generate2faSecret(Request $request){ $user = Auth::user(); // Initialise the 2FA class $google2fa = (new \PragmaRX\Google2FAQRCode\Google2FA()); // Add the secret key to the registration data $login_security = LoginSecurity::firstOrNew(array('user_id' => $user->id)); $login_security->user_id = $user->id; $login_security->google2fa_enable = 0; $login_security->google2fa_secret = $google2fa->generateSecretKey(); $login_security->save(); return redirect()->route('user.2fa')->with('success',"Secret key is generated."); } /** * Enable 2FA */ public function enable2fa(Request $request){ $user = Auth::user(); $google2fa = (new \PragmaRX\Google2FAQRCode\Google2FA()); $secret = $request->input('secret'); $valid = $google2fa->verifyKey($user->loginSecurity->google2fa_secret, $secret); if($valid){ $user->loginSecurity->google2fa_enable = 1; $user->loginSecurity->save(); return redirect()->route('user.2fa')->with('success',"2FA is enabled successfully."); }else{ return redirect()->route('user.2fa')->with('error',"Invalid verification Code, Please try again."); } } /** * Disable 2FA */ public function disable2fa(Request $request){ if (!(Hash::check($request->get('current-password'), Auth::user()->password))) { return redirect()->back()->with("error","Your password does not matches with your account password. Please try again."); } $validatedData = $request->validate([ 'current-password' => 'required', ]); $user = Auth::user(); $user->loginSecurity->google2fa_enable = 0; $user->loginSecurity->save(); return redirect()->route('user.2fa')->with('success',"2FA is now disabled."); } }