auth2_fc: display an error message on misc error code (#38748)

An error message is displayed after receiving an error code from FC
different from access_denied. The same error code is logged at level
ERROR instead of DEBUG.
This commit is contained in:
Benjamin Dauvergne 2020-01-03 11:40:19 +01:00
parent 811f473490
commit c561651d4f
1 changed files with 9 additions and 8 deletions

View File

@ -250,13 +250,14 @@ class FcOAuthSessionViewMixin(LoggerMixin):
return data
def authorization_error(self, request, *args, **kwargs):
if request.method == 'POST':
error = request.POST.get('error')
else:
error = request.GET.get('error')
if error == 'access_denied':
messages.warning(request, _('You refused the connection.'))
self.logger.debug('authorization_error %r', request.GET)
error = request.GET.get('error')
error_description = request.GET.get('error_description')
msg = _('Unable to connect to FranceConnect: "%s".') % error
if error_description:
msg += _('("%s")') % error_description
messages.error(request, msg)
self.logger.warning('auth_fc: authorization failed with error=%r error_description=%r',
error, error_description or '')
return self.redirect(request)
def dispatch(self, request, *args, **kwargs):
@ -276,7 +277,7 @@ class FcOAuthSessionViewMixin(LoggerMixin):
if 'error' in self.token:
msg = 'token request failed : {}'.format(self.token)
self.logger.warning(msg)
messages.warning(request, _('Unable to connect to FranceConnect.'))
messages.warning(request, _('Unable to connect to FranceConnect: "%s".') % self.token['error'])
return self.redirect(request)
key = app_settings.client_secret
# duck-type unicode/Py3 strings