23 lines
986 B
Python
23 lines
986 B
Python
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
|