find-links = http://pypi.auf.org/simple/auf.recipe.django/
http://pypi.auf.org/simple/auf.django.skin/
http://pypi.auf.org/simple/auf.django.auth/
+ http://pypi.auf.org/simple/auf.django.saml/
http://pypi.auf.org/simple/auf.django.workflow/
http://pypi.auf.org/simple/auf.django.admingroup/
http://pypi.auf.org/simple/auf.django.permissions/
http://pypi.auf.org/simple/auf.django.references/
http://pypi.auf.org/simple/django-alphafilter/
http://pypi.auf.org/simple/odsgen/
+
develop = src/qbe
src/auf.django.metadata
+
eggs =
django
south
django-urldecorators
auf.django.admingroup
auf.django.auth
+ auf.django.saml
auf.django.emploi
auf.django.metadata
auf.django.permissions
# -*- coding: utf-8 -*-
import datetime
+from auf.django.saml.settings import SAML_REDIRECT_FIELD_NAME
from django.contrib.auth.models import User, Group
from project import groups
from auf.django.references import models as ref
def _test_acces_ko(self, url):
response = self.client.get(url, follow=True)
- is_ko = response.status_code in (403, 404) or 'next' in response.context
+ is_ko = response.status_code in (403, 404) or \
+ 'next' in response.context or \
+ SAML_REDIRECT_FIELD_NAME in response.context['request'].GET.keys()
self.assertEqual(is_ko, True)
def _test_anonyme(self):
SESSION_SAVE_EVERY_REQUEST = True
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
+PROJECT_ROOT = os.path.dirname(__file__)
+SITE_ROOT = os.path.dirname(PROJECT_ROOT)
+
# Absolute path to the directory that holds media.
# Example: "/home/media/media.lawrence.com/"
-MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'media')
-PRIVE_MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'media_prive')
+MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media')
+PRIVE_MEDIA_ROOT = os.path.join(PROJECT_ROOT, 'media_prive')
STATICFILES_DIRS = (
- os.path.join(os.path.dirname(__file__), 'assets'),
+ os.path.join(PROJECT_ROOT, 'assets'),
)
-STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'static')
+STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
STATIC_URL = '/static/'
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
+ 'auf.django.saml.middleware.SPMiddleware',
'django.middleware.doc.XViewMiddleware',
'reversion.middleware.RevisionMiddleware',
)
'auf.django.workflow',
'auf.django.permissions',
'auf.django.emploi',
+ 'auf.django.saml',
'admin_tools',
'admin_tools.theming',
'admin_tools.menu',
)
AUTHENTICATION_BACKENDS = (
- 'auf.django.auth.backends.CascadeBackend',
+ 'auf.django.saml.backends.SPBackend',
'auf.django.permissions.backends.AuthenticationBackend',
)
-LOGIN_URL = "/connexion"
-LOGIN_REDIRECT_URL = "/"
TEMPLATE_DIRS = (
os.path.join(os.path.dirname(__file__), "templates"),
+{% load saml %}
+
<ul>
{% if user.is_authenticated %}
- <li class="username">{{ user }}</li>
+ <li class="username"><img src="{{ STATIC_URL }}/img/idauf_16.png" /> {{ user }}</li>
{% if perms.recrutement or user_in_dae_groupes or perms.rh %}
<li><a href="{% url admin:index %}">Administration</a></li>
{% endif %}
- <li><a href="{% url django.contrib.auth.views.logout %}?next=/">Déconnexion</a></li>
- {% else %}
- <li><a href="{% url django.contrib.auth.views.login %}?next={{request.path}}">Connexion</a></li>
+ <li><a href="{% mellon_logout_url %}">Déconnexion</a></li>
{% endif %}
</ul>
{% block main %}
-{% if not request.user.is_authenticated %}
-<h1>Connexion</h1>
+{% for k,v in meta.items %}
+<p>{{ k }} : {{ v }}</p>
+{% endfor %}
- <form method="post" action="{% url django.contrib.auth.views.login %}">{% csrf_token %}
- <table>
- {{ form.as_table }}
- </table>
- <input type="submit" value="Se connecter" />
- <input type="hidden" name="next" value="{{ next }}" />
- </form>
+<h1>Vos droits d'accès</h1>
+{% if request.user.groups.all %}
+ <p>Vous faîtes partie des groupes suivants : </p>
+ <ul>
+ {% for g in request.user.groups.all %}
+ <li>{{ g.name }}</li>
+ {% endfor %}
+ </ul>
{% else %}
- <h1>Vos droits d'accès</h1>
- {% if request.user.groups.all %}
- <p>Vous faîtes partie des groupes suivants : </p>
- <ul>
- {% for g in request.user.groups.all %}
- <li>{{ g.name }}</li>
- {% endfor %}
- </ul>
- {% else %}
- <p>
- Vous n'avez actuellement aucun droit dans ce système.<br />
- Contactez la DRH si vous croyez qu'il s'agit d'une erreur.
- </p>
- {% endif %}
+ <p>
+ Vous n'avez actuellement aucun droit dans ce système.<br />
+ Contactez la DRH si vous croyez qu'il s'agit d'une erreur.
+ </p>
{% endif %}
{% endblock %}
from urldecorators.defaults import patterns, include, url
from urldecorators.defaults import handler500 # NOQA
from auf.django import permissions
+from auf.django.saml import settings as saml_settings
from project.monkey import patch_ajax_selects
patch_ajax_selects()
urlpatterns = patterns(
'',
- url(r'^$', 'project.views.index', name='index'),
- url(r'^admin_tools/', include('admin_tools.urls')),
+ url(r'^$', 'project.views.index', name='index',
+ decorators=['auf.django.saml.decorators.login_required']),
+
+ url(r'^', include('auf.django.saml.urls')),
+
+ url(r'^admin_tools/', include('admin_tools.urls'),
+ decorators=['auf.django.saml.decorators.login_required']),
(r'^admin/', include(admin.site.urls)),
+
url(r'^api/(?P<method>[a-z_-]+)/(?P<offre_id>\d+)/$',
'project.recrutement.api.api', name='recrutement_api'),
url(r'^api/(?P<method>[a-z_-]+)/$', 'project.recrutement.api.api',
name='recrutement_api'),
- (r'^connexion/$', 'django.contrib.auth.views.login'),
- (r'^deconnexion/$', 'django.contrib.auth.views.logout'),
- #url(r'^private_files/', include('private_files.urls')),
- url(r'^captcha/', include('captcha.urls')),
- (r'^ajax_select/', include('ajax_select.urls')),
- (r'^tinymce/', include('tinymce.urls')),
- url(r'^prive/(?P<filename>.*)$', 'project.views.piece'),
+
+ url(r'^captcha/', include('captcha.urls'),
+ decorators=['auf.django.saml.decorators.login_required']),
+ url(r'^ajax_select/', include('ajax_select.urls'),
+ decorators=['auf.django.saml.decorators.login_required']),
+ url(r'^tinymce/', include('tinymce.urls'),
+ decorators=['auf.django.saml.decorators.login_required']),
+ url(r'^prive/(?P<filename>.*)$', 'project.views.piece',
+ decorators=['auf.django.saml.decorators.login_required']),
# apps
url(r'^dae/', include('project.dae.urls'),
- decorators=['django.contrib.auth.decorators.login_required']),
+ decorators=['auf.django.saml.decorators.login_required']),
url(r'^recrutement/', include('project.recrutement.urls'),
- decorators=['django.contrib.auth.decorators.login_required']),
+ decorators=['auf.django.saml.decorators.login_required']),
url(r'^rh/', include('project.rh.urls'),
- decorators=['django.contrib.auth.decorators.login_required']),
+ decorators=['auf.django.saml.decorators.login_required']),
- url(r'^qbe/', include('django_qbe.urls')),
+ url(r'^qbe/', include('django_qbe.urls'),
+ decorators=['auf.django.saml.decorators.login_required']),
)
+
+if not saml_settings.SAML_AUTH:
+ urlpatterns += patterns(
+ '',
+ (r'^', include('auf.django.saml.mellon_urls')),
+ )
from sendfile import sendfile
from django.conf import settings
+from django.shortcuts import render
from django.contrib.auth.decorators import login_required
-from django.contrib.auth.views import login
from django.http import Http404
from project.decorators import redirect_interdiction
from project.dae import models as dae_models
+@login_required
def index(request):
- return login(request, template_name='index.html')
+ c = {}
+ return render(request, 'index.html', c)
@login_required
# Added by Buildout Versions at 2012-08-23 09:21:24.235070
raven = 2.0.4
+
+# Added by Buildout Versions at 2012-09-06 10:52:35.715101
+auf.django.saml = 1.6