|
12 | 12 | from werkzeug.exceptions import NotFound
|
13 | 13 |
|
14 | 14 | from flask_multipass.auth import AuthProvider
|
15 |
| -from flask_multipass.exceptions import GroupRetrievalFailed, IdentityRetrievalFailed, MultipassException |
| 15 | +from flask_multipass.exceptions import ( |
| 16 | + GroupRetrievalFailed, |
| 17 | + IdentityRetrievalFailed, |
| 18 | + InvalidCredentials, |
| 19 | + MultipassException, |
| 20 | + NoSuchUser, |
| 21 | +) |
16 | 22 | from flask_multipass.identity import IdentityProvider
|
17 | 23 | from flask_multipass.util import (
|
18 | 24 | get_canonical_provider_map,
|
@@ -72,6 +78,7 @@ def init_app(self, app):
|
72 | 78 | app.config.setdefault('MULTIPASS_FAILURE_CATEGORY', 'error')
|
73 | 79 | app.config.setdefault('MULTIPASS_ALL_MATCHING_IDENTITIES', False)
|
74 | 80 | app.config.setdefault('MULTIPASS_REQUIRE_IDENTITY', True)
|
| 81 | + app.config.setdefault('MULTIPASS_HIDE_NO_SUCH_USER', False) |
75 | 82 | with app.app_context():
|
76 | 83 | self._create_login_rule()
|
77 | 84 | state.auth_providers = ImmutableDict(self._create_providers('AUTH', AuthProvider))
|
@@ -528,6 +535,8 @@ def handle_login_form(self, provider, data):
|
528 | 535 | try:
|
529 | 536 | response = provider.process_local_login(data)
|
530 | 537 | except MultipassException as e:
|
| 538 | + if isinstance(e, NoSuchUser) and current_app.config['MULTIPASS_HIDE_NO_SUCH_USER']: |
| 539 | + e = InvalidCredentials(e.provider) |
531 | 540 | self.handle_auth_error(e)
|
532 | 541 | else:
|
533 | 542 | return response
|
|
0 commit comments