diff --git a/web/app/Http/Controllers/Auth/AuthenticatedSessionController.php b/web/app/Http/Controllers/Auth/AuthenticatedSessionController.php index 09abe87..6c2352f 100644 --- a/web/app/Http/Controllers/Auth/AuthenticatedSessionController.php +++ b/web/app/Http/Controllers/Auth/AuthenticatedSessionController.php @@ -5,6 +5,7 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use App\Http\Requests\Auth\LoginRequest; use App\Providers\RouteServiceProvider; +use App\Models\Session; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; @@ -29,7 +30,7 @@ class AuthenticatedSessionController extends Controller public function store(LoginRequest $request) { $request->authenticate(); - + $request->session()->regenerate(); return redirect()->intended(RouteServiceProvider::HOME); diff --git a/web/app/Http/Controllers/Auth/DoubleSessionBlockController.php b/web/app/Http/Controllers/Auth/DoubleSessionBlockController.php index a22a1b1..9605937 100644 --- a/web/app/Http/Controllers/Auth/DoubleSessionBlockController.php +++ b/web/app/Http/Controllers/Auth/DoubleSessionBlockController.php @@ -20,19 +20,13 @@ class DoubleSessionBlockController extends Controller 'g-recaptcha-response' => [new \App\Rules\GoogleRecaptcha] ]); - $record = Session::where('id', session()->getId())->first(); - if($record) { - $record->bypass_block_screen = true; - $record->save(); - - $returnUrl = request()->input('ReturnUrl'); - - if(!$returnUrl) - $returnUrl = '/'; - - return redirect(urldecode($returnUrl), 302); - } else { - return redirect()->back()->withErrors('Could not unblock. Try again.'); - } + request()->session()->put('bypass-block-screen', true); + + $returnUrl = request()->input('ReturnUrl'); + + if(!$returnUrl) + $returnUrl = '/'; + + return redirect(urldecode($returnUrl), 302); } } diff --git a/web/app/Http/Controllers/Auth/UserModerationController.php b/web/app/Http/Controllers/Auth/UserModerationController.php new file mode 100644 index 0000000..a816eca --- /dev/null +++ b/web/app/Http/Controllers/Auth/UserModerationController.php @@ -0,0 +1,14 @@ + [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, @@ -68,5 +68,7 @@ class Kernel extends HttpKernel 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + + 'banned' => \App\Http\Middleware\CheckBan::class, ]; } diff --git a/web/app/Http/Middleware/CheckBan.php b/web/app/Http/Middleware/CheckBan.php new file mode 100644 index 0000000..df2ad1c --- /dev/null +++ b/web/app/Http/Middleware/CheckBan.php @@ -0,0 +1,31 @@ +banId != null) { + if($request->route()->getName() != 'moderation.notice' && $request->route()->getName() != 'logout') { + return redirect() + ->to(route('moderation.notice', [], 302)); + } + } else { + return redirect('/', 302); + } + + return $next($request); + } +} diff --git a/web/app/Http/Middleware/DoubleSessionProtector.php b/web/app/Http/Middleware/DoubleSessionProtector.php index 2fba5cb..afbdf9b 100644 --- a/web/app/Http/Middleware/DoubleSessionProtector.php +++ b/web/app/Http/Middleware/DoubleSessionProtector.php @@ -26,14 +26,8 @@ class DoubleSessionProtector */ public function handle(Request $request, Closure $next) { - $record = Session::where('id', session()->getId())->where('bypass_block_screen', true)->first(); - if($record) { - if($request->route()->getName() == 'ddos.bypass') { - return redirect('/', 302); - } - + if($request->session()->get('bypass-block-screen', false)) return $next($request); - } /* */ diff --git a/web/database/migrations/2022_05_05_203337_create_sessions_table.php b/web/database/migrations/2022_05_05_203337_create_sessions_table.php index b5444bc..29b4b5c 100644 --- a/web/database/migrations/2022_05_05_203337_create_sessions_table.php +++ b/web/database/migrations/2022_05_05_203337_create_sessions_table.php @@ -20,7 +20,6 @@ return new class extends Migration $table->text('user_agent')->nullable(); $table->text('payload'); $table->integer('last_activity')->index(); - $table->boolean('bypass_block_screen')->default(false); $table->timestamps(); }); } diff --git a/web/resources/sass/Graphictoria.scss b/web/resources/sass/Graphictoria.scss index 021f402..b48c7db 100644 --- a/web/resources/sass/Graphictoria.scss +++ b/web/resources/sass/Graphictoria.scss @@ -455,6 +455,13 @@ html { } } +.graphictoria-moderation-card { + @media (min-width: 992px) { + max-width: 70%; + margin: auto; + } +} + .card { @include shadow(); html.gtoria-dark & { diff --git a/web/resources/views/auth/moderated.blade.php b/web/resources/views/auth/moderated.blade.php new file mode 100644 index 0000000..9d3f03a --- /dev/null +++ b/web/resources/views/auth/moderated.blade.php @@ -0,0 +1,42 @@ +@php + $noFooter = true; + $noNav = true; +@endphp + +@extends('layouts.app') + +@section('title', 'Moderation Notice') + +@section('content') +
Your account has been suspended for violating our Terms of Service.
+Suspention Date: 5/6/2022 9:35 PM
+Note: testing
+By checking the "I Agree" checkbox below, you agree to abide by Graphictoria's Terms of Service. Your account will be permantently suspended if you continue breaking the Terms of Service.
+ + +You will be able to reactivate your account in 0 Seconds.
+If you believe you have been unfairly moderated, please contact us at contact us at support@gtoria.net and we'll be happy to help.
+