41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
|
from django.contrib import messages
|
||
|
from django.contrib.auth.signals import user_logged_in
|
||
|
from django.core.urlresolvers import reverse
|
||
|
from django.dispatch import receiver
|
||
|
from django.utils.safestring import mark_safe
|
||
|
from django.utils.translation import ugettext as _
|
||
|
|
||
|
from .utils import get_kfet_generic_user
|
||
|
|
||
|
|
||
|
@receiver(user_logged_in)
|
||
|
def suggest_auth_generic(sender, request, user, **kwargs):
|
||
|
"""
|
||
|
Suggest logged in user to continue as the kfet generic user.
|
||
|
|
||
|
Message is only added if the following conditions are met:
|
||
|
- the next page (where user is going to be redirected due to successful
|
||
|
authentication) is related to kfet, i.e. 'k-fet' is in its url.
|
||
|
- logged in user is a kfet staff member (except the generic user).
|
||
|
"""
|
||
|
# Filter against the next page.
|
||
|
if not(hasattr(request, 'GET') and 'next' in request.GET):
|
||
|
return
|
||
|
|
||
|
next_page = request.GET['next']
|
||
|
generic_url = reverse('kfet.login.generic')
|
||
|
|
||
|
if not('k-fet' in next_page and not next_page.startswith(generic_url)):
|
||
|
return
|
||
|
|
||
|
# Filter against the logged in user.
|
||
|
if not(user.has_perm('kfet.is_team') and user != get_kfet_generic_user()):
|
||
|
return
|
||
|
|
||
|
# Seems legit to add message.
|
||
|
text = _("K-Fêt — Ouvrir une session partagée ?")
|
||
|
messages.info(request, mark_safe(
|
||
|
'<a href="#" data-url="{}" onclick="submit_url(this)">{}</a>'
|
||
|
.format(generic_url, text)
|
||
|
))
|