from django.core.exceptions import ImproperlyConfigured from django.http import HttpResponseRedirect from django.contrib.auth.decorators import login_required from django.contrib.auth import REDIRECT_FIELD_NAME from . import app_settings, utils, adapter @login_required def ltpa(request): '''Ask for authentication then generate a cookie''' next_url = request.REQUEST[REDIRECT_FIELD_NAME] response = HttpResponseRedirect(next_url) if app_settings.TOKEN_SECRET is None: raise ImproperlyConfigured('missing TOKEN_SECRET') secret = utils.decode_secret(app_settings.TOKEN_SECRET) user = adapter.get_adapter().get_username(request) token = utils.generate_domino_ltpa_token(user, secret, duration=app_settings.TOKEN_DURATION) domain = app_settings.COOKIE_DOMAIN or request.META['HTTP_HOST'].split(':')[0] response.set_cookie(app_settings.COOKIE_NAME, token, domain=domain, httponly=app_settings.COOKIE_HTTP_ONLY) return response