msp: use all graphical and html resources from MSP

- 3 new views: link management, unlinking confirmation, unlinking done.
- corrections to close-popup-redirect.html to work with URL passed
	through template variables and not the query string
This commit is contained in:
Benjamin Dauvergne 2014-01-08 01:18:45 +01:00
parent 55eb3dbaad
commit 74159aaf51
10 changed files with 269 additions and 91 deletions

View File

@ -50,6 +50,10 @@ class AppSettings(object):
def client_credentials(self):
return self._setting('CLIENT_CREDENTIALS', ())
@property
def more_url(self):
return self._setting('MORE_URL', 'https://mon.service-public.fr/')
app_settings = AppSettings('MSP_')
app_settings.__name__ = __name__

View File

@ -1,3 +1,7 @@
#msp-linking {
margin: 0px 100px;
}
.msp{
margin:0 auto 0 auto;
text-align:left;
@ -7,6 +11,9 @@
color:#2B2A91;
font-family:arial, verdana, sans-serif;
}
.msp.connecting {
width: 35em;
}
.msp *{
font-family:arial, verdana, sans-serif;
font-size:100%;
@ -337,4 +344,4 @@
.msp_esp_logos li{
display:inline;
margin:0 8px 0 3px;
}
}

View File

@ -9,7 +9,7 @@
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}
var next = getParameterByName('next');
window.opener.location.href = next || '/';
window.opener.location.href = {% if redirect_to %}"{{ redirect_to }}" {% else %}next || '/'{% endif %};
window.close();
</script>
</head>

View File

@ -0,0 +1,48 @@
{% extends "base.html"%}
{% load sekizai_tags %}
{% load staticfiles %}
{% block content %}
{% addtoblock "css" %}<link rel="stylesheet" type="text/css" href="{% static 'msp/css/screen.msp.css' %}"></link>{% endaddtoblock %}
{% addtoblock "js" %}<script type="text/javascript" src="{% static "msp/js/domready.js" %}"></script>{% endaddtoblock %}
{% addtoblock "js" %}<script type="text/javascript" src="{% static "msp/js/oauth.js" %}"></script>{% endaddtoblock %}
<div id="msp-confirm-unlink">
<div class="msp">
<div class="cadre">
<div class="bordure">
<h1>Gestion des liaisons&nbsp;: confirmation de suppression</h1>
<p>
<small><a href="{{ done }}" class="roll">Retour</a></small>
</p>
<div class="contenu">
<div class="barre">
<p><strong> Attention, vous allez supprimer votre (ou vos) liaison(s) entre votre compte Partenaire et mon.service-public.fr.&nbsp; </strong></p>
<p><strong> Supprimer la totalit&eacute; des liaisons ne supprime ni votre compte mon.service-public.fr ni votre compte sur le site PARTENAIRE.<br />
Si vous confirmez cette action, il ne vous sera plus possible d&rsquo;acc&eacute;der aux fonctionnalit&eacute;s de mon.service-public &agrave; partir de votre compte PARTENAIRE. </strong></p>
<p>
Confirmez-vous cette action&nbsp;?
</p>
</div>
<div class="m30">
<p class="mb20">
<a href="{% url 'msp-unlink' %}?next={{ next|urlencode }}{% if popup %}&popup=1{% endif %}" class="marges user {% if popup %}js-oauth-popup{% endif %}">Confirmer suppression</a>
<a href="{{ next }}" class="marges user bis">Annuler</a>
</p>
<br class="cb" />
<br class="cb" />
<p>
Une fois les liaisons supprim&eacute;es, mon.service-public.fr n&rsquo;a plus aucune connaissance de vos liaisons avec votre compte PARTENAIRE et vice versa. Il n'est alors plus possible de suivre vos d&eacute;marches PARTENAIRE depuis mon.Service-Public.fr ni m&ecirc;me de naviguer entre les deux sites sans r&eacute;authentification.
</p>
</div>
</div>
<span class="retablir"><br /></span>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@ -10,7 +10,7 @@ Emprunté sur caf.fr
{% endcomment %}
{% if 'nomsp' not in request.GET %}
<div class="msp">
<div class="msp connecting">
<div class="cadre">
<div class="bordure">
<div class="marges">
@ -21,11 +21,11 @@ Emprunté sur caf.fr
<p>
<strong class="fz">
Nouveau&nbsp;: connectez-vous avec
<img src="img/mon_service-public.fr_petit.png" width="100" height="25" alt="mon.service-public.fr" />
<img src="{% static "msp/img/mon_service-public.fr_petit.png" %}" width="100" height="25" alt="mon.service-public.fr" />
</strong>
</p>
<p class="lien">
<a href="https://mon.service-public.fr/portail/app/cms/public/a_propos_du_site" target="_blank" class="roll">En savoir plus</a>
<a href="{% url "msp-more-redirect" %}" target="_blank" class="roll">En savoir plus</a>
</p>
</div>
</div>

View File

@ -0,0 +1,77 @@
{% extends "base.html"%}
{% load sekizai_tags %}
{% load staticfiles %}
{% block content %}
{% addtoblock "css" %}<link rel="stylesheet" type="text/css" href="{% static 'msp/css/screen.msp.css' %}"></link>{% endaddtoblock %}
<div id="msp-link-management">
<div class="msp">
<div class="cadre">
<div class="bordure">
<h1>Gestion des liaisons avec mon.service-public.fr</h1>
<p>
<small><a href="{{ next }}" class="roll">Retour</a></small>
</p>
<div class="contenu">
<p>
<strong>Sur cette page, vous pouvez&nbsp;:</strong>
</p>
<ul>
<!-- <li><strong>Activer ou d&eacute;sactiver le suivi de vos d&eacute;marches sur mon.service-public.fr</strong></li> -->
<li><strong>Supprimer les liaisons vers mon.service-public.fr</strong></li>
</ul>
<!-- <div class="important">
<p>
Comment recevoir mes documents et informations sur mon.service-public.fr&nbsp;?
</p>
</div>
<p>
En activant le suivi des d&eacute;marches sur mon.service-public.fr, vous autorisez Partenaire.fr &agrave; envoyer des informations et des documents administratifs sur votre compte mon.service-public.fr . Ces informations sont ensuite accessibles depuis le bloc partenaire de mon.service-public.fr et les documents sont consultables dans votre espace confidentiel.
</p>
<p>
<em>Actuellement, le suivi des d&eacute;marches n&rsquo;est pas activ&eacute;</em>
</p>
<p>
<a href="#" class="marges user">Activer le suivi des d&eacute;marches</a>
<img src="img/mon_service-public.fr.png" width="125" height="30" alt="mon.service-public.fr" />
</p> -->
<div class="important">
<p>
Comment supprimer toutes les liaisons entre Partenaire.fr et mon.service-public.fr&nbsp;?
</p>
</div>
<p>
Supprimer la totalit&eacute; des liaisons ne supprime ni votre compte mon.service-public.fr ni votre compte sur le site PARTENAIRE.
</p>
<p>
Une fois les liaisons supprim&eacute;es, mon.service-public.fr n&rsquo;aura aucune connaissance de vos comptes PARTENAIRE, et vice versa. Il ne sera alors plus possible de suivre vos d&eacute;marches PARTENAIRE depuis mon.service-public.fr ni m&ecirc;me de naviguer entre les deux sites sans r&eacute;-authentification.
</p>
<p>
<a href="{% url "msp-confirm-unlink" %}?next={{ next }}" class="marges user">Supprimer toutes les liaisons</a>
<img src="{% static "msp/img/mon_service-public.fr.png" %}" width="125" height="30" alt="mon.service-public.fr" />
</p>
</div>
<div class="menu">
<div class="encart">
<div class="bordure">
<h2>Qu&rsquo;est-ce que mon.service-public.fr&nbsp;?</h2>
<p> Simplifiez votre relation avec les services publics, acc&eacute;dez à une information adapt&eacute;e &agrave; votre cas personnel, r&eacute;alisez et suivez vos d&eacute;marches administratives en ligne. </p>
<p class="centrer">
<img src="{% static "msp/img/mon_service-public.fr.png" %}" width="125" height="30" alt="mon.service-public.fr" />
</p>
<p class="lien">
<a href="https://mon.service-public.fr/portail/app/cms/public/a_propos_du_site" class="roll" target="_blank">En savoir plus</a>
</p>
</div>
</div>
</div>
<span class="retablir"><br /></span>
</div>
</div>
</div>
</div>
{% endblock %}

View File

@ -2,89 +2,43 @@
{% load sekizai_tags %}
{% load staticfiles %}
{% addtoblock "css" %}<link rel="stylesheet" type="text/css" href="{% static 'msp/css/msp.css' %}"></link>{% endaddtoblock %}
{% addtoblock "css" %}<link rel="stylesheet" type="text/css" href="{% static 'msp/css/screen.msp.css' %}"></link>{% endaddtoblock %}
{% addtoblock "js" %}<script type="text/javascript" src="{% static "msp/js/domready.js" %}"></script>{% endaddtoblock %}
{% addtoblock "js" %}<script type="text/javascript" src="{% static "msp/js/oauth.js" %}"></script>{% endaddtoblock %}
<div id="msp-linking">
{% if user.is_authenticated and user.mspaccount and user.mspaccount.refresh_token %}
<div class="msp">
<div class="cadre">
<div class="bordure">
<h1>Gestion des liaisons avec mon.service-public.fr</h1>
<p>
<small><a href="#" class="roll">Retour</a></small>
</p>
<div class="contenu">
<p>
<strong>Sur cette page, vous pouvez&nbsp;:</strong>
</p>
<ul>
<!-- <li><strong>Activer ou d&eacute;sactiver le suivi de vos d&eacute;marches sur mon.service-public.fr</strong></li> -->
<li><strong>Supprimer les liaisons vers mon.service-public.fr</strong></li>
</ul>
<!--
<div class="important">
<p>
Comment recevoir mes documents et informations sur mon.service-public.fr&nbsp;?
</p>
</div>
<p>
En activant le suivi des d&eacute;marches sur mon.service-public.fr, vous autorisez Partenaire.fr &agrave; envoyer des informations et des documents administratifs sur votre compte mon.service-public.fr . Ces informations sont ensuite accessibles depuis le bloc partenaire de mon.service-public.fr et les documents sont consultables dans votre espace confidentiel.
</p>
<p>
<em>Actuellement, le suivi des d&eacute;marches n&rsquo;est pas activ&eacute;</em>
</p>
<p>
<a href="#" class="marges user">Activer le suivi des d&eacute;marches</a>
<img src="img/mon_service-public.fr.png" width="125" height="30" alt="mon.service-public.fr" />
</p>
-->
<div class="important">
<p>
Comment supprimer toutes les liaisons entre Partenaire.fr et mon.service-public.fr&nbsp;?
</p>
</div>
<p>
Supprimer la totalit&eacute; des liaisons ne supprime ni votre compte mon.service-public.fr ni votre compte sur le site PARTENAIRE.
</p>
<p>
Une fois les liaisons supprim&eacute;es, mon.service-public.fr n&rsquo;aura aucune connaissance de vos comptes PARTENAIRE, et vice versa. Il ne sera alors plus possible de suivre vos d&eacute;marches PARTENAIRE depuis mon.service-public.fr ni m&ecirc;me de naviguer entre les deux sites sans r&eacute;-authentification.
</p>
<p>
<a href="{% url 'msp-unlink' %}?next={{ request.get_full_path }}{% if popup %}&popup=1{% endif %}" data-agc="{{ user.mspaccount.agc }}" class="{% if popup %}js-oauth-popup{% endif %} marges user">Supprimer toutes les liaisons</a>
<img src="img/mon_service-public.fr.png" width="125" height="30" alt="mon.service-public.fr" />
</p>
</div>
<div class="menu">
<div class="encart">
<div class="bordure">
<h2>Qu&rsquo;est-ce que mon.service-public.fr&nbsp;?</h2>
<p> Simplifiez votre relation avec les services publics, acc&eacute;dez à une information adapt&eacute;e &agrave; votre cas personnel, r&eacute;alisez et suivez vos d&eacute;marches administratives en ligne. </p>
<p class="centrer">
<img src="img/mon_service-public.fr.png" width="125" height="30" alt="mon.service-public.fr" />
</p>
<p class="lien">
<a href="https://mon.service-public.fr/portail/app/cms/public/a_propos_du_site" target="_blank" class="roll">En savoir plus</a>
</p>
</div>
</div>
</div>
<span class="retablir"><br /></span>
</div>
</div>
</div>
{% else %}
<div class="msp">
<div class="cadre">
<p class="centrer">
<img src="img/toutes_vos_demarches.png" width="140" height="35" alt="Vous &ecirc;tes actuellement en connexion avec" />
<img src="img/mon_service-public.fr.png" width="125" height="30" alt="mon.service-public.fr" />
<img src="{% static "msp/img/toutes_vos_demarches.png" %}" width="140" height="35" alt="Vous &ecirc;tes actuellement en connexion avec" />
<img src="{% static "msp/img/mon_service-public.fr.png" %}" width="125" height="30" alt="mon.Service-Public.fr" />
</p>
<ul class="fond">
<li class="picto">
<p class="lien">
<a href="{% url "msp-more-redirect" %}" target="_blank" class="roll">En savoir plus</a>
</p>
</li>
<li class="picto utilisateur">
<p class="lien">
<a href="{% url "msp-link-management" %}?next={{ request.get_full_path|urlencode }}" class="roll">G&eacute;rer mes liaisons</a>
</p>
</li>
</ul>
</div>
</div>
{% else %}
<div class="msp" style="width: 300px">
<div class="cadre">
<p class="centrer">
<img src="{% static "msp/img/toutes_vos_demarches.png" %}" width="140" height="35" alt="Vous &ecirc;tes actuellement en connexion avec" />
<img src="{% static "msp/img/mon_service-public.fr.png" %}" width="125" height="30" alt="mon.service-public.fr" />
</p>
<ul class="fond">
<li class="picto">
<p class="lien">
<a href="https://mon.service-public.fr/portail/app/cms/public/a_propos_du_site" target="_blank" class="roll">En savoir plus</a>
<a href="{% url "msp-more-redirect" %}" target="_blank" class="roll">En savoir plus</a>
</p>
</li>
<li class="picto utilisateur">
@ -96,4 +50,5 @@
</ul>
</div>
</div>
</div>
{% endif %}

View File

@ -0,0 +1,32 @@
{% extends "base.html"%}
{% load sekizai_tags %}
{% load staticfiles %}
{% block content %}
{% addtoblock "css" %}<link rel="stylesheet" type="text/css" href="{% static 'msp/css/screen.msp.css' %}"></link>{% endaddtoblock %}
<div class="msp">
<div class="cadre">
<div class="bordure">
<h1>Liaisons supprim&eacute;es&nbsp;!</h1>
<p>
<small><a href="{{ next }}" class="roll">Retour</a></small>
</p>
<div class="contenu">
<div class="barre">
<p>
Votre demande de suppression de toutes les liaisons entre votre compte PARTENAIRE et mon.Service-Public.fr a bien &eacute;t&eacute; prise en compte.
</p>
</div>
</div>
<div class="menu">
</div>
<span class="retablir"><br /></span>
</div>
</div>
</div>
{% endblock %}

View File

@ -1,12 +1,16 @@
from django.conf.urls import patterns, include, url
from django.conf.urls import patterns, url
urlpatterns = patterns('msp.views',
url(r'^login/$', 'login', name='msp-login'),
url(r'^link/$', 'link', name='msp-link'),
url(r'^login-or-link/$', 'login_or_link', name='msp-login-or-link'),
url(r'^unlink/$', 'unlink', name='msp-unlink'),
url(r'^link-management/$', 'link_management', name='msp-link-management'),
url(r'^link-management/unlink/confirm/$', 'confirm_unlink', name='msp-confirm-unlink'),
url(r'^link-management/unlink/done/$', 'unlink_done', name='msp-unlink-done'),
url(r'^link-management/unlink/$', 'unlink', name='msp-unlink'),
url(r'^authorize/$', 'authorize', name='msp-authorize'),
url(r'^access_token/$', 'access_token', name='msp-access-token'),
url(r'^documents/$', 'documents', name='msp-documents'),
url(r'^documents/(?P<doc_id>[^/]*)/$', 'document', name='msp-document'),
url(r'^more/$', 'more_redirect', name='msp-more-redirect'),
)

View File

@ -9,13 +9,14 @@ import json
from requests_oauthlib import OAuth2Session
from django.core.urlresolvers import reverse
from django.views.decorators.csrf import csrf_exempt
from django.views.generic import View
from django.views.generic import View, RedirectView
from django.views.generic.base import TemplateView
from django.http import HttpResponse, HttpResponseRedirect
from django.contrib.auth import authenticate, login as auth_login, REDIRECT_FIELD_NAME
from django.contrib.auth.views import redirect_to_login
from django.contrib.auth.decorators import login_required
from django.contrib.auth.decorators import login_required, user_passes_test
from django.contrib import messages
from django.shortcuts import resolve_url, render
from django.utils.translation import ugettext as _
@ -24,8 +25,16 @@ from django.conf import settings
from django.core.cache import InvalidCacheBackendError, get_cache
from django.views.decorators.clickjacking import xframe_options_exempt
from . import app_settings
from . import models
from . import app_settings, models
def user_has_mspaccount(user):
'''Return True if user a link to MSP'''
try:
return user.mspaccount is not None
except models.MspAccount.DoesNotExist:
return False
mspaccount_required = user_passes_test(user_has_mspaccount, '/')
logger = logging.getLogger(__name__)
@ -202,15 +211,20 @@ class UnlinkView(PopupViewMixin, MspOAuthSessionViewMixin, TemplateView):
def get(self, request, *args, **kwargs):
qs = models.MspAccount.objects.filter(user=request.user)
count = qs.count()
result = self.api_call('app/rest/agc', method='delete')
if result.status_code // 100 == 2:
qs.delete()
if count:
messages.info(request, _('msp link was deleted'))
logger.debug('%d msp link deleted', count)
if qs.exists():
result = self.api_call('app/rest/agc', method='delete')
if result.status_code // 100 == 2:
qs.delete()
logger.debug('all link deleted for %r', request.user)
next_url = self.redirect_to(request, *args, **kwargs)
msp_unlink_url = reverse('msp-unlink-done')
next_url = '{0}?{1}'.format(msp_unlink_url,
urllib.urlencode({REDIRECT_FIELD_NAME: next_url}))
return self.redirect(request, next_url=next_url)
else:
logger.debug('error when deleting msp link %r', result.content)
else:
logger.debug('error when deleting msp link %r', result.content)
logger.debug('no msp account exist doing nothing')
return self.redirect(request)
unlink = login_required(UnlinkView.as_view())
@ -413,3 +427,40 @@ class LoginOrLinkView(PopupViewMixin, MspOAuthSessionViewMixin, View):
login_or_link = LoginOrLinkView.as_view()
class TemplateWithNextUrlView(TemplateView):
def get_context_data(self, **kwargs):
ctx = super(TemplateWithNextUrlView, self).get_context_data(**kwargs)
ctx['next'] = self.request.GET.get('next') or \
getattr(settings, 'LOGIN_REDIRECT_URL', '/')
return ctx
class LinkManagementView(TemplateWithNextUrlView):
template_name = 'msp/link_management.html'
link_management = mspaccount_required(LinkManagementView.as_view())
link_management = login_required(link_management)
class ConfirmUnlinkView(TemplateWithNextUrlView):
template_name = 'msp/confirm_unlink.html'
def get_context_data(self, **kwargs):
ctx = super(ConfirmUnlinkView, self).get_context_data(**kwargs)
ctx['popup'] = True
return ctx
confirm_unlink = mspaccount_required(ConfirmUnlinkView.as_view())
confirm_unlink = login_required(confirm_unlink)
class UnlinkDoneView(TemplateWithNextUrlView):
template_name = 'msp/unlink_done.html'
unlink_done = UnlinkDoneView.as_view()
class MoreRedirectView(RedirectView):
def get_redirect_url(self, *args, **kwargs):
return app_settings.more_url
more_redirect = MoreRedirectView.as_view()