1<?php
2
3// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the GNU Affero General Public License v3.0.
4// See the LICENCE file in the repository root for full licence text.
5
6declare(strict_types=1);
7
8namespace App\Http\Middleware;
9
10use App\Events\UserSessionEvent;
11use Closure;
12use Illuminate\Http\Request;
13
14class SetSessionVerification
15{
16 public function handle(Request $request, Closure $next)
17 {
18 $user = \Auth::user();
19 if ($user !== null) {
20 $session = \Session::instance();
21 $isVerified = $session->isVerified();
22
23 if ($isVerified) {
24 $user->markSessionVerified();
25 } else {
26 $isRequired = VerifyUserAlways::isRequired($user);
27 if ($session->get('requires_verification') !== $isRequired) {
28 $session->put('requires_verification', $isRequired);
29 $session->save();
30 UserSessionEvent::newVerificationRequirementChange(
31 $user->getKey(),
32 $isRequired,
33 )->broadcast();
34 }
35 }
36 }
37
38 return $next($request);
39 }
40}