Skip to content
This repository has been archived by the owner on Mar 7, 2023. It is now read-only.

Commit

Permalink
Minor bugfix + some refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
jackieleng committed Jul 5, 2016
1 parent 6ca6d61 commit 12c27d3
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 47 deletions.
2 changes: 1 addition & 1 deletion lizard_auth_server/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ def __init__(self, *args, **kwargs):
self.site = Site.objects.get(sso_key=self.data['key'])
except Site.DoesNotExist:
self.init_errors += 1
self.init_error_msg.append('Invalid SSO key.')
self.init_error_msgs.append('Invalid SSO key.')
return
# The key for decoding the JWTField must be set via this way
self.fields['message'].secret_key = self.site.sso_secret
Expand Down
26 changes: 4 additions & 22 deletions lizard_auth_server/views_api_v2.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
from lizard_auth_server.views_sso import (
ProcessGetFormView,
domain_match,
FormInvalidMixin,
)
from lizard_auth_server.views import ErrorMessageResponse
from lizard_auth_server.models import Profile
Expand Down Expand Up @@ -95,15 +96,7 @@ def construct_user_data(user=None, profile=None):
return data


def form_invalid(request, form):
logger.error('Error while decrypting form: %s',
form.errors.as_text())
return ErrorMessageResponse(request,
_('Communication error.'),
400)


class AuthorizeView(ProcessGetFormView):
class AuthorizeView(FormInvalidMixin, ProcessGetFormView):
form_class = forms.JWTDecryptForm

def form_valid(self, form):
Expand All @@ -114,11 +107,6 @@ def form_valid(self, form):
return self.form_valid_unauthenticated(
form.cleaned_data.get('message', {}).get('force_sso_login', True))

def form_invalid(self, form):
# return HttpResponse("invalid %s, errors %s" % (json.dumps(
# form.cleaned_data), json.dumps(form.errors)))
return form_invalid(self.request, form)

def form_valid_authenticated(self):
"""
Called when login succeeded.
Expand Down Expand Up @@ -204,7 +192,7 @@ def access_denied(self):
)


class LogoutView(ProcessGetFormView):
class LogoutView(FormInvalidMixin, ProcessGetFormView):
"""
View for logging out.
"""
Expand All @@ -227,11 +215,8 @@ def form_valid(self, form):
# the next parameter?
return HttpResponseRedirect(url)

def form_invalid(self, form):
return form_invalid(self.request, form)


class LogoutRedirectView(ProcessGetFormView):
class LogoutRedirectView(FormInvalidMixin, ProcessGetFormView):
"""
View that redirects the user to the logout page of the portal.
"""
Expand All @@ -240,6 +225,3 @@ class LogoutRedirectView(ProcessGetFormView):
def form_valid(self, form):
url = urljoin(get_domain(form), 'sso/local_logout/')
return HttpResponseRedirect(url)

def form_invalid(self, form):
return form_invalid(self.request, form)
37 changes: 13 additions & 24 deletions lizard_auth_server/views_sso.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,17 @@ def get(self, request, *args, **kwargs):
return self.form_invalid(form)


class PortalActionView(ProcessGetFormView):
class FormInvalidMixin(object):
"""Provides a default error message for form_invalid"""
def form_invalid(self, form):
logger.error('Error while decrypting form: %s',
form.errors.as_text())
return ErrorMessageResponse(self.request,
_('Communication error.'),
400)


class PortalActionView(FormInvalidMixin, ProcessGetFormView):
"""
View that allows portals to do some miscellaneous actions,
like logging out.
Expand All @@ -82,15 +92,8 @@ def form_valid(self, form):
return HttpResponseRedirect(url)
return HttpResponseBadRequest('Unknown action')

def form_invalid(self, form):
logger.error('Error while decrypting form: %s',
form.errors.as_text())
return ErrorMessageResponse(self.request,
_('Communication error.'),
400)


class LogoutRedirectView(ProcessGetFormView):
class LogoutRedirectView(FormInvalidMixin, ProcessGetFormView):
"""
View that redirects the user to the logout page of the portal.
"""
Expand All @@ -103,13 +106,6 @@ def form_valid(self, form):
else:
return HttpResponseBadRequest('Unknown action')

def form_invalid(self, form):
logger.error('Error while decrypting form: %s',
form.errors.as_text())
return ErrorMessageResponse(self.request,
_('Communication error.'),
400)


class RequestTokenView(ProcessGetFormView):
"""
Expand All @@ -133,7 +129,7 @@ def form_invalid(self, form):
return HttpResponseBadRequest('Bad signature')


class AuthorizeView(ProcessGetFormView):
class AuthorizeView(FormInvalidMixin, ProcessGetFormView):
"""
The portal get's redirected to this view with the `request_token` obtained
by the Request Token Request by the portal application beforehand.
Expand Down Expand Up @@ -161,13 +157,6 @@ def form_valid(self, form):
form.cleaned_data.get('force_sso_login', True))
return self.token_timeout()

def form_invalid(self, form):
logger.error('Error while decrypting form: %s',
form.errors.as_text())
return ErrorMessageResponse(self.request,
_('Communication error.'),
400)

def check_token_timeout(self):
delta = datetime.datetime.now(tz=pytz.UTC) - self.token.created
return delta <= TOKEN_TIMEOUT
Expand Down

0 comments on commit 12c27d3

Please sign in to comment.