mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-08-27 12:41:58 +00:00
Fixed issue where SAML login not notifiy on existing user
Added testing to cover Fixes #2263
This commit is contained in:
parent
328d2514c4
commit
53ec794e53
@ -57,7 +57,7 @@ class RegistrationService
|
|||||||
// Ensure user does not already exist
|
// Ensure user does not already exist
|
||||||
$alreadyUser = !is_null($this->userRepo->getByEmail($userEmail));
|
$alreadyUser = !is_null($this->userRepo->getByEmail($userEmail));
|
||||||
if ($alreadyUser) {
|
if ($alreadyUser) {
|
||||||
throw new UserRegistrationException(trans('errors.error_user_exists_different_creds', ['email' => $userEmail]));
|
throw new UserRegistrationException(trans('errors.error_user_exists_different_creds', ['email' => $userEmail]), '/login');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the user
|
// Create the user
|
||||||
|
@ -319,6 +319,33 @@ class Saml2Test extends TestCase
|
|||||||
$homeGet->assertRedirect('/register/confirm/awaiting');
|
$homeGet->assertRedirect('/register/confirm/awaiting');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function test_login_where_existing_non_saml_user_shows_warning()
|
||||||
|
{
|
||||||
|
$this->post('/saml2/login');
|
||||||
|
config()->set(['saml2.onelogin.strict' => false]);
|
||||||
|
|
||||||
|
// Make the user pre-existing in DB with different auth_id
|
||||||
|
User::query()->forceCreate([
|
||||||
|
'email' => 'user@example.com',
|
||||||
|
'external_auth_id' => 'old_system_user_id',
|
||||||
|
'email_confirmed' => false,
|
||||||
|
'name' => 'Barry Scott'
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->withPost(['SAMLResponse' => $this->acsPostData], function () {
|
||||||
|
$acsPost = $this->post('/saml2/acs');
|
||||||
|
$acsPost->assertRedirect('/login');
|
||||||
|
$this->assertFalse($this->isAuthenticated());
|
||||||
|
$this->assertDatabaseHas('users', [
|
||||||
|
'email' => 'user@example.com',
|
||||||
|
'external_auth_id' => 'old_system_user_id',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$loginGet = $this->get('/login');
|
||||||
|
$loginGet->assertSee("A user with the email user@example.com already exists but with different credentials");
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
protected function withGet(array $options, callable $callback)
|
protected function withGet(array $options, callable $callback)
|
||||||
{
|
{
|
||||||
return $this->withGlobal($_GET, $options, $callback);
|
return $this->withGlobal($_GET, $options, $callback);
|
||||||
|
Loading…
Reference in New Issue
Block a user