ok
Direktori : /home2/selectio/www/billingsoftwarenew/core/app/Http/Controllers/User/ |
Current File : //home2/selectio/www/billingsoftwarenew/core/app/Http/Controllers/User/AuthorizationController.php |
<?php namespace App\Http\Controllers\User; use Carbon\Carbon; use Illuminate\Http\Request; use Illuminate\Validation\ValidationException; use App\Http\Controllers\Controller; use App\Constants\Status; class AuthorizationController extends Controller { protected function checkCodeValidity($user, $addMin = 2) { if (!$user->ver_code_send_at) { return false; } if ($user->ver_code_send_at->addMinutes($addMin) < Carbon::now()) { return false; } return true; } public function authorizeForm() { $user = auth()->user(); if (!$user->status) { $pageTitle = 'Banned'; $type = 'ban'; } elseif (!$user->ev) { $type = 'email'; $pageTitle = 'Verify Email'; $notifyTemplate = 'EVER_CODE'; } elseif (!$user->sv) { $type = 'sms'; $pageTitle = 'Verify Mobile Number'; $notifyTemplate = 'SVER_CODE'; } elseif (!$user->tv) { $pageTitle = '2FA Verification'; $type = '2fa'; } else { return to_route('user.home'); } if (!$this->checkCodeValidity($user) && ($type != '2fa') && ($type != 'ban')) { $user->ver_code = verificationCode(6); $user->ver_code_send_at = Carbon::now(); $user->save(); notify($user, $notifyTemplate, [ 'code' => $user->ver_code ], [$type]); } return view($this->activeTemplate . 'user.auth.authorization.' . $type, compact('user', 'pageTitle')); } public function sendVerifyCode($type) { $user = auth()->user(); if ($this->checkCodeValidity($user)) { $targetTime = $user->ver_code_send_at->addMinutes(2)->timestamp; $delay = $targetTime - time(); throw ValidationException::withMessages(['resend' => 'Please try after ' . $delay . ' seconds']); } $user->ver_code = verificationCode(6); $user->ver_code_send_at = Carbon::now(); $user->save(); if ($type == 'email') { $type = 'email'; $notifyTemplate = 'EVER_CODE'; } else { $type = 'sms'; $notifyTemplate = 'SVER_CODE'; } notify($user, $notifyTemplate, [ 'code' => $user->ver_code ], [$type]); $notify[] = ['success', 'Verification code sent successfully']; return back()->withNotify($notify); } public function emailVerification(Request $request) { $request->validate([ 'code' => 'required' ]); $user = auth()->user(); if ($user->ver_code == $request->code) { $user->ev = Status::VERIFIED; $user->ver_code = null; $user->ver_code_send_at = null; $user->save(); return to_route('user.home'); } throw ValidationException::withMessages(['code' => 'Verification code didn\'t match!']); } public function mobileVerification(Request $request) { $request->validate([ 'code' => 'required', ]); $user = auth()->user(); if ($user->ver_code == $request->code) { $user->sv = Status::VERIFIED; $user->ver_code = null; $user->ver_code_send_at = null; $user->save(); return to_route('user.home'); } throw ValidationException::withMessages(['code' => 'Verification code didn\'t match!']); } public function g2faVerification(Request $request) { $user = auth()->user(); $request->validate([ 'code' => 'required', ]); $response = verifyG2fa($user, $request->code); if ($response) { $notify[] = ['success', 'Verification successful']; } else { $notify[] = ['error', 'Wrong verification code']; } return back()->withNotify($notify); } }