From 1bbee6d07be4bc55c0e097b6fdd94ab6ac521667 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Mon, 24 Apr 2023 03:58:34 -0600 Subject: [PATCH] Update RegisterController, improve max_users calculation and add kb page to redirect to if conditions are met --- .../Controllers/Auth/RegisterController.php | 5 ++++- .../site/help/instance-max-users.blade.php | 20 +++++++++++++++++++ routes/web.php | 1 + 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 resources/views/site/help/instance-max-users.blade.php diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index 5fb8f290f..0e62abef8 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -181,6 +181,9 @@ class RegisterController extends Controller $limit = config('pixelfed.max_users'); if($limit) { $count = User::where(function($q){ return $q->whereNull('status')->orWhereNotIn('status', ['deleted','delete']); })->count(); + if($limit <= $count) { + return redirect(route('help.instance-max-users-limit')); + } abort_if($limit <= $count, 404); return view('auth.register'); } else { @@ -209,7 +212,7 @@ class RegisterController extends Controller $limit = config('pixelfed.max_users'); if(false == config_cache('pixelfed.open_registration') || $limit && $limit <= $count) { - return abort(403); + return redirect(route('help.instance-max-users-limit')); } $this->validator($request->all())->validate(); diff --git a/resources/views/site/help/instance-max-users.blade.php b/resources/views/site/help/instance-max-users.blade.php new file mode 100644 index 000000000..bf68e3125 --- /dev/null +++ b/resources/views/site/help/instance-max-users.blade.php @@ -0,0 +1,20 @@ +@extends('site.help.partial.template', ['breadcrumb'=>'Instance User Limit']) + +@section('section') + +
+

Instance User Limit

+
+
+ @if(config('pixelfed.max_users')) +

We have a limit on how many users can join our instance to keep our community healthy.

+ +

If you have been redirected to this page, that means we've reached our user limit or we are not accepting new account registrations at this time.

+ +

Please try again later, or consider joining a different Pixelfed instance.

+ @else +

We do not have a limit on how many users can join our instance.

+ +

If this instance isn't for you, consider joining a different Pixelfed instance.

+ @endif +@endsection diff --git a/routes/web.php b/routes/web.php index c0d12153b..6f5d1fc33 100644 --- a/routes/web.php +++ b/routes/web.php @@ -562,6 +562,7 @@ Route::domain(config('pixelfed.domain.app'))->middleware(['validemail', 'twofact Route::view('labs-deprecation', 'site.help.labs-deprecation')->name('help.labs-deprecation'); Route::view('tagging-people', 'site.help.tagging-people')->name('help.tagging-people'); Route::view('licenses', 'site.help.licenses')->name('help.licenses'); + Route::view('instance-max-users-limit', 'site.help.instance-max-users')->name('help.instance-max-users-limit'); }); Route::get('newsroom/{year}/{month}/{slug}', 'NewsroomController@show'); Route::get('newsroom/archive', 'NewsroomController@archive');