Source code for fyt.users.middleware

from urllib.parse import urlencode

from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.contrib import auth


[docs]class UserEmailRequiredMiddleware(object): """ If an authenticated user does not have an email set, have them to enter it manually. A user will have a blank email if :meth:`~fyt.users.models.DartmouthUserManager.create_user` fails to lookup the email. """ def process_request(self, request): update_url = reverse('users:update_email') if request.path == update_url: # avoid redirect loop return None if request.path == reverse('users:logout'): # allow people to logout without updating email return None if request.user.is_authenticated() and not request.user.email: params = urlencode({auth.REDIRECT_FIELD_NAME: request.get_full_path()}) return HttpResponseRedirect(update_url + '?' + params)