Developer Hub

Blade

A premium Developer Portfolio, Repository Catalog, and Markdown Documentation Explorer built with Laravel. Features automated GitHub sync, a developer blog platform, and secure user access with 2FA.

Stars
2
Forks
0
Downloads
11
Open Issues
0
Files main

Repository Files

Loading file structure...
app/Http/Middleware/TwoFactorMiddleware.php
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Symfony\Component\HttpFoundation\Response;

class TwoFactorMiddleware
{
    public function handle(Request $request, Closure $next): Response
    {
        $user = Auth::user();

        if ($user && !$user->isActive()) {
            Auth::logout();
            $request->session()->invalidate();
            $request->session()->regenerateToken();

            if ($request->expectsJson()) {
                return response()->json(['error' => 'Your account has been deactivated.'], 403);
            }

            return redirect()->route('login')->with('error', 'Your account has been deactivated. Please contact an administrator.');
        }

        if ($user && !$request->session()->get('two_factor_verified')) {
            if ($request->expectsJson()) {
                return response()->json(['error' => 'Two-factor authentication required.'], 403);
            }
            // Store intended URL
            $request->session()->put('url.intended', $request->url());
            return redirect()->route('two-factor.challenge');
        }

        return $next($request);
    }
}