From 7ba6e28966dc97d20e7e9379c56d723f789cd6af Mon Sep 17 00:00:00 2001 From: gfawcett Date: Fri, 3 Apr 2009 23:44:28 +0000 Subject: [PATCH] on visit to restricted URL, show login form and redirect to destination afterward. git-svn-id: svn://svn.open-ils.org/ILS-Contrib/servres/trunk@254 6d9bc8c9-1ec2-4278-b937-99fde70a366f --- conifer/syrup/views.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/conifer/syrup/views.py b/conifer/syrup/views.py index a471a32..d992eaf 100644 --- a/conifer/syrup/views.py +++ b/conifer/syrup/views.py @@ -129,11 +129,16 @@ def _fast_user_membership_query(user_id, course_id, where=None): allowed = bool(res[0][0]) return allowed -def _access_denied(message): - return g.render('simplemessage.xhtml', - title=_(_('Access denied.')), - content=message, - _django_type=HttpResponseForbidden) +def _access_denied(request, message): + if request.user.is_anonymous(): + # then take them to login screen.... + dest = '/accounts/login/?next=' + request.environ['PATH_INFO'] + return HttpResponseRedirect(dest) + else: + return g.render('simplemessage.xhtml', + title=_(_('Access denied.')), + content=message, + _django_type=HttpResponseForbidden) # todo, these decorators could be refactored. @@ -147,7 +152,7 @@ def instructors_only(handler): if allowed: return handler(request, course_id, *args, **kwargs) else: - return _access_denied(_('Only instructors are allowed here.')) + return _access_denied(request, _('Only instructors are allowed here.')) return hdlr # decorator @@ -168,7 +173,7 @@ def members_only(handler): msg = _('Please log in, so that you can enter this site.') else: msg = _('Only course members are allowed here.') - return _access_denied(msg) + return _access_denied(request, msg) return hdlr # decorator @@ -180,7 +185,7 @@ def admin_only(handler): if allowed: return handler(request, *args, **kwargs) else: - return _access_denied(_('Only administrators are allowed here.')) + return _access_denied(request, _('Only administrators are allowed here.')) return hdlr #decorator -- 2.11.0