Source code for provider.forms

from django import forms


[docs]class OAuthValidationError(Exception): """ Exception to throw inside :class:`OAuthForm` if any OAuth2 related errors are encountered such as invalid grant type, invalid client, etc. :attr:`OAuthValidationError` expects a dictionary outlining the OAuth error as its first argument when instantiating. :example: :: class GrantValidationForm(OAuthForm): grant_type = forms.CharField() def clean_grant(self): if not self.cleaned_data.get('grant_type') == 'code': raise OAuthValidationError({ 'error': 'invalid_grant', 'error_description': "%s is not a valid grant type" % ( self.cleaned_data.get('grant_type')) }) The different types of errors are outlined in :rfc:`4.2.2.1` and :rfc:`5.2`. """
[docs]class OAuthForm(forms.Form): """ Form class that creates shallow error dicts and exists early when a :class:`OAuthValidationError` is raised. The shallow error dict is reused when returning error responses to the client. The different types of errors are outlined in :rfc:`4.2.2.1` and :rfc:`5.2`. """ def __init__(self, *args, **kwargs): self.client = kwargs.pop('client', None) super(OAuthForm, self).__init__(*args, **kwargs) def _clean_fields(self): """ Overriding the default cleaning behaviour to exit early on errors instead of validating each field. """ try: super(OAuthForm, self)._clean_fields() except OAuthValidationError, e: self._errors.update(e.args[0]) def _clean_form(self): """ Overriding the default cleaning behaviour for a shallow error dict. """ try: super(OAuthForm, self)._clean_form() except OAuthValidationError, e: self._errors.update(e.args[0])