feat: allow invited users to register

Signed-off-by: Miguel Nogueira <me@nogueira.codes>
This commit is contained in:
2025-08-07 19:50:27 +01:00
parent f7c62a4ac2
commit 6739fde41a
2 changed files with 30 additions and 2 deletions

View File

@@ -28,6 +28,7 @@ use App\User;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Session;
class RegisterController extends Controller
{
@@ -71,6 +72,10 @@ class RegisterController extends Controller
{
$password = ['required', 'string', 'confirmed'];
$signupEnabled = Options::getOption('enable_registrations');
$signupOverride = Session::has('ALLOW_REGISTRATION_OVERRIDE') && Session::get('ALLOW_REGISTRATION_OVERRIDE') === true;
$signupOverrideEmail = Session::has('REGISTRATION_OVERRIDE_EMAIL') ? Session::get('REGISTRATION_OVERRIDE_EMAIL') : null;
switch (Options::getOption('pw_security_policy')) { // this could be better structured, switch doesn't feel right
case 'off':
$password = ['required', 'string', 'confirmed'];
@@ -99,7 +104,15 @@ class RegisterController extends Controller
'dob.required' => __('Please enter your date of birth.'),
'uuid.required' => __('Please enter a valid (and Premium) Minecraft username! We do not support cracked users.'),
'acceptTerms.required' => __('Please accept the Community Guidelines, Terms of Service and Privacy Policy to continue.'),
]);
])->after(function (\Illuminate\Validation\Validator $validator) use ($signupEnabled, $signupOverride, $signupOverrideEmail) {
$email = $validator->getData()['email'];
$validator->errors()->addIf(!$signupEnabled && !$signupOverride, 'signup', __('We\'re sorry, but new sign ups are currently closed and invite-only.'));
$validator->errors()->addIf($signupOverride && $email !== $signupOverrideEmail, 'email', 'You must sign up with the email address you were invited with.');
});
}
/**
@@ -124,6 +137,13 @@ class RegisterController extends Controller
$user->assignRole('user');
if (Session::get('ALLOW_REGISTRATION_OVERRIDE')) {
Session::forget([
'ALLOW_REGISTRATION_OVERRIDE',
'REGISTRATION_OVERRIDE_EMAIL'
]);
}
return $user;
}
}