File "VerificationController.php"
Full Path: /home/trinadezambia/public_html/admin_panel/app/Http/Controllers/Auth/VerificationController.php
File size: 2.93 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Models\School;
use App\Models\User;
use App\Providers\RouteServiceProvider;
use Illuminate\Auth\Events\Verified;
use Illuminate\Foundation\Auth\VerifiesEmails;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\DB;
class VerificationController extends Controller
{
/*
|--------------------------------------------------------------------------
| Email Verification Controller
|--------------------------------------------------------------------------
|
| This controller is responsible for handling email verification for any
| user that recently registered with the application. Emails may also
| be re-sent if the user didn't receive the original email message.
|
*/
use VerifiesEmails;
/**
* Where to redirect users after verification.
*
* @var string
*/
protected $redirectTo = RouteServiceProvider::HOME;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
$this->middleware('signed')->only('verify');
$this->middleware('throttle:6,1')->only('verify', 'resend');
}
/**
* Mark the authenticated user's email address as verified.
* Overridden to sync verification status to the main MySQL database.
*/
public function verify(Request $request)
{
if (! hash_equals((string) $request->route('id'), (string) $request->user()->getKey())) {
throw new \Illuminate\Auth\Access\AuthorizationException;
}
if (! hash_equals((string) $request->route('hash'), sha1($request->user()->getEmailForVerification()))) {
throw new \Illuminate\Auth\Access\AuthorizationException;
}
if ($request->user()->hasVerifiedEmail()) {
return redirect($this->redirectPath());
}
if ($request->user()->markEmailAsVerified()) {
event(new Verified($request->user()));
}
// Sync email_verified_at to the main MySQL database
DB::connection('mysql')->table('users')
->where('id', $request->user()->id)
->update(['email_verified_at' => $request->user()->email_verified_at]);
// Sync to school database if applicable
$user = $request->user();
if ($user->school_id) {
$school = School::on('mysql')->where('id', $user->school_id)->first();
if ($school) {
Config::set('database.connections.school.database', $school->database_name);
DB::purge('school');
DB::connection('school')->reconnect();
User::on('school')->where('id', $user->id)->update(['email_verified_at' => $user->email_verified_at]);
}
}
return redirect($this->redirectPath())->with('verified', true);
}
}