d8990228132322fbc4f2b7411916074fcfd4fadc
1 # -*- coding: utf-8 -*-
3 from django
.http
import HttpResponse
4 from django
.core
.urlresolvers
import reverse
5 from django
.contrib
.auth
import login
as auth_login
6 from django
.contrib
.auth
import logout
as auth_logout
7 from django
.template
import RequestContext
8 from django
.shortcuts
import render_to_response
, redirect
9 from forms
import RemoteUserForm
10 from settings
import SAML_REDIRECT_FIELD_NAME
,\
11 SAML_MELLON_LOGIN_URL
,\
12 SAML_MELLON_LOGOUT_URL
,\
13 SAML_CHANGE_PASSWORD_URL
,\
14 SAML_LOGOUT_REDIRECT_URL
17 def redirect_to_login(request
, redirect_to
=None, do_redirect
=True):
18 if redirect_to
is None:
19 redirect_to
= request
.get_full_path()
20 url
= "%s?%s=%s" % (SAML_MELLON_LOGIN_URL
,
21 SAML_REDIRECT_FIELD_NAME
,
30 def redirect_to_logout(request
, redirect_to
=None, do_redirect
=True):
31 if redirect_to
is None:
32 redirect_to
= SAML_LOGOUT_REDIRECT_URL
33 url
= "%s?%s=%s" % (reverse('local_logout'),
34 SAML_REDIRECT_FIELD_NAME
,
43 def login_form(request
, ):
45 Page de login en mode développement
46 permet de se connecter avec un user selon son username défini localemement
48 redirect_to
= request
.REQUEST
.get(SAML_REDIRECT_FIELD_NAME
, '/')
49 if request
.method
== "POST":
50 form
= RemoteUserForm(request
, request
.POST
)
52 auth_login(request
, form
.user
)
53 return redirect(redirect_to
)
55 form
= RemoteUserForm(request
)
58 return render_to_response("saml/login_form.html",
60 context_instance
=RequestContext(request
))
63 def local_logout(request
, ):
65 Logout pour SAML pour détruire la session Django
67 query_string
= request
.META
['QUERY_STRING']
69 logout_url
= "%s?%s" % (SAML_MELLON_LOGOUT_URL
, query_string
)
70 response
= HttpResponse(content
="", status
=303)
71 response
["Location"] = logout_url
75 def mellon_logout(request
, ):
77 Simule la vue qui de mellon qui initie le logout sur le l'IdP
79 redirect_to
= request
.REQUEST
.get(SAML_REDIRECT_FIELD_NAME
, '/')
80 return redirect(redirect_to
)
83 def password_change(request
, ):
84 return redirect(SAML_CHANGE_PASSWORD_URL
)