Source code for apps.managers.auth_mgr.views

"""Admin method for logging in as another user."""
from django.conf import settings

from django.contrib.auth import SESSION_KEY
from django.contrib.auth.decorators import user_passes_test
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse
from django.shortcuts import get_object_or_404, render_to_response
from django.template import RequestContext
from django.http import HttpResponseRedirect

from apps.managers.auth_mgr.forms import LoginForm


@user_passes_test(lambda u: u.is_staff, login_url="/account/cas/login")
[docs]def login_as(request, user_id): """Admin method for logging in as another user.""" # ref: http://copiousfreetime.blogspot.com/2006/12/django-su.html user = get_object_or_404(User, id=user_id) if user.is_active: request.session[SESSION_KEY] = user_id request.session['staff'] = True # Expire this session when the browser closes. request.session.set_expiry(0) return HttpResponseRedirect(reverse("home_index"))
[docs]def login(request): """Show the login page and process the login form.""" if request.method == "POST": form = LoginForm(request.POST) if form.login(request): return HttpResponseRedirect(reverse("home_index")) else: form = LoginForm() return render_to_response("account/login.html", {"form": form}, context_instance=RequestContext(request))
[docs]def logout(request): """ simply logout and redirect to landing page """ username = request.user.username from django.contrib import auth # Sets a logout variable so that we can capture it in the logger. request.session["logged-out-user"] = username destination = "landing" auth.logout(request) if settings.CAS_SERVER_URL: return HttpResponseRedirect(reverse("cas_logout") + "?next=" + reverse(destination)) else: return HttpResponseRedirect(reverse(destination))