From: Alex Kamedov Date: Wed, 27 Apr 2011 16:13:24 +0000 (+0600) Subject: Merge branch 'develop' X-Git-Tag: 22.4~32^2~18 X-Git-Url: https://git.mdrn.pl/django-cas-provider.git/commitdiff_plain/0ea3daef05a6126e6429d37d9706aef785104802?hp=fdd4b59a0a825cf8fa38e94123d118b57707b067 Merge branch 'develop' --- diff --git a/.gitignore b/.gitignore index 0d20b64..4030171 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,9 @@ +# Python garbage *.pyc +*.egg-info + +# Mac OS X garbage +.DS_Store + +# PyDev garbage +.tmp* diff --git a/README.rst b/README.rst index 0ef1742..8bbe307 100644 --- a/README.rst +++ b/README.rst @@ -5,26 +5,21 @@ django-cas-provider OVERVIEW ========= -django-cas-provider is a provider for the `Central Authentication -Service `_. It supports CAS version 1.0. It allows -remote services to authenticate users for the purposes of -Single Sign-On (SSO). For example, a user logs into a CAS server -(provided by django-cas-provider) and can then access other services -(such as email, calendar, etc) without re-entering her password for -each service. For more details, see the `CAS wiki `_ -and `Single Sign-On on Wikipedia `_. +django-cas-provider is a provider for the `Central Authentication Service `_. It supports CAS version 1.0 and parts of CAS version 2.0 protocol. It allows remote services to authenticate users for the purposes of Single Sign-On (SSO). For example, a user logs into a CAS server +(provided by django-cas-provider) and can then access other services (such as email, calendar, etc) without re-entering her password for each service. For more details, see the `CAS wiki `_ and `Single Sign-On on Wikipedia `_. INSTALLATION ============= -To install, run the following command from this directory: +To install, run the following command from this directory:: - ``python setup.py install`` + python setup.py install -Or, put cas_provider somewhere on your Python path. +Or, put `cas_provider` somewhere on your Python path. If you want use CAS v.2 protocol or above, you must install `lxml` package to correct work. + USAGE ====== @@ -47,6 +42,10 @@ used to format custom user attributes. This package provide module `attribute_fo with formatters for common used formats. Available formats styles are `RubyCAS`, `Jasig` and `Name-Value. Default is Jasig style. See module source code for more details. +CAS_AUTO_REDIRECT_AFTER_LOGOUT - If False (default behavior, specified in CAS protocol) +after successful logout notification page will be shown. If it's True, after successful logout will +be auto redirect back to service without any notification. + PROTOCOL DOCUMENTATION ===================== @@ -120,7 +119,7 @@ Attribute formatter callback takes two arguments: * `attrs` - dictionary with user attributes received from callback specified in CAS_CUSTOM_ATTRIBUTES_CALLBACK in project settings. -Example of generated XML below: +Example of generated XML below:: @@ -133,7 +132,7 @@ Example of generated XML below: -* Name-Value style (provided in `cas_provider.attribute_formatters.name_value`): +* Name-Value style (provided in `cas_provider.attribute_formatters.name_value`):: @@ -142,7 +141,7 @@ Example of generated XML below: -* Jasig Style attributes (provided in `cas_provider.attribute_formatters.jasig`): +* Jasig Style attributes (provided in `cas_provider.attribute_formatters.jasig`):: Jasig @@ -153,7 +152,7 @@ Example of generated XML below: -* RubyCAS style (provided in `cas_provider.attribute_formatters.ruby_cas`): +* RubyCAS style (provided in `cas_provider.attribute_formatters.ruby_cas`):: RubyCAS Smith diff --git a/cas_provider/__init__.py b/cas_provider/__init__.py index 449c7b6..d5a3520 100644 --- a/cas_provider/__init__.py +++ b/cas_provider/__init__.py @@ -6,6 +6,7 @@ _DEFAULTS = { 'CAS_TICKET_EXPIRATION': 5, # In minutes 'CAS_CUSTOM_ATTRIBUTES_CALLBACK': None, 'CAS_CUSTOM_ATTRIBUTES_FORMATER': 'cas_provider.attribute_formatters.jasig', + 'CAS_AUTO_REDIRECT_AFTER_LOGOUT': False, } for key, value in _DEFAULTS.iteritems(): diff --git a/cas_provider/admin.py b/cas_provider/admin.py index b240d1f..f5058a4 100644 --- a/cas_provider/admin.py +++ b/cas_provider/admin.py @@ -1,6 +1,7 @@ from django.contrib import admin from models import * + class ServiceTicketAdmin(admin.ModelAdmin): list_display = ('user', 'service', 'created') list_filter = ('created',) diff --git a/cas_provider/views.py b/cas_provider/views.py index 4a7e9b8..c9a44db 100644 --- a/cas_provider/views.py +++ b/cas_provider/views.py @@ -79,9 +79,13 @@ def validate(request): return HttpResponse("no\n\n") -def logout(request, template_name='cas/logout.html'): +def logout(request, template_name='cas/logout.html', \ + auto_redirect=settings.CAS_AUTO_REDIRECT_AFTER_LOGOUT): url = request.GET.get('url', None) - auth_logout(request) + if request.user.is_authenticated(): + auth_logout(request) + if url and auto_redirect: + return HttpResponseRedirect(url) return render_to_response(template_name, {'url': url}, \ context_instance=RequestContext(request)) diff --git a/setup.py b/setup.py index 2d65aaf..06e5d4a 100644 --- a/setup.py +++ b/setup.py @@ -9,6 +9,7 @@ setup( author_email='chris@nitron.org', url='http://nitron.org/', packages=find_packages(), + include_package_data=True, zip_safe=False, install_requires=['setuptools'], )