Fixed issue where SAML login not notifiy on existing user

Added testing to cover

Fixes #2263
This commit is contained in:
Dan Brown 2020-09-26 16:43:06 +01:00
parent 328d2514c4
commit 53ec794e53
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
2 changed files with 28 additions and 1 deletions

View File

@ -57,7 +57,7 @@ class RegistrationService
// Ensure user does not already exist
$alreadyUser = !is_null($this->userRepo->getByEmail($userEmail));
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

View File

@ -319,6 +319,33 @@ class Saml2Test extends TestCase
$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)
{
return $this->withGlobal($_GET, $options, $callback);