Merge branch 'nesges/development' into development

This commit is contained in:
Dan Brown 2024-05-04 14:00:40 +01:00
commit dd251d9e62
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
4 changed files with 46 additions and 16 deletions

View File

@ -15,24 +15,13 @@ use Illuminate\Validation\Rules\Password;
class RegisterController extends Controller
{
protected SocialDriverManager $socialDriverManager;
protected RegistrationService $registrationService;
protected LoginService $loginService;
/**
* Create a new controller instance.
*/
public function __construct(
SocialDriverManager $socialDriverManager,
RegistrationService $registrationService,
LoginService $loginService
protected SocialDriverManager $socialDriverManager,
protected RegistrationService $registrationService,
protected LoginService $loginService
) {
$this->middleware('guest');
$this->middleware('guard:standard');
$this->socialDriverManager = $socialDriverManager;
$this->registrationService = $registrationService;
$this->loginService = $loginService;
}
/**
@ -87,6 +76,8 @@ class RegisterController extends Controller
'name' => ['required', 'min:2', 'max:100'],
'email' => ['required', 'email', 'max:255', 'unique:users'],
'password' => ['required', Password::default()],
// Basic honey for bots that must not be filled in
'username' => ['prohibited'],
]);
}
}

View File

@ -389,6 +389,20 @@ input[type=color] {
}
}
.form-group.ambrosia-container, .form-group.ambrosia-container * {
position:absolute !important;
height:1px !important;
width:1px !important;
margin:-1px !important;
padding:0 !important;
background:transparent !important;
color:transparent !important;
border:none !important;
overflow: hidden !important;
clip: rect(0,0,0,0) !important;
white-space: nowrap !important;
}
.title-input input[type="text"] {
display: block;
width: 100%;
@ -538,4 +552,4 @@ input.shortcut-input {
width: auto;
max-width: 120px;
height: auto;
}
}

View File

@ -13,8 +13,14 @@
<form action="{{ url("/register") }}" method="POST" class="mt-l stretch-inputs">
{!! csrf_field() !!}
{{-- Simple honeypot field --}}
<div class="form-group ambrosia-container" aria-hidden="true">
<label for="username">{{ trans('auth.name') }}</label>
@include('form.text', ['name' => 'username'])
</div>
<div class="form-group">
<label for="email">{{ trans('auth.name') }}</label>
<label for="name">{{ trans('auth.name') }}</label>
@include('form.text', ['name' => 'name'])
</div>

View File

@ -184,4 +184,23 @@ class RegistrationTest extends TestCase
$resp->assertSee('The email must be a valid email address.');
$resp->assertSee('The password must be at least 8 characters.');
}
public function test_registration_simple_honeypot_active()
{
$this->setSettings(['registration-enabled' => 'true']);
$resp = $this->get('/register');
$this->withHtml($resp)->assertElementExists('form input[name="username"]');
$resp = $this->post('/register', [
'name' => 'Barry',
'email' => 'barrybot@example.com',
'password' => 'barryIsTheBestBot',
'username' => 'MyUsername'
]);
$resp->assertRedirect('/register');
$resp = $this->followRedirects($resp);
$this->withHtml($resp)->assertElementExists('form input[name="username"].text-neg');
}
}