locale,templates: dispatch templates and locale files to sub applications
Now to update translations you must explicitely exclude sub-applications like that: ../authentic2-ctl makemessages -a -i idp -i saml -i attribute_aggregator -i authsaml2 -i auth2_auth -i disco_service -i auth2_user
This commit is contained in:
parent
b8ff8baee9
commit
9c5bcffa71
File diff suppressed because it is too large
Load Diff
|
@ -67,6 +67,10 @@ class AttributeSource(models.Model):
|
|||
pass
|
||||
return None
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('attribute source')
|
||||
verbose_name_plural = _('attribute sources')
|
||||
|
||||
|
||||
def get_source_from_name(name):
|
||||
try:
|
||||
|
@ -112,19 +116,23 @@ if ldap:
|
|||
super(LdapSource, self).__init__(*args, **kwargs)
|
||||
self.namespace = "X500"
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('ldap attribute source')
|
||||
verbose_name_plural = _('ldap attribute sources')
|
||||
|
||||
class UserAliasInSource(models.Model):
|
||||
name = models.CharField(
|
||||
verbose_name = _("Name"),
|
||||
max_length = 200)
|
||||
source = models.ForeignKey(AttributeSource,
|
||||
verbose_name = _('Attribute Source'))
|
||||
verbose_name = _('attribute source'))
|
||||
user = models.ForeignKey(settings.AUTH_USER_MODEL,
|
||||
verbose_name = _("User"),
|
||||
verbose_name = _("user"),
|
||||
related_name='user_alias_in_source')
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('alias in source')
|
||||
verbose_name_plural = _('aliases in source')
|
||||
verbose_name = _('user alias from source')
|
||||
verbose_name_plural = _('user aliases from source')
|
||||
unique_together = ("name", "source")
|
||||
|
||||
def __unicode__(self):
|
||||
|
@ -133,7 +141,6 @@ class UserAliasInSource(models.Model):
|
|||
|
||||
|
||||
class AttributeData:
|
||||
|
||||
def __init__(self, definition, values=None, source=None,
|
||||
expiration_date=None):
|
||||
'''
|
||||
|
@ -558,3 +565,8 @@ class UserAttributeProfile(models.Model):
|
|||
for d in self.get_all_data():
|
||||
s = s + "\n\t" + d.__unicode__()
|
||||
return s
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('user attribute profile')
|
||||
verbose_name_plural = _('user attribute profiles')
|
||||
|
||||
|
|
|
@ -0,0 +1,120 @@
|
|||
# French translation of Authentic
|
||||
# Copyright (C) 2010, 2011 Entr'ouvert
|
||||
# This file is distributed under the same license as the Authentic package.
|
||||
# Frederic Peters <fpeters@entrouvert.com>, 2010.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Authentic\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-07-23 17:44+0200\n"
|
||||
"PO-Revision-Date: 2013-07-23 17:42+0200\n"
|
||||
"Last-Translator: Mikaël Ates <mates@entrouvert.com>\n"
|
||||
"Language-Team: None\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n>1;\n"
|
||||
|
||||
#: frontend.py:22
|
||||
msgid ""
|
||||
"Please enter a correct username and one-time password. Note that both fields "
|
||||
"are case-sensitive."
|
||||
msgstr ""
|
||||
"Veuillez taper un nom d'utilisateur correct et un mot de passe à usage "
|
||||
"unique. Notez que les deux champs sont sensibles à la casse."
|
||||
|
||||
#: frontend.py:24
|
||||
msgid "This account is inactive."
|
||||
msgstr "Ce compte est inactif."
|
||||
|
||||
#: frontend.py:29
|
||||
msgid ""
|
||||
"Your Web browser doesn't appear to have cookies enabled. Cookies are "
|
||||
"required for logging in."
|
||||
msgstr ""
|
||||
"Il semblerait que votre navigateur ne supporte pas les cookies. Les cookies "
|
||||
"sont requis pour se connecter."
|
||||
|
||||
#: frontend.py:39
|
||||
msgid "One time password"
|
||||
msgstr "Mot de passe à usage unique"
|
||||
|
||||
#: templates/auth/login_form_oath.html:5
|
||||
msgid ""
|
||||
"\n"
|
||||
"Once you have created your account, log in with an other authentication "
|
||||
"method.\n"
|
||||
"Then, in account management, follow the instructions to deploy the\n"
|
||||
"One Time password authentication method.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Une fois votre compte créé, connectez-vous à l'aide d'une autre méthode.\n"
|
||||
"Alors, dans l'interface de gestion de votre compte, suivez les instructions "
|
||||
"pour déployer la\n"
|
||||
"méthode d'authentification basée sur le mot de passe à usage unique.\n"
|
||||
|
||||
#: templates/auth/login_form_oath.html:16
|
||||
msgid "Log in"
|
||||
msgstr "S'identifier"
|
||||
|
||||
#: templates/auth/login_form_oath.html:18
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#: templates/auth/login_form_oath.html:24
|
||||
msgid "Forgot password?"
|
||||
msgstr "Mot de passe oublié ?"
|
||||
|
||||
#: templates/auth/login_form_oath.html:24
|
||||
msgid "Reset it!"
|
||||
msgstr "Le réinitialiser !"
|
||||
|
||||
#: templates/auth/login_form_oath.html:25
|
||||
msgid "Not a member?"
|
||||
msgstr "Pas un membre ?"
|
||||
|
||||
#: templates/auth/login_form_oath.html:25
|
||||
msgid "Register!"
|
||||
msgstr "S'inscrire !"
|
||||
|
||||
#: templates/oath/totp_profile.html:5
|
||||
msgid "Time based one-time password"
|
||||
msgstr "Mot de passe à usage unique basé sur le temps"
|
||||
|
||||
#: templates/oath/totp_profile.html:8
|
||||
msgid "Secret"
|
||||
msgstr "Secret"
|
||||
|
||||
#: templates/oath/totp_profile.html:10
|
||||
msgid "Google authenticator"
|
||||
msgstr "Google authenticator"
|
||||
|
||||
#: templates/oath/totp_profile.html:12
|
||||
msgid "Bookmarklet"
|
||||
msgstr "Marque-page générateur de mot de passe"
|
||||
|
||||
#: templates/oath/totp_profile.html:13
|
||||
msgid ""
|
||||
"Copy this link to your bookmarks. When clicking on it it will generate a new "
|
||||
"one-time password which will allow you to login"
|
||||
msgstr ""
|
||||
"Copier ce lien dans vos marque-pages. Cliquez le pour générer un nouveau mot "
|
||||
"de passe à usage unique pour vous connecter."
|
||||
|
||||
#: templates/oath/totp_profile.html:16
|
||||
msgid "Delete this credential"
|
||||
msgstr "Supprimer ce moyen d'authentification"
|
||||
|
||||
#: templates/oath/totp_profile.html:19
|
||||
msgid ""
|
||||
"This kind of authentication is actually not possible, because you do not "
|
||||
"have any secret setup."
|
||||
msgstr ""
|
||||
"Ce moyen d'authentification n'est pas disponible actuellement car vous "
|
||||
"n'avez pas encore généré de secret."
|
||||
|
||||
#: templates/oath/totp_profile.html:23
|
||||
msgid "Generate a new credential"
|
||||
msgstr "Générer un nouveau secret"
|
|
@ -0,0 +1,204 @@
|
|||
# French translation of Authentic
|
||||
# Copyright (C) 2010, 2011 Entr'ouvert
|
||||
# This file is distributed under the same license as the Authentic package.
|
||||
# Frederic Peters <fpeters@entrouvert.com>, 2010.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Authentic\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-07-23 16:57+0200\n"
|
||||
"PO-Revision-Date: 2013-07-23 16:57+0200\n"
|
||||
"Last-Translator: Mikaël Ates <mates@entrouvert.com>\n"
|
||||
"Language-Team: None\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n>1;\n"
|
||||
|
||||
#: templates/auth/login_form_openid.html:13
|
||||
#: templates/authopenid/associate.html:44
|
||||
#: templates/authopenid/signin-iframe.html:39
|
||||
#: templates/authopenid/signin.html:45
|
||||
msgid "Please select your account provider:"
|
||||
msgstr "Si vous avez un compte sur un de ces sites, connectez-vous avec:"
|
||||
|
||||
#: templates/auth/login_form_openid.html:16
|
||||
msgid "Log in"
|
||||
msgstr "S'identifier"
|
||||
|
||||
#: templates/auth/login_form_openid.html:18
|
||||
#: templates/authopenid/signin-iframe.html:43
|
||||
#: templates/authopenid/signin.html:49
|
||||
msgid "Or enter your OpenID identity:"
|
||||
msgstr "Ou entrez une identité OpenIDL (URL):"
|
||||
|
||||
#: templates/auth/login_form_openid.html:19
|
||||
#: templates/authopenid/associate.html:48
|
||||
#: templates/authopenid/signin-iframe.html:44
|
||||
#: templates/authopenid/signin.html:50
|
||||
msgid "OpenId URL :"
|
||||
msgstr "URL OpenID:"
|
||||
|
||||
#: templates/auth/login_form_openid.html:22
|
||||
#: templates/authopenid/dissociate.html:33
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#: templates/auth/openid_profile.html:6
|
||||
msgid "Associate your account with an OpenID"
|
||||
msgstr "Associer votre compte avec un OpenID"
|
||||
|
||||
#: templates/authopenid/associate.html:5
|
||||
msgid "Associate OpenID"
|
||||
msgstr "Lier un identifiant OpenID"
|
||||
|
||||
#: templates/authopenid/associate.html:20
|
||||
msgid "OpenID URL:"
|
||||
msgstr "URL OpenID:"
|
||||
|
||||
#: templates/authopenid/associate.html:25
|
||||
#: templates/authopenid/dissociate.html:26
|
||||
msgid "Dissociate OpenID URL"
|
||||
msgstr "Délier un identifiant OpenID"
|
||||
|
||||
#: templates/authopenid/associate.html:38
|
||||
msgid "Add a new OpenID account"
|
||||
msgstr "Ajouter une nouveau compte OpenID"
|
||||
|
||||
#: templates/authopenid/associate.html:49
|
||||
msgid "Add OpenID"
|
||||
msgstr ""
|
||||
|
||||
#: templates/authopenid/associate_email.txt:1
|
||||
msgid "Thank you to join"
|
||||
msgstr ""
|
||||
|
||||
#: templates/authopenid/associate_email_subject.txt:1
|
||||
msgid "Welcome to"
|
||||
msgstr ""
|
||||
|
||||
#: templates/authopenid/complete.html:18
|
||||
msgid "Your OpenID is verified! "
|
||||
msgstr "Votre identifiant OpenID a été vérifié."
|
||||
|
||||
#: templates/authopenid/complete.html:19
|
||||
msgid ""
|
||||
"\n"
|
||||
"\t<p>Your OpenID can now be associated with a new or existing membership. "
|
||||
"You can change the association later in your preferences.</p>\n"
|
||||
"\t"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\t<p>Votre OpenID peut desormais etre associe a un compte nouveau ou "
|
||||
"existant. Vous pourrez modifier cette association dans vos preferences.</p>\n"
|
||||
"\t"
|
||||
|
||||
#: templates/authopenid/complete.html:22
|
||||
msgid "Associate your OpenID"
|
||||
msgstr "Associez votre OpenID"
|
||||
|
||||
#: templates/authopenid/complete.html:23
|
||||
msgid ""
|
||||
"\n"
|
||||
"\t<p>If you're joining <strong>Sitename</strong>, associate your OpenID with "
|
||||
"a new account. If you're already a member, associate with your existing "
|
||||
"account.</p>\n"
|
||||
"\t"
|
||||
msgstr ""
|
||||
|
||||
#: templates/authopenid/complete.html:30 templates/authopenid/complete.html:40
|
||||
#: templates/authopenid/signin-iframe.html:16
|
||||
#: templates/authopenid/signin.html:22
|
||||
msgid "Please correct errors below:"
|
||||
msgstr "Veuillez corriger les erreurs suivantes :"
|
||||
|
||||
#: templates/authopenid/complete.html:55
|
||||
msgid "A new account"
|
||||
msgstr "Un nouveau compte"
|
||||
|
||||
#: templates/authopenid/complete.html:56 templates/authopenid/complete.html:72
|
||||
msgid "Username"
|
||||
msgstr "Identifiant"
|
||||
|
||||
#: templates/authopenid/complete.html:57
|
||||
msgid "Email"
|
||||
msgstr "Courriel"
|
||||
|
||||
#: templates/authopenid/complete.html:58
|
||||
msgid "Create account"
|
||||
msgstr "Créer un compte"
|
||||
|
||||
#: templates/authopenid/complete.html:71
|
||||
msgid "An existing account"
|
||||
msgstr "Un compte existant"
|
||||
|
||||
#: templates/authopenid/complete.html:73
|
||||
msgid "Password"
|
||||
msgstr "Mot de passe"
|
||||
|
||||
#: templates/authopenid/complete.html:74
|
||||
msgid "Verify"
|
||||
msgstr "Verifier"
|
||||
|
||||
#: templates/authopenid/dissociate.html:32
|
||||
msgid "Dissociate OpenID"
|
||||
msgstr "Dissocier vot OpenID"
|
||||
|
||||
#: templates/authopenid/password_change_form.html:6
|
||||
#: templates/authopenid/password_change_form.html:25
|
||||
msgid "Set password"
|
||||
msgstr "Change le mot de passe"
|
||||
|
||||
#: templates/authopenid/password_change_form.html:8
|
||||
msgid "Change password"
|
||||
msgstr "Modifier votre mot de passe"
|
||||
|
||||
#: templates/authopenid/password_change_form.html:26
|
||||
msgid ""
|
||||
"Please enter your new password twice so we can verify you typed it in "
|
||||
"correctly."
|
||||
msgstr ""
|
||||
|
||||
#: templates/authopenid/password_change_form.html:31
|
||||
#: templates/authopenid/password_change_form.html:47
|
||||
msgid "New password:"
|
||||
msgstr "Nouveau mot de passe :"
|
||||
|
||||
#: templates/authopenid/password_change_form.html:33
|
||||
#: templates/authopenid/password_change_form.html:49
|
||||
msgid "Confirm password:"
|
||||
msgstr "Confirmation du mot de passe :"
|
||||
|
||||
#: templates/authopenid/password_change_form.html:34
|
||||
#: templates/authopenid/password_change_form.html:51
|
||||
msgid "Change my password"
|
||||
msgstr "Modifier son mot de passe"
|
||||
|
||||
#: templates/authopenid/password_change_form.html:39
|
||||
msgid "Password change"
|
||||
msgstr "Changer de mot de passe"
|
||||
|
||||
#: templates/authopenid/password_change_form.html:40
|
||||
msgid ""
|
||||
"Please enter your old password, for security's sake, and then enter your new "
|
||||
"password twice so we can verify you typed it in correctly."
|
||||
msgstr ""
|
||||
"Veuillez entre votre ancien mot de passe, par raison de sécurité, et entrez "
|
||||
"ensuite votre nouveau mot de passe deux fois pour s'assurer que vous l'avez "
|
||||
"tapé correctement."
|
||||
|
||||
#: templates/authopenid/password_change_form.html:45
|
||||
msgid "Old password:"
|
||||
msgstr "Ancien mot de passe :"
|
||||
|
||||
#: templates/authopenid/signin-iframe.html:5
|
||||
#: templates/authopenid/signin.html:5
|
||||
msgid "OpenID Signin"
|
||||
msgstr "Connexion OpenID"
|
||||
|
||||
#: templates/authopenid/signin-iframe.html:45
|
||||
#: templates/authopenid/signin.html:51
|
||||
msgid "Sign in with OpenID"
|
||||
msgstr "Connectez vous avec OpenID"
|
|
@ -0,0 +1,110 @@
|
|||
# French translation of Authentic
|
||||
# Copyright (C) 2010, 2011 Entr'ouvert
|
||||
# This file is distributed under the same license as the Authentic package.
|
||||
# Frederic Peters <fpeters@entrouvert.com>, 2010.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Authentic\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-07-23 17:40+0200\n"
|
||||
"PO-Revision-Date: 2013-07-23 17:41+0200\n"
|
||||
"Last-Translator: Mikaël Ates <mates@entrouvert.com>\n"
|
||||
"Language-Team: None\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n>1;\n"
|
||||
|
||||
#: forms.py:32
|
||||
msgid "username"
|
||||
msgstr "Identifiant"
|
||||
|
||||
#: forms.py:35
|
||||
msgid "email address"
|
||||
msgstr "Adresse email"
|
||||
|
||||
#: forms.py:53
|
||||
msgid "This username is already taken. Please choose another."
|
||||
msgstr "Ce nom d'utilisateur est déja utilisé. Choisissez-en un autre."
|
||||
|
||||
#: frontend.py:18
|
||||
msgid "SSL with certificates"
|
||||
msgstr "Certificats SSL"
|
||||
|
||||
#: login_ssl.py:46
|
||||
msgid ""
|
||||
"SSL Client Authentication failed. No client certificate found."
|
||||
msgstr "Echec de l'authentification cliente SSL. Aucun certificat trouvé."
|
||||
|
||||
#: login_ssl.py:53
|
||||
msgid ""
|
||||
"SSL Client Authentication failed. Your client certificate is not "
|
||||
"valid."
|
||||
msgstr ""
|
||||
"Echec de l'authentification cliente SSL. Votre certificat n'est pas valide."
|
||||
|
||||
#: login_ssl.py:73 login_ssl.py:90 login_ssl.py:103 login_ssl.py:157
|
||||
msgid "SSL Client Authentication failed. Internal server error."
|
||||
msgstr "Echec de l'authentification SSL. Erreur interne du serveur."
|
||||
|
||||
#: login_ssl.py:221
|
||||
msgid "No certificate name provided for deletion."
|
||||
msgstr "Aucun nom de certificat fourni pour la suppression."
|
||||
|
||||
#: login_ssl.py:237
|
||||
msgid "Successful certificate deletion."
|
||||
msgstr "Succès de la suppression du certificat."
|
||||
|
||||
#: login_ssl.py:246
|
||||
msgid "Certificate deletion failed."
|
||||
msgstr "Échec de suppression du certificat"
|
||||
|
||||
#: templates/auth/account_linking_ssl.html:5
|
||||
#: templates/auth/account_linking_ssl.html:9
|
||||
msgid "Log in to link your certificate with an existing account"
|
||||
msgstr "connectez-vous pour lier votre certificat avec un compte existant"
|
||||
|
||||
#: templates/auth/account_linking_ssl.html:18
|
||||
#: templates/auth/account_linking_ssl.html:25
|
||||
msgid "Username:"
|
||||
msgstr "Nom d'utilisateur :"
|
||||
|
||||
#: templates/auth/account_linking_ssl.html:21
|
||||
#: templates/auth/account_linking_ssl.html:29
|
||||
msgid "Password:"
|
||||
msgstr "Mot de passe :"
|
||||
|
||||
#: templates/auth/account_linking_ssl.html:34
|
||||
msgid "Create me a new account"
|
||||
msgstr "Me créer un nouveau compte"
|
||||
|
||||
#: templates/auth/account_linking_ssl.html:38
|
||||
#: templates/auth/login_form_ssl.html:9
|
||||
msgid "Log in"
|
||||
msgstr "S'identifier"
|
||||
|
||||
#: templates/auth/login_form_ssl.html:4
|
||||
msgid "Use a self-generated X509 certificate to log in."
|
||||
msgstr "Utilisez un certificat x509 auto-généré pour vous connecter."
|
||||
|
||||
#: templates/auth/login_form_ssl.html:11
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#: templates/ssl/profile.html:2
|
||||
msgid "SSL Certificates"
|
||||
msgstr "Certificats SSL"
|
||||
|
||||
#: templates/ssl/profile.html:11
|
||||
msgid "Delete"
|
||||
msgstr "Supprimer"
|
||||
|
||||
#: templates/ssl/profile.html:17
|
||||
msgid "Add a certificate?"
|
||||
msgstr "Ajouter un certificat ?"
|
||||
|
||||
#: templates/ssl/profile.html:19
|
||||
msgid "Add"
|
||||
msgstr "Ajouter"
|
|
@ -0,0 +1,67 @@
|
|||
# French translation of Authentic
|
||||
# Copyright (C) 2010, 2011 Entr'ouvert
|
||||
# This file is distributed under the same license as the Authentic package.
|
||||
# Frederic Peters <fpeters@entrouvert.com>, 2010.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Authentic\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-07-23 18:01+0200\n"
|
||||
"PO-Revision-Date: 2013-07-23 18:01+0200\n"
|
||||
"Last-Translator: Mikaël Ates <mates@entrouvert.com>\n"
|
||||
"Language-Team: None\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n>1;\n"
|
||||
|
||||
#: backend.py:17 templates/auth/login_password_profile.html:2
|
||||
msgid "Password"
|
||||
msgstr "Mot de passe"
|
||||
|
||||
#: models.py:23
|
||||
#, python-format
|
||||
msgid "Authentication of %(who)s by %(how)s at %(when)s"
|
||||
msgstr "Authentification de %(who)s par la méthode %(how)s à %(when)s"
|
||||
|
||||
#: templates/error_ssl.html:4
|
||||
msgid "Error: authentication failure"
|
||||
msgstr "Erreur: Echec de l'authentification"
|
||||
|
||||
#: templates/error_ssl.html:8
|
||||
msgid "Authentication failure"
|
||||
msgstr "Échec d'authentification"
|
||||
|
||||
#: templates/error_ssl.html:10
|
||||
msgid "The SSL authentication has failed"
|
||||
msgstr "L'authentification par certificat électronique a échouée."
|
||||
|
||||
#: templates/auth/login.html:5 templates/auth/login_form.html:6
|
||||
msgid "Log in"
|
||||
msgstr "S'identifier"
|
||||
|
||||
#: templates/auth/login_form.html:8
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#: templates/auth/login_form.html:14
|
||||
msgid "Forgot password?"
|
||||
msgstr "Mot de passe oublié ?"
|
||||
|
||||
#: templates/auth/login_form.html:14
|
||||
msgid "Reset it!"
|
||||
msgstr "Le réinitialiser !"
|
||||
|
||||
#: templates/auth/login_form.html:15
|
||||
msgid "Not a member?"
|
||||
msgstr "Pas un membre ?"
|
||||
|
||||
#: templates/auth/login_form.html:15
|
||||
msgid "Register!"
|
||||
msgstr "S'inscrire !"
|
||||
|
||||
#: templates/auth/login_password_profile.html:6
|
||||
msgid "Change password"
|
||||
msgstr "Modifier votre mot de passe"
|
|
@ -0,0 +1,410 @@
|
|||
# French translation of Authentic
|
||||
# Copyright (C) 2010, 2011 Entr'ouvert
|
||||
# This file is distributed under the same license as the Authentic package.
|
||||
# Frederic Peters <fpeters@entrouvert.com>, 2010.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Authentic\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-07-23 16:39+0200\n"
|
||||
"PO-Revision-Date: 2013-07-23 16:39+0200\n"
|
||||
"Last-Translator: Mikaël Ates <mates@entrouvert.com>\n"
|
||||
"Language-Team: None\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n>1;\n"
|
||||
|
||||
#: backends.py:67
|
||||
#, python-format
|
||||
msgid "Sending logout to %(pid)s...."
|
||||
msgstr "Envoi de la deconnesion a %(pid)s...."
|
||||
|
||||
#: frontend.py:20
|
||||
msgid "Choose your identity provider"
|
||||
msgstr "Choisissez votre fournisseur d'identité"
|
||||
|
||||
#: frontend.py:34
|
||||
msgid "SAML 2.0"
|
||||
msgstr "SAML 2.0"
|
||||
|
||||
#: models.py:90
|
||||
msgid "Anonymous"
|
||||
msgstr "Anonyme"
|
||||
|
||||
#: saml2_endpoints.py:128
|
||||
msgid "redirect_to_disco: unable to build disco request"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:135
|
||||
#, python-format
|
||||
msgid "disco_response: HTTP request not supported %s"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:176 saml2_endpoints.py:182
|
||||
msgid "sso: Service provider not configured"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:188
|
||||
msgid "sso: No SAML2 identity provider selected"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:196
|
||||
msgid "sso: The provider does not exist"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:201
|
||||
msgid "sso: Unable to create Login object"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:210
|
||||
#, python-format
|
||||
msgid "sso: %s does not have any supported SingleSignOn endpoint"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:216
|
||||
#, python-format
|
||||
msgid "sso: initAuthnRequest %s"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:222
|
||||
msgid "sso: No IdP policy defined"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:228
|
||||
#, python-format
|
||||
msgid "SSO: buildAuthnRequestMsg %s"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:255
|
||||
msgid "singleSignOnArtifact: Service provider not configured"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:273
|
||||
msgid "singleSignOnArtifact: Unable to create Login object"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:279
|
||||
msgid "singleSignOnArtifact: No message given."
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:300
|
||||
#, python-format
|
||||
msgid "singleSignOnArtifact: provider %r unknown"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:309
|
||||
#, python-format
|
||||
msgid "singleSignOnArtifact: initRequest %s"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:317
|
||||
#, python-format
|
||||
msgid "singleSignOnArtifact: buildRequestMsg %s"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:329
|
||||
#, python-format
|
||||
msgid ""
|
||||
"singleSignOnArtifact: Failure to communicate with artifact "
|
||||
"resolver %r"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:334
|
||||
#, python-format
|
||||
msgid ""
|
||||
"singleSignOnArtifact: Artifact resolver at %r returned an empty "
|
||||
"response"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:350
|
||||
#, python-format
|
||||
msgid "singleSignOnArtifact: processResponseMsg raised %s"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:365
|
||||
msgid "singleSignOnPost: Service provider not configured"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:371
|
||||
msgid "singleSignOnPost: Unable to create Login object"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:380
|
||||
msgid "singleSignOnPost: No message given."
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:407
|
||||
#, python-format
|
||||
msgid "singleSignOnPost: provider %r unknown"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:418
|
||||
#, python-format
|
||||
msgid "singleSignOnPost: %s"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:441
|
||||
msgid "sso_after_response: error checking authn response"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:447
|
||||
#, python-format
|
||||
msgid "sso_after_response: acceptSso raised %s"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:583
|
||||
msgid "sso_after_response: No IdP policy defined"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:632
|
||||
msgid ""
|
||||
"sso_after_response: No backend for temporary federation "
|
||||
"is configured"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:653
|
||||
msgid ""
|
||||
"sso_after_response: Transient access policy: Configuration error"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:703
|
||||
msgid ""
|
||||
"sso_after_response: You were not asked your consent for "
|
||||
"account linking"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:720
|
||||
msgid ""
|
||||
"sso_after_response: Persistent Account policy: Configuration "
|
||||
"error"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:724
|
||||
msgid ""
|
||||
"sso_after_response: Transient access policy: NameId format not "
|
||||
"supported"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:747
|
||||
msgid "finish_federation: Service provider not configured"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:753
|
||||
msgid "finish_federation: Unable to create Login object"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:760
|
||||
msgid "finish_federation: Error loading session."
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:777
|
||||
msgid ""
|
||||
"SSO/finish_federation: Error adding new federation for "
|
||||
"this user"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:816
|
||||
msgid "finish_federation: Unable to perform federation"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:958
|
||||
msgid "logout: not a logged in user"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:963
|
||||
msgid "logout: Service provider not configured"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:968
|
||||
msgid "logout: Unable to create Login object"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:976
|
||||
msgid "logout: No session for global logout."
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:984
|
||||
msgid "logout: Session malformed."
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:990
|
||||
msgid "logout: Error loading provider."
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1018
|
||||
msgid "logout: SOAP error - Only local logout performed."
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1066
|
||||
msgid "logout: Unknown HTTP method."
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1076
|
||||
#, python-format
|
||||
msgid ""
|
||||
"localLogout: SOAP error with %s - Only local logout performed."
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1080
|
||||
#, python-format
|
||||
msgid "localLogout: %s - Only local logout performed."
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1092
|
||||
msgid "singleLogoutReturn: Service provider not configured"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1098
|
||||
msgid ""
|
||||
"singleLogoutReturn: Unable to handle Single Logout by Redirect "
|
||||
"without request"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1105
|
||||
msgid "singleLogoutReturn: Unable to create Login object"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1391
|
||||
#, python-format
|
||||
msgid "singleLogout: provider %r unknown"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1469
|
||||
msgid "fedTerm/SP UI: No provider for defederation"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1474
|
||||
msgid "fedTerm/SP UI: Unable to defederate a not logged user!"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1480
|
||||
msgid "fedTerm/SP UI: Service provider not configured"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1487
|
||||
msgid "fedTerm/SP UI: No such identity provider."
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1497
|
||||
msgid "fedTerm/SP UI: Not a valid federation"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1513
|
||||
#, python-format
|
||||
msgid "fedTerm/SP UI: %s"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1521 saml2_endpoints.py:1552
|
||||
#, python-format
|
||||
msgid "fedTerm/SP SOAP: %s"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1530
|
||||
msgid ""
|
||||
"fedTerm/SP SOAP: Unable to perform SOAP defederation "
|
||||
"request"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1539 saml2_endpoints.py:1573
|
||||
#, python-format
|
||||
msgid "fedTerm/SP Redirect: %s"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1561
|
||||
msgid ""
|
||||
"fedTerm/SP SOAP: Unable to perform SOAP defederation request"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1578
|
||||
msgid "Unknown HTTP method."
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1591
|
||||
msgid "fedTerm/SP Redirect: Service provider not configured"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1599
|
||||
msgid "fedTerm/SP Redirect: Error managing manage dump"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1614
|
||||
msgid "fedTerm/SP Redirect: Defederation failed"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1640
|
||||
#, python-format
|
||||
msgid "fedTerm/Return: provider %r unknown"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1647
|
||||
#, python-format
|
||||
msgid "fedTerm/manage_name_id_return: %s"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1695
|
||||
#, python-format
|
||||
msgid "fedTerm/SOAP: provider %r unknown"
|
||||
msgstr ""
|
||||
|
||||
#: saml2_endpoints.py:1888
|
||||
msgid "Successful federation deletion."
|
||||
msgstr ""
|
||||
|
||||
#: utils.py:42
|
||||
#, python-format
|
||||
msgid "An error happened. Report this %s to the administrator."
|
||||
msgstr ""
|
||||
|
||||
#: templates/error_authsaml2.html:8
|
||||
msgid "Back"
|
||||
msgstr "Retour"
|
||||
|
||||
#: templates/profile.html:3
|
||||
msgid "SAML2 Federations"
|
||||
msgstr "Fédérations SAML2"
|
||||
|
||||
#: templates/profile.html:9
|
||||
msgid "Delete a federation?"
|
||||
msgstr "Supprimer une fédération ?"
|
||||
|
||||
#: templates/profile.html:15
|
||||
msgid "Delete"
|
||||
msgstr "Supprimer"
|
||||
|
||||
#: templates/profile.html:23
|
||||
msgid "Add a federation?"
|
||||
msgstr "Ajouter une fédération ?"
|
||||
|
||||
#: templates/profile.html:27 templates/auth/saml2/account_linking.html:32
|
||||
#: templates/auth/saml2/login_form.html:6
|
||||
msgid "Log in"
|
||||
msgstr "S'identifier"
|
||||
|
||||
#: templates/auth/saml2/account_linking.html:5
|
||||
msgid "Log in to link your account"
|
||||
msgstr "Connectez-vous pour lier vos comptes"
|
||||
|
||||
#: templates/auth/saml2/account_linking.html:9
|
||||
msgid "Log in to link with your existing account"
|
||||
msgstr "Connectez-vous pour lier avec un compte existant"
|
||||
|
||||
#: templates/auth/saml2/account_linking.html:17
|
||||
#: templates/auth/saml2/account_linking.html:24
|
||||
msgid "Username:"
|
||||
msgstr "Nom d'utilisateur :"
|
||||
|
||||
#: templates/auth/saml2/account_linking.html:20
|
||||
#: templates/auth/saml2/account_linking.html:28
|
||||
msgid "Password:"
|
||||
msgstr "Mot de passe :"
|
||||
|
||||
#: templates/auth/saml2/logout.html:5
|
||||
msgid "Logout"
|
||||
msgstr "Déconnexion"
|
||||
|
||||
#: templates/auth/saml2/logout.html:18
|
||||
msgid "Continue logout"
|
||||
msgstr "Continuer la déconnexion"
|
|
@ -40,7 +40,7 @@ class CustomIndexDashboard(Dashboard):
|
|||
|
||||
# append an app list module for "Applications"
|
||||
self.children.append(modules.ModelList(
|
||||
_('User and groups'),
|
||||
_('Users and groups'),
|
||||
models=('authentic2.models.User',
|
||||
'django.contrib.auth.models.Group'),
|
||||
))
|
||||
|
|
|
@ -19,7 +19,7 @@ from django.core.urlresolvers import reverse
|
|||
from django.utils.http import urlquote
|
||||
|
||||
from authentic2 import settings
|
||||
from authentic2.saml.common import error_page
|
||||
from authentic2.saml.common import error_page as base_error_page
|
||||
from authentic2.saml.models import LibertyProvider
|
||||
|
||||
logger = logging.getLogger('authentic2.disco.responder')
|
||||
|
@ -32,6 +32,12 @@ except:
|
|||
logger.error("disco: missing parameters in settings for idp discovery.")
|
||||
|
||||
|
||||
def error_page(request, message, logger):
|
||||
'''Customized disco service error page'''
|
||||
message = u'disco: ' + message
|
||||
return base_error_page(request, message, logger)
|
||||
|
||||
|
||||
def save_key_values(request, *values):
|
||||
request.session['save_key_values'] = values
|
||||
|
||||
|
@ -132,7 +138,7 @@ def add_param_to_url(url, param_name, value):
|
|||
|
||||
def disco(request):
|
||||
if not request.method == "GET":
|
||||
message = _('disco: HTTP request not supported %s' % request.method)
|
||||
message = _('HTTP verb not supported %s' % request.method)
|
||||
return error_page(request, message, logger=logger)
|
||||
|
||||
entityID = None
|
||||
|
@ -175,12 +181,12 @@ def disco(request):
|
|||
isPAssive=False
|
||||
|
||||
if not entityID:
|
||||
message = _('disco: missing mandatory parameter entityID')
|
||||
message = _('missing mandatory parameter entityID')
|
||||
return error_page(request, message, logger=logger)
|
||||
|
||||
if not policy == \
|
||||
if policy != \
|
||||
'urn:oasis:names:tc:SAML:profiles:SSO:idp-discovery-protocol:single':
|
||||
message = _('disco: policy not implemented')
|
||||
message = _('policy %r not implemented') % policy
|
||||
return error_page(request, message, logger=logger)
|
||||
|
||||
# If we use metadata, we ignore the parameter return and take it from the
|
||||
|
@ -191,14 +197,14 @@ def disco(request):
|
|||
else:
|
||||
return_url = _return
|
||||
if not return_url:
|
||||
message = _('disco: unable to find a valid return url for %s' \
|
||||
message = _('unable to find a valid return url for %s' \
|
||||
% entityID)
|
||||
return error_page(request, message, logger=logger)
|
||||
|
||||
# Check that the return_url does not already contain a param with name
|
||||
# equal to returnIDParam. Else, it is an unconformant SP.
|
||||
if is_param_id_in_return_url(return_url, returnIDParam):
|
||||
message = _('disco: invalid return url %(return_url)s for %(entity_id)s' \
|
||||
message = _('invalid return url %(return_url)s for %(entity_id)s' \
|
||||
% dict(return_url=return_url, entity_id=entityID))
|
||||
return error_page(request, message, logger=logger)
|
||||
|
||||
|
|
|
@ -0,0 +1,43 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-07-24 11:31+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: disco_responder.py:141
|
||||
#, python-format
|
||||
msgid "HTTP verb not supported %s"
|
||||
msgstr "verbe HTTP %s non supporté"
|
||||
|
||||
#: disco_responder.py:184
|
||||
msgid "missing mandatory parameter entityID"
|
||||
msgstr "paramètre obligatoire entityID manquant"
|
||||
|
||||
#: disco_responder.py:189
|
||||
#, python-format
|
||||
msgid "policy %r not implemented"
|
||||
msgstr "le règlement %r n'est pas géré"
|
||||
|
||||
#: disco_responder.py:200
|
||||
#, python-format
|
||||
msgid "unable to find a valid return url for %s"
|
||||
msgstr "impossible de trouver une URL de retour valide pour %s"
|
||||
|
||||
#: disco_responder.py:207
|
||||
#, python-format
|
||||
msgid "invalid return url %(return_url)s for %(entity_id)s"
|
||||
msgstr "URL de retour %(return_url)s invalide pour %(entity_id)s"
|
|
@ -0,0 +1,43 @@
|
|||
# French translation of Authentic
|
||||
# Copyright (C) 2010, 2011 Entr'ouvert
|
||||
# This file is distributed under the same license as the Authentic package.
|
||||
# Frederic Peters <fpeters@entrouvert.com>, 2010.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Authentic\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-07-23 17:46+0200\n"
|
||||
"PO-Revision-Date: 2013-07-23 17:46+0200\n"
|
||||
"Last-Translator: Mikaël Ates <mates@entrouvert.com>\n"
|
||||
"Language-Team: None\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n>1;\n"
|
||||
|
||||
#: views.py:266
|
||||
msgid "Trust this site?"
|
||||
msgstr "Faire confiance à ce site ?"
|
||||
|
||||
#: templates/django_openid_provider/manage_id.html:5
|
||||
#: templates/django_openid_provider/manage_id_confirm.html:5
|
||||
msgid "Manage OpenID"
|
||||
msgstr "Gérer la connexion OpenID"
|
||||
|
||||
#: templates/django_openid_provider/manage_id.html:23
|
||||
msgid "Your current OpenID"
|
||||
msgstr "Vos identifiants OpenID actuels"
|
||||
|
||||
#: templates/django_openid_provider/manage_id.html:52
|
||||
msgid "Add a new OpenID identity"
|
||||
msgstr "Ajouter une nouvelle identité OpenID"
|
||||
|
||||
#: templates/django_openid_provider/manage_trustroot.html:5
|
||||
msgid "Manage trusted site"
|
||||
msgstr "Gérer vos sites de confiance"
|
||||
|
||||
#: templates/django_openid_provider/manage_trustroot.html:17
|
||||
msgid "Your trusted site"
|
||||
msgstr "Vos sites de confiance"
|
|
@ -0,0 +1,304 @@
|
|||
# French translation of Authentic
|
||||
# Copyright (C) 2010, 2011 Entr'ouvert
|
||||
# This file is distributed under the same license as the Authentic package.
|
||||
# Frederic Peters <fpeters@entrouvert.com>, 2010.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Authentic\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-07-23 17:54+0200\n"
|
||||
"PO-Revision-Date: 2013-07-23 17:56+0200\n"
|
||||
"Last-Translator: Mikaël Ates <mates@entrouvert.com>\n"
|
||||
"Language-Team: None\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n>1;\n"
|
||||
|
||||
#: models.py:54
|
||||
msgid "user consent for attributes propagation"
|
||||
msgstr "consentement utilisateur pour la propagation des attributs"
|
||||
|
||||
#: models.py:55
|
||||
msgid "user consents for attributes propagation"
|
||||
msgstr "consentements utilisateur pour la propagation des attributs"
|
||||
|
||||
#: models.py:58
|
||||
msgid "user {0} consent to release attributes {1} to provider {2}"
|
||||
msgstr ""
|
||||
"l'utilisateur {0} consent à libérer les attributs {1} au fournisseur {2}"
|
||||
|
||||
#: models.py:67
|
||||
msgid "Attribute name"
|
||||
msgstr "Nom de l'attribut"
|
||||
|
||||
#: models.py:73 models.py:170
|
||||
msgid "Output name format"
|
||||
msgstr "Format du nom de l'attribut en sortie"
|
||||
|
||||
#: models.py:79 models.py:177
|
||||
msgid "Output namespace"
|
||||
msgstr "Espace de nom de sortie"
|
||||
|
||||
#: models.py:83
|
||||
msgid "Required"
|
||||
msgstr "Requis"
|
||||
|
||||
#: models.py:86
|
||||
msgid "Attribute source"
|
||||
msgstr "Source d'attributs"
|
||||
|
||||
#: models.py:90
|
||||
msgid "attribute list item"
|
||||
msgstr "élément d'une liste d'attributs"
|
||||
|
||||
#: models.py:91
|
||||
msgid "attribute list items"
|
||||
msgstr "éléments d'une liste d'attributs"
|
||||
|
||||
#: models.py:112
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
#: models.py:115
|
||||
msgid "Attributes"
|
||||
msgstr "Attributs"
|
||||
|
||||
#: models.py:120
|
||||
msgid "attribute list"
|
||||
msgstr "liste d'attributs"
|
||||
|
||||
#: models.py:121
|
||||
msgid "attribute lists"
|
||||
msgstr "listes d'attributs"
|
||||
|
||||
#: models.py:133
|
||||
msgid "Enabled"
|
||||
msgstr "Activé"
|
||||
|
||||
#: models.py:135
|
||||
msgid "Ask the user consent before forwarding attributes"
|
||||
msgstr ""
|
||||
"Demander le consentement de l'utilisateur avant d'envoyer des attributs"
|
||||
|
||||
#: models.py:138
|
||||
msgid "Allow the user to select the forwarding attributes"
|
||||
msgstr "Permettre à l'utilisateur de séléctioner les attributs à envoyer"
|
||||
|
||||
#: models.py:145
|
||||
msgid "Pull attributes list"
|
||||
msgstr "Liste des attributs des sources locales"
|
||||
|
||||
#: models.py:154
|
||||
msgid "Forward pushed attributes"
|
||||
msgstr "Faire suivre les attributs poussés"
|
||||
|
||||
#: models.py:164
|
||||
msgid "Map forwarded pushed attributes"
|
||||
msgstr "Mapper les attributs poussés à faire suivre"
|
||||
|
||||
#: models.py:185
|
||||
msgid "Filter by source the forwarded pushed attributes"
|
||||
msgstr "Filtrer par source les attributs poussés à faire suivre"
|
||||
|
||||
#: models.py:193
|
||||
msgid "Filter by attribute names the forwarded pushed attributes"
|
||||
msgstr "Filtrer par attribut les attributs poussés à faire suivre"
|
||||
|
||||
#: models.py:201
|
||||
msgid "Filter by source and per attribute the forwarded pushed attributes"
|
||||
msgstr ""
|
||||
"Filtrer par source et par attribut les attributs poussés à faire suivre"
|
||||
|
||||
#: models.py:209
|
||||
msgid "Map filtered attributes"
|
||||
msgstr "Mapper les attributs filtrés"
|
||||
|
||||
#: models.py:216
|
||||
msgid "Send an error when a required attribute is missing"
|
||||
msgstr "envoyer une erreur lorsqu'un attribut requis est manquant"
|
||||
|
||||
#: models.py:223
|
||||
msgid "attribute policy"
|
||||
msgstr "règlement sur les attributs"
|
||||
|
||||
#: models.py:224
|
||||
msgid "attribute policies"
|
||||
msgstr "règlements sur les attributs"
|
||||
|
||||
#: views.py:108
|
||||
msgid "Local logout..."
|
||||
msgstr "Déconnexion locale"
|
||||
|
||||
#: views.py:116
|
||||
msgid "Logging out from all your services"
|
||||
msgstr "Déconnexion de tous vos services"
|
||||
|
||||
#: views.py:122
|
||||
msgid "Logged out"
|
||||
msgstr "Déconnecté"
|
||||
|
||||
#: saml/backend.py:69
|
||||
#, python-format
|
||||
msgid "Sending logout to %(name)s...."
|
||||
msgstr "Communication de la déconnexion à %(name)s...."
|
||||
|
||||
#: saml/saml2_endpoints.py:370
|
||||
#, python-format
|
||||
msgid ""
|
||||
"SAMLv2 Single Sign On: invalid message for WebSSO profile with HTTP-Redirect "
|
||||
"binding: %r"
|
||||
msgstr ""
|
||||
"SAMLv2 Single Sign On: message invalide pour le profile WebSSO avec le binding "
|
||||
"HTTP-Redirect: %r"
|
||||
|
||||
#: saml/saml2_endpoints.py:375
|
||||
msgid ""
|
||||
"SAMLv2 Single Sign On: the request cannot be answered because no valid "
|
||||
"protocol binding could be found"
|
||||
msgstr ""
|
||||
|
||||
#: saml/saml2_endpoints.py:393
|
||||
#, python-format
|
||||
msgid "sso: fail to load unknown provider %s"
|
||||
msgstr ""
|
||||
|
||||
#: saml/saml2_endpoints.py:400
|
||||
msgid "sso: No SP policy defined"
|
||||
msgstr ""
|
||||
|
||||
#: saml/saml2_endpoints.py:526
|
||||
msgid "continue_sso: error loading login"
|
||||
msgstr ""
|
||||
|
||||
#: saml/saml2_endpoints.py:530
|
||||
#, python-format
|
||||
msgid "continue_sso: unknown provider %s"
|
||||
msgstr ""
|
||||
|
||||
#: saml/saml2_endpoints.py:662 saml/saml2_endpoints.py:954
|
||||
#, python-format
|
||||
msgid "Provider %s is unknown"
|
||||
msgstr ""
|
||||
|
||||
#: saml/saml2_endpoints.py:668
|
||||
msgid "No service provider policy defined"
|
||||
msgstr ""
|
||||
|
||||
#: saml/saml2_endpoints.py:846
|
||||
msgid "Authentication response"
|
||||
msgstr ""
|
||||
|
||||
#: saml/saml2_endpoints.py:937
|
||||
msgid "Error trying to initiate a single sign on"
|
||||
msgstr ""
|
||||
|
||||
#: saml/saml2_endpoints.py:943
|
||||
msgid "A provider identifier was not provided"
|
||||
msgstr ""
|
||||
|
||||
#: saml/saml2_endpoints.py:974
|
||||
msgid "idp_sso: No SP policy defined"
|
||||
msgstr ""
|
||||
|
||||
#: saml/saml2_endpoints.py:986
|
||||
msgid "Server error"
|
||||
msgstr ""
|
||||
|
||||
#: saml/saml2_endpoints.py:1375 saml/saml2_endpoints.py:1385
|
||||
msgid "Logout response"
|
||||
msgstr ""
|
||||
|
||||
#: saml/saml2_endpoints.py:1378
|
||||
msgid "Invalid logout request"
|
||||
msgstr ""
|
||||
|
||||
#: templates/idp/account_management.html:5
|
||||
msgid "Authentic - Account Management"
|
||||
msgstr "Authentic - Gestion du compte"
|
||||
|
||||
#: templates/idp/account_management.html:10 templates/idp/homepage.html:13
|
||||
msgid "Account Management"
|
||||
msgstr "Gestion de votre compte"
|
||||
|
||||
#: templates/idp/account_management.html:11
|
||||
msgid "Profile"
|
||||
msgstr "Profil"
|
||||
|
||||
#: templates/idp/account_management.html:28
|
||||
msgid "Edit profile"
|
||||
msgstr "Edition du profil"
|
||||
|
||||
#: templates/idp/account_management.html:29
|
||||
msgid "Delete profile"
|
||||
msgstr "Supprimer le profil"
|
||||
|
||||
#: templates/idp/account_management.html:31
|
||||
msgid "Credentials"
|
||||
msgstr "Moyens d'authentification"
|
||||
|
||||
#: templates/idp/account_management.html:35
|
||||
msgid "Back"
|
||||
msgstr "Retour"
|
||||
|
||||
#: templates/idp/homepage.html:5
|
||||
msgid "Authentic"
|
||||
msgstr "Authentic"
|
||||
|
||||
#: templates/idp/homepage.html:20
|
||||
msgid "Services"
|
||||
msgstr "Services"
|
||||
|
||||
#: templates/idp/homepage.html:44
|
||||
msgid "Administration"
|
||||
msgstr "Administration"
|
||||
|
||||
#: templates/idp/logout.html:5
|
||||
msgid "Logout"
|
||||
msgstr "Déconnexion"
|
||||
|
||||
#: templates/idp/logout.html:18
|
||||
msgid "Continue logout"
|
||||
msgstr "Continuer la déconnexion"
|
||||
|
||||
#: templates/interaction/consent_attributes.html:4
|
||||
msgid "Consent page for attribute propagation"
|
||||
msgstr "Page de consentement pour la transmission des attributs"
|
||||
|
||||
#: templates/interaction/consent_attributes.html:14
|
||||
msgid "Choose attributes to send to "
|
||||
msgstr "Choisissez les attributs à envoyer"
|
||||
|
||||
#: templates/interaction/consent_attributes.html:31
|
||||
msgid "Send selected"
|
||||
msgstr "Envoyer la selection"
|
||||
|
||||
#: templates/interaction/consent_attributes.html:33
|
||||
msgid "Send all"
|
||||
msgstr "Tout envoyer"
|
||||
|
||||
#: templates/interaction/consent_attributes.html:35
|
||||
msgid "Refuse all"
|
||||
msgstr "Aucun"
|
||||
|
||||
#: templates/interaction/consent_federation.html:4
|
||||
msgid "Consent page for federation"
|
||||
msgstr "Page de consentement pour la fédération"
|
||||
|
||||
#: templates/interaction/consent_federation.html:13
|
||||
msgid "Do you accept to federate your account with "
|
||||
msgstr "Acceptez-vous de fédérer votre compte avec "
|
||||
|
||||
#: templates/interaction/consent_federation.html:15
|
||||
msgid "Do you accept to federate your account ?"
|
||||
msgstr "Acceptez-vous de federez vos comptes ?"
|
||||
|
||||
#: templates/interaction/consent_federation.html:23
|
||||
msgid "Accept"
|
||||
msgstr "Accepter"
|
||||
|
||||
#: templates/interaction/consent_federation.html:24
|
||||
msgid "Refuse"
|
||||
msgstr "Refuser"
|
|
@ -51,11 +51,16 @@ class UserConsentAttributes(models.Model):
|
|||
attributes = models.TextField()
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('User consent for attributes propagation')
|
||||
verbose_name = _('user consent for attributes propagation')
|
||||
verbose_name_plural = _('user consents for attributes propagation')
|
||||
|
||||
def __unicode__(self):
|
||||
return "User consent for attributes propagation"
|
||||
return _(u"user {0} consent to release attributes {1} to provider {2}") % (
|
||||
self.user, self.attributes, self.provider)
|
||||
|
||||
def __repr__(self):
|
||||
return '<UserConsentAttributes {0!r}>'.format(
|
||||
self.__dict__)
|
||||
|
||||
class AttributeItem(models.Model):
|
||||
attribute_name = models.CharField(
|
||||
|
@ -82,17 +87,25 @@ class AttributeItem(models.Model):
|
|||
blank = True, null = True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('attribute of a list (SSO Login)')
|
||||
verbose_name_plural = _('attributes of lists (SSO Login)')
|
||||
verbose_name = _('attribute list item')
|
||||
verbose_name_plural = _('attribute list items')
|
||||
|
||||
def __unicode__(self):
|
||||
s = self.attribute_name
|
||||
s += ' (Output name fomat: %s)' % self.output_name_format
|
||||
s += ' (Output namespace: %s)' % self.output_namespace
|
||||
s += ' (Required: %s)' % self.required
|
||||
s += ' (Source: %s)' % self.source
|
||||
attributes = []
|
||||
attributes.append(u'output name fomat: %s' % self.output_name_format)
|
||||
attributes.append(u'output namespace: %s' % self.output_namespace)
|
||||
if self.required:
|
||||
attributes.append(u'required' % self.required)
|
||||
if self.source:
|
||||
attributes.append(u'source: %s' % self.source)
|
||||
s += u' (%s)' % u', '.join(attributes)
|
||||
return s
|
||||
|
||||
def __repr__(self):
|
||||
return '<AttributeItem {0!r}>'.format(
|
||||
self.__dict__)
|
||||
|
||||
|
||||
class AttributeList(models.Model):
|
||||
name = models.CharField(
|
||||
|
@ -104,12 +117,16 @@ class AttributeList(models.Model):
|
|||
blank = True, null = True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('attribute list (SSO Login)')
|
||||
verbose_name_plural = _('attribute lists (SSO Login)')
|
||||
verbose_name = _('attribute list')
|
||||
verbose_name_plural = _('attribute lists')
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
def __repr__(self):
|
||||
return '<AttributeList name:{0!r} attributes:[{1:r}]>'.format(
|
||||
self.name, ', '.join(map(repr, self.attributes.all())))
|
||||
|
||||
|
||||
class AttributePolicy(models.Model):
|
||||
name = models.CharField(max_length = 100, unique = True)
|
||||
|
@ -203,12 +220,16 @@ class AttributePolicy(models.Model):
|
|||
#ask_user_consent = models.BooleanField(default=False)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('attribute options policy')
|
||||
verbose_name_plural = _('attribute options policies')
|
||||
verbose_name = _('attribute policy')
|
||||
verbose_name_plural = _('attribute policies')
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
def __repr__(self):
|
||||
return '<AttributePolicy {0!r}>'.format(self.__dict__)
|
||||
|
||||
|
||||
|
||||
def get_attribute_policy(provider):
|
||||
try:
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -60,7 +60,7 @@ def get_soap_message(request, on_error_raise = True):
|
|||
if request.method != 'POST' or \
|
||||
'text/xml' not in request.META['CONTENT_TYPE']:
|
||||
if on_error_raise:
|
||||
raise Http404(_('Only SOAP messages here'))
|
||||
raise Http404('Only SOAP messages here')
|
||||
else:
|
||||
return None
|
||||
return request.raw_post_data
|
||||
|
|
|
@ -0,0 +1,461 @@
|
|||
# French translation of Authentic
|
||||
# Copyright (C) 2010, 2011 Entr'ouvert
|
||||
# This file is distributed under the same license as the Authentic package.
|
||||
# Frederic Peters <fpeters@entrouvert.com>, 2010.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Authentic\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2013-07-24 11:14+0200\n"
|
||||
"PO-Revision-Date: 2013-07-24 11:14+0200\n"
|
||||
"Last-Translator: Mikaël Ates <mates@entrouvert.com>\n"
|
||||
"Language-Team: None\n"
|
||||
"Language: fr\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n>1;\n"
|
||||
|
||||
#: admin.py:148
|
||||
#, python-format
|
||||
msgid "Failure to resolve %(entity_id)s: %(error)s"
|
||||
msgstr "Échec dans la résolution de %(entity_id)s: %(error)s"
|
||||
|
||||
#: admin.py:152
|
||||
#, python-format
|
||||
msgid "Metadata update for: %s"
|
||||
msgstr "Mise à jour des metadatas pour: %s"
|
||||
|
||||
#: admin.py:165
|
||||
msgid "Metadata files"
|
||||
msgstr "Fichiers de metadonnées"
|
||||
|
||||
#: common.py:720
|
||||
msgid "Your access is denied. At least one attribute does not match."
|
||||
msgstr "Accés interdit. Au moins un attribut ne correspond pas."
|
||||
|
||||
#: models.py:23
|
||||
msgid "Bad metadata file"
|
||||
msgstr "Fichier de metadonnées incorrect"
|
||||
|
||||
#: models.py:77
|
||||
msgid "Use the default from the metadata file"
|
||||
msgstr "Utilisation des valeurs par défaut du fichier de métadonnées"
|
||||
|
||||
#: models.py:78 models.py:113
|
||||
msgid "Artifact binding"
|
||||
msgstr "Binding utilisant les artefacts"
|
||||
|
||||
#: models.py:79 models.py:114
|
||||
msgid "POST binding"
|
||||
msgstr "Binding utilisant le verbe HTTP POST"
|
||||
|
||||
#: models.py:85
|
||||
msgid "None"
|
||||
msgstr "Aucun"
|
||||
|
||||
#: models.py:87
|
||||
msgid "Persistent"
|
||||
msgstr "Persistant"
|
||||
|
||||
#: models.py:89
|
||||
msgid "Transient"
|
||||
msgstr "Temporaire"
|
||||
|
||||
#: models.py:91
|
||||
msgid "Email (only supported by SAMLv2)"
|
||||
msgstr "Email (seulement supporté en SAML2)"
|
||||
|
||||
#: models.py:119
|
||||
msgid "Redirect binding"
|
||||
msgstr "Binding utilisant les redirections HTTP"
|
||||
|
||||
#: models.py:120
|
||||
msgid "SOAP binding"
|
||||
msgstr "Binding utilisant le protocole SOAP sur HTTP"
|
||||
|
||||
#: models.py:125
|
||||
msgid "Let authentic decides which signatures to check"
|
||||
msgstr "Laisser authentic decider quelles signatures vérifier"
|
||||
|
||||
#: models.py:126
|
||||
msgid "Always check signatures"
|
||||
msgstr "Vérifier toutes les signatures"
|
||||
|
||||
#: models.py:127
|
||||
msgid "Does not check signatures"
|
||||
msgstr "Ne pas vérifier les signatures"
|
||||
|
||||
#: models.py:133
|
||||
msgid "How to verify signatures Authentication Request ?"
|
||||
msgstr "Comment vérifier les signatures des requêtes d'authentification"
|
||||
|
||||
#: models.py:143
|
||||
msgid "liberty service provider policy"
|
||||
msgstr "règlement d'options pour fournisseur de service liberty"
|
||||
|
||||
#: models.py:144
|
||||
msgid "liberty service provider policies"
|
||||
msgstr "règlements d'options pour fournisseur de service liberty"
|
||||
|
||||
#: models.py:149
|
||||
msgid "Account linking by authentication"
|
||||
msgstr "Liaison des comptes par authentification"
|
||||
|
||||
#: models.py:151
|
||||
msgid "Create new account"
|
||||
msgstr "Créer un nouveau compte"
|
||||
|
||||
#: models.py:155
|
||||
msgid "Ask authentication"
|
||||
msgstr "Requerir l'authentification"
|
||||
|
||||
#: models.py:156
|
||||
msgid "Open a session"
|
||||
msgstr "Etablir une session"
|
||||
|
||||
#: models.py:167 models.py:248 models.py:313
|
||||
msgid "name"
|
||||
msgstr "nom"
|
||||
|
||||
#: models.py:168 models.py:249 models.py:314 models.py:404 models.py:434
|
||||
msgid "Enabled"
|
||||
msgstr "Activé"
|
||||
|
||||
#: models.py:170
|
||||
msgid "Do not send a nameId Policy"
|
||||
msgstr "Ne pas envoyer une nameId Policy"
|
||||
|
||||
#: models.py:172
|
||||
msgid "Requested NameID format"
|
||||
msgstr "Format du NameID demandé"
|
||||
|
||||
#: models.py:178
|
||||
msgid "This IdP falsely sends a transient NameID which is in fact persistent"
|
||||
msgstr ""
|
||||
"Cet IdP envoie un nameID transient qui doit être considéré comme persistent"
|
||||
|
||||
#: models.py:180
|
||||
msgid "Allow IdP to create an identity"
|
||||
msgstr "Autoriser l'IdP à créer une identité"
|
||||
|
||||
#: models.py:182
|
||||
msgid ""
|
||||
"Binding for Authnresponse (taken from metadata by the IdP if not "
|
||||
"enabled)"
|
||||
msgstr ""
|
||||
"Transport pour les réponses d'authentification (extrait des métadonnées du "
|
||||
"fournisseur de service si non activé)"
|
||||
|
||||
#: models.py:185
|
||||
msgid "Binding for the SSO responses"
|
||||
msgstr "Binding pour les reponses au SSO"
|
||||
|
||||
#: models.py:189
|
||||
msgid ""
|
||||
"HTTP method for single logout request (taken from metadata if "
|
||||
"not enabled)"
|
||||
msgstr ""
|
||||
"Transport pour les requêtes de déconnexion (extrait des métadonnées du "
|
||||
"fournisseur de service si non activé)"
|
||||
|
||||
#: models.py:192
|
||||
msgid "HTTP binding for the SLO requests"
|
||||
msgstr "Binding HTTP pour les requêtes de SLO"
|
||||
|
||||
#: models.py:197
|
||||
msgid ""
|
||||
"HTTP method for federation termination request (taken from "
|
||||
"metadata if not enabled)"
|
||||
msgstr ""
|
||||
"Transport pour les requêtes de suppression de fédération (extrait des "
|
||||
"métadonnées du fournisseur de service si non activé)"
|
||||
|
||||
#: models.py:200
|
||||
msgid "HTTP method for the SLO requests"
|
||||
msgstr "Méthode HTTP pour les requêtes de SLO"
|
||||
|
||||
#: models.py:205
|
||||
msgid "Require the user consent be given at account linking"
|
||||
msgstr ""
|
||||
"Requerir que le consentement utilisateur soit donné lors de la liaison de "
|
||||
"compte"
|
||||
|
||||
#: models.py:208
|
||||
msgid "Force authentication"
|
||||
msgstr "Forcer l'authentification"
|
||||
|
||||
#: models.py:210
|
||||
msgid "Passive authentication"
|
||||
msgstr "Authentification sans action de l'utilisateur"
|
||||
|
||||
#: models.py:212
|
||||
msgid "Want AuthnRequest signed"
|
||||
msgstr "Les requêtes d'authentification doivent être signées"
|
||||
|
||||
#: models.py:215
|
||||
msgid "Behavior with persistent NameID"
|
||||
msgstr "Comportement avec un NameID persistent"
|
||||
|
||||
#: models.py:220
|
||||
msgid "Behavior with transient NameID"
|
||||
msgstr "Comportement avec un NameID transient"
|
||||
|
||||
#: models.py:226
|
||||
msgid "Return URL after a successful authentication"
|
||||
msgstr "URL de retour après un authentification valide"
|
||||
|
||||
#: models.py:228 models.py:276
|
||||
msgid "Accept to receive Single Logout requests"
|
||||
msgstr "Accepter les requêtes de déconnexion"
|
||||
|
||||
#: models.py:231 models.py:279
|
||||
msgid "Forward Single Logout requests"
|
||||
msgstr "Faire suivre les requêtes de déconnexion"
|
||||
|
||||
#: models.py:235 models.py:440
|
||||
msgid "identity provider options policy"
|
||||
msgstr "règlement des options de fournisseur d'identités"
|
||||
|
||||
#: models.py:236
|
||||
msgid "identity provider options policies"
|
||||
msgstr "règlements des options de fournisseur d'identités"
|
||||
|
||||
#: models.py:251
|
||||
msgid "Prefered assertion consumer binding"
|
||||
msgstr "Binding du consommateur d'assertion préféré"
|
||||
|
||||
#: models.py:254
|
||||
msgid "Encrypt NameID"
|
||||
msgstr "Encrypter le NameID"
|
||||
|
||||
#: models.py:256
|
||||
msgid "Encrypt Assertion"
|
||||
msgstr "Encrypter l'assertion"
|
||||
|
||||
#: models.py:258
|
||||
msgid "Authentication request signed"
|
||||
msgstr "Requête d'authentification signée"
|
||||
|
||||
#: models.py:260
|
||||
msgid "Allow IdP initiated SSO"
|
||||
msgstr "Autoriser le SSO initié par l'IdP"
|
||||
|
||||
#: models.py:267
|
||||
msgid "NameID formats accepted"
|
||||
msgstr "Formats de NameID acceptés"
|
||||
|
||||
#: models.py:274
|
||||
msgid "Ask user for consent when creating a federation"
|
||||
msgstr "Demander le consentement utilisateur à la création d'une fédération"
|
||||
|
||||
#: models.py:283 models.py:407
|
||||
msgid "service provider options policy"
|
||||
msgstr "règlement des options de fournisseur de services"
|
||||
|
||||
#: models.py:284
|
||||
msgid "service provider options policies"
|
||||
msgstr "règlement des options de fournisseur de services"
|
||||
|
||||
#: models.py:296
|
||||
msgid "authorization attribute map"
|
||||
msgstr "carte des attributs d'autorisation"
|
||||
|
||||
#: models.py:297
|
||||
msgid "authorization attribute maps"
|
||||
msgstr "cartes des attributs d'autorisation"
|
||||
|
||||
#: models.py:309
|
||||
msgid "authorization attribute mapping"
|
||||
msgstr "correspondance entre attributs d'autorisation"
|
||||
|
||||
#: models.py:310
|
||||
msgid "authorization attribute mappings"
|
||||
msgstr "correspondances entre attributs d'autorisation"
|
||||
|
||||
#: models.py:321
|
||||
msgid "Default message to display to the user when access is denied"
|
||||
msgstr ""
|
||||
"Message par défaut à afficher à l'utilisateur quand l'accès lui est refusé"
|
||||
|
||||
#: models.py:322
|
||||
msgid "You are not authorized to access the service."
|
||||
msgstr "Vous n'etes pas autorise à acceder a ce service."
|
||||
|
||||
#: models.py:325 models.py:447
|
||||
msgid "authorization identity providers policy"
|
||||
msgstr "règlement des autorisations pour les fournisseurs d'identité"
|
||||
|
||||
#: models.py:326
|
||||
msgid "authorization identity providers policies"
|
||||
msgstr "règlement des autorisations pour les fournisseurs d'identité"
|
||||
|
||||
#: models.py:335
|
||||
msgid "Internal nickname for the service provider"
|
||||
msgstr "Nom local du fournisseur de service"
|
||||
|
||||
#: models.py:378
|
||||
msgid "Protocol other than SAML 2.0 are unsupported"
|
||||
msgstr "Les protocoles autre que SAML 2.0 ne sont pas supportés"
|
||||
|
||||
#: models.py:382
|
||||
msgid "liberty provider"
|
||||
msgstr "fournisseur liberty"
|
||||
|
||||
#: models.py:383
|
||||
msgid "liberty providers"
|
||||
msgstr "fournisseurs liberty"
|
||||
|
||||
#: models.py:406
|
||||
msgid ""
|
||||
"The following options policy will apply except if a policy for all service "
|
||||
"provider is defined."
|
||||
msgstr ""
|
||||
"Active le règlement d'option de fournisseur de service qui suit sauf si un "
|
||||
"règlementpour tous les fournisseurs de service est actif"
|
||||
|
||||
#: models.py:409
|
||||
msgid "Protocol policy"
|
||||
msgstr "Règlement sur le protocole"
|
||||
|
||||
#: models.py:411
|
||||
msgid ""
|
||||
"The following attribute policy will apply except if a policy for all service "
|
||||
"provider is defined."
|
||||
msgstr ""
|
||||
"Le règlement sur les attributs qui suit s'appliquera sauf si un "
|
||||
"règlementpour tous les fournisseurs de services est défini."
|
||||
|
||||
#: models.py:414
|
||||
msgid "attribute policy"
|
||||
msgstr "règlement sur les attributs"
|
||||
|
||||
#: models.py:423
|
||||
msgid "liberty service provider"
|
||||
msgstr "fournisseur de service liberty"
|
||||
|
||||
#: models.py:424
|
||||
msgid "liberty service providers"
|
||||
msgstr "fournisseurs de service liberty"
|
||||
|
||||
#: models.py:436
|
||||
msgid ""
|
||||
"The following options policy will apply except if a policy for all identity "
|
||||
"provider is defined."
|
||||
msgstr ""
|
||||
"Le règlement d'option pour les fournisseurs d'identité qui suit s'appliquera "
|
||||
"sauf si un règlement pour tous les fournisseurs d'identité est défini."
|
||||
|
||||
#: models.py:443
|
||||
msgid ""
|
||||
"The following authorization policy will apply except if a policy for all "
|
||||
"identity provider is defined."
|
||||
msgstr ""
|
||||
"Le règlement des autorisations pour les fournisseurs d'identité qui suit "
|
||||
"s'appliquera sauf si un règlement pour tous les fournisseurs d'identité est "
|
||||
"défini."
|
||||
|
||||
#: models.py:457
|
||||
msgid "liberty identity provider"
|
||||
msgstr "fournisseur d'identité liberty"
|
||||
|
||||
#: models.py:458
|
||||
msgid "liberty identity providers"
|
||||
msgstr "fournisseurs d'identité liberty"
|
||||
|
||||
#: models.py:491
|
||||
msgid "liberty session dump"
|
||||
msgstr "dump de session liberty"
|
||||
|
||||
#: models.py:492
|
||||
msgid "liberty session dumps"
|
||||
msgstr "dumps de session liberty"
|
||||
|
||||
#: models.py:505
|
||||
msgid "liberty manage dump"
|
||||
msgstr "dump du profil gestion des fédérations liberty"
|
||||
|
||||
#: models.py:506
|
||||
msgid "liberty manage dumps"
|
||||
msgstr "dumps du profil gestion des fédérations liberty"
|
||||
|
||||
#: models.py:524
|
||||
msgid "liberty artifact"
|
||||
msgstr "artéfact liberty"
|
||||
|
||||
#: models.py:525
|
||||
msgid "liberty artifacts"
|
||||
msgstr "artéfacts liberty"
|
||||
|
||||
#: models.py:556
|
||||
msgid "liberty assertion"
|
||||
msgstr "assertion liberty"
|
||||
|
||||
#: models.py:557
|
||||
msgid "liberty assertions"
|
||||
msgstr "assertions liberty"
|
||||
|
||||
#: models.py:594
|
||||
msgid "liberty federation"
|
||||
msgstr "fédérations liberty"
|
||||
|
||||
#: models.py:595
|
||||
msgid "liberty federations"
|
||||
msgstr "fédérations liberty"
|
||||
|
||||
#: models.py:609
|
||||
msgid "Qualifier"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:611
|
||||
msgid "NameIDFormat"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:613
|
||||
msgid "NameID"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:615
|
||||
msgid "SPNameQualifier"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:642
|
||||
msgid "liberty session"
|
||||
msgstr "session liberty"
|
||||
|
||||
#: models.py:643
|
||||
msgid "liberty sessions"
|
||||
msgstr "sessions liberty"
|
||||
|
||||
#: models.py:652
|
||||
msgid "liberty service provider session"
|
||||
msgstr "session de fournisseur de service liberty"
|
||||
|
||||
#: models.py:653
|
||||
msgid "liberty service provider sessions"
|
||||
msgstr "sessions de fournisseur de service liberty"
|
||||
|
||||
#: models.py:663
|
||||
msgid "key value association"
|
||||
msgstr "association clé valeur"
|
||||
|
||||
#: models.py:664
|
||||
msgid "key value associations"
|
||||
msgstr "associations clé valeurs"
|
||||
|
||||
#: templates/saml/post_form.html:11
|
||||
msgid "You should be automatically redirected."
|
||||
msgstr "Vous devriez être automatiquement redirigés."
|
||||
|
||||
#: templates/saml/post_form.html:12
|
||||
msgid ""
|
||||
"If this page is still visible after a few seconds, press the Send button "
|
||||
"below."
|
||||
msgstr ""
|
||||
"Si cette page est encore visible après quelques secondes, cliquez sur le "
|
||||
"bouton Envoyer ci-dessous."
|
||||
|
||||
#: templates/saml/post_form.html:18
|
||||
msgid "Send"
|
||||
msgstr "Envoyer"
|
|
@ -76,7 +76,7 @@ def organization_name(provider):
|
|||
ASSERTION_CONSUMER_PROFILES = (
|
||||
('meta', _('Use the default from the metadata file')),
|
||||
('art', _('Artifact binding')),
|
||||
('post', _('Post binding')))
|
||||
('post', _('POST binding')))
|
||||
|
||||
DEFAULT_NAME_ID_FORMAT = 'none'
|
||||
|
||||
|
@ -139,6 +139,10 @@ class LibertyProviderPolicy(models.Model):
|
|||
options.append(u'AuthnRequest signature: %s' % SIGNATURE_VERIFY_HINT[self.authn_request_signature_check_hint])
|
||||
return self.name + ' (%s)' % ', '.join(options)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('liberty service provider policy')
|
||||
verbose_name_plural = _('liberty service provider policies')
|
||||
|
||||
|
||||
AUTHSAML2_UNAUTH_PERSISTENT = (
|
||||
('AUTHSAML2_UNAUTH_PERSISTENT_ACCOUNT_LINKING_BY_AUTH',
|
||||
|
@ -288,6 +292,10 @@ class AuthorizationAttributeMap(models.Model):
|
|||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('authorization attribute map')
|
||||
verbose_name_plural = _('authorization attribute maps')
|
||||
|
||||
class AuthorizationAttributeMapping(models.Model):
|
||||
source_attribute_name = models.CharField(max_length = 40,
|
||||
blank=True)
|
||||
|
@ -297,6 +305,10 @@ class AuthorizationAttributeMapping(models.Model):
|
|||
attribute_value = models.CharField(max_length = 40)
|
||||
map = models.ForeignKey(AuthorizationAttributeMap)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('authorization attribute mapping')
|
||||
verbose_name_plural = _('authorization attribute mappings')
|
||||
|
||||
class AuthorizationSPPolicy(models.Model):
|
||||
name = models.CharField(_('name'), max_length=80, unique=True)
|
||||
enabled = models.BooleanField(verbose_name = _('Enabled'))
|
||||
|
@ -310,8 +322,8 @@ class AuthorizationSPPolicy(models.Model):
|
|||
default=_('You are not authorized to access the service.'))
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('authorization policy')
|
||||
verbose_name_plural = _('authorization policies')
|
||||
verbose_name = _('authorization identity providers policy')
|
||||
verbose_name_plural = _('authorization identity providers policies')
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
@ -368,6 +380,7 @@ class LibertyProvider(models.Model):
|
|||
class Meta:
|
||||
ordering = ('name',)
|
||||
verbose_name = _('liberty provider')
|
||||
verbose_name_plural = _('liberty providers')
|
||||
|
||||
def get_all_custom_or_default(instance, name):
|
||||
model = instance._meta.get_field_by_name(name)[0].rel.to
|
||||
|
@ -391,14 +404,14 @@ class LibertyServiceProvider(models.Model):
|
|||
enabled = models.BooleanField(verbose_name = _('Enabled'))
|
||||
enable_following_sp_options_policy = models.BooleanField(verbose_name = \
|
||||
_('The following options policy will apply except if a policy for all service provider is defined.'))
|
||||
sp_options_policy = models.ForeignKey(SPOptionsIdPPolicy, related_name = "sp_options_policy", verbose_name = _('SP Options Policy'), blank=True, null=True)
|
||||
sp_options_policy = models.ForeignKey(SPOptionsIdPPolicy, related_name = "sp_options_policy", verbose_name = _('service provider options policy'), blank=True, null=True)
|
||||
policy = models.ForeignKey(LibertyProviderPolicy,
|
||||
verbose_name=_("Protocol policy"), null=True, default=1)
|
||||
enable_following_attribute_policy = models.BooleanField(verbose_name = \
|
||||
_('The following attribute policy will apply except if a policy for all service provider is defined.'))
|
||||
attribute_policy = models.ForeignKey(AttributePolicy,
|
||||
related_name = "attribute_policy",
|
||||
verbose_name=_("Attribute policy"), null=True, blank=True)
|
||||
verbose_name=_("attribute policy"), null=True, blank=True)
|
||||
|
||||
def get_policy(self):
|
||||
return get_all_custom_or_default(self, 'policy')
|
||||
|
@ -406,6 +419,10 @@ class LibertyServiceProvider(models.Model):
|
|||
def __unicode__(self):
|
||||
return unicode(self.liberty_provider)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('liberty service provider')
|
||||
verbose_name_plural = _('liberty service providers')
|
||||
|
||||
|
||||
# TODO: The choice for requests must be restricted by the IdP metadata
|
||||
# The SP then chooses the binding in this list.
|
||||
|
@ -416,11 +433,18 @@ class LibertyIdentityProvider(models.Model):
|
|||
primary_key = True, related_name = 'identity_provider')
|
||||
enabled = models.BooleanField(verbose_name = _('Enabled'))
|
||||
enable_following_idp_options_policy = models.BooleanField(verbose_name = \
|
||||
_('The following options policy will apply except if a policy for all identity provider is defined.'))
|
||||
idp_options_policy = models.ForeignKey(IdPOptionsSPPolicy, related_name = "idp_options_policy", verbose_name = _('IdP Options Policy'), blank=True, null=True)
|
||||
_('The following options policy will apply except if a policy for all '
|
||||
'identity provider is defined.'))
|
||||
idp_options_policy = models.ForeignKey(IdPOptionsSPPolicy,
|
||||
related_name="idp_options_policy",
|
||||
verbose_name=_('identity provider options policy'), blank=True,
|
||||
null=True)
|
||||
enable_following_authorization_policy = models.BooleanField(verbose_name = \
|
||||
_('The following authorization policy will apply except if a policy for all identity provider is defined.'))
|
||||
authorization_policy = models.ForeignKey(AuthorizationSPPolicy, related_name = "authorization_policy", verbose_name = _('Authorization Policy'), blank=True, null=True)
|
||||
_('The following authorization policy will apply except if a policy for'
|
||||
' all identity provider is defined.'))
|
||||
authorization_policy = models.ForeignKey(AuthorizationSPPolicy,
|
||||
related_name="authorization_policy",
|
||||
verbose_name=_('authorization identity providers policy'), blank=True, null=True)
|
||||
|
||||
# TODO: add clean method which checks that the LassoProvider we can create
|
||||
# with the metadata file support the IDP role
|
||||
|
@ -429,6 +453,9 @@ class LibertyIdentityProvider(models.Model):
|
|||
def __unicode__(self):
|
||||
return unicode(self.liberty_provider)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('liberty identity provider')
|
||||
verbose_name_plural = _('liberty identity providers')
|
||||
|
||||
class SessionLinkedManager(models.Manager):
|
||||
def cleanup(self):
|
||||
|
@ -460,6 +487,10 @@ class LibertySessionDump(models.Model):
|
|||
|
||||
objects = SessionLinkedManager()
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('liberty session dump')
|
||||
verbose_name_plural = _('liberty session dumps')
|
||||
|
||||
class LibertyManageDump(models.Model):
|
||||
'''Store lasso manage dump
|
||||
|
||||
|
@ -470,6 +501,10 @@ class LibertyManageDump(models.Model):
|
|||
|
||||
objects = SessionLinkedManager()
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('liberty manage dump')
|
||||
verbose_name_plural = _('liberty manage dumps')
|
||||
|
||||
class LibertyArtifactManager(models.Manager):
|
||||
def cleanup(self):
|
||||
expire = getattr(settings, 'SAML2_ARTIFACT_EXPIRATION', 600)
|
||||
|
@ -485,6 +520,10 @@ class LibertyArtifact(models.Model):
|
|||
|
||||
objects = LibertyArtifactManager()
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('liberty artifact')
|
||||
verbose_name_plural = _('liberty artifacts')
|
||||
|
||||
def nameid2kwargs(name_id):
|
||||
return {
|
||||
'name_id_content': name_id.content,
|
||||
|
@ -513,6 +552,10 @@ class LibertyAssertion(models.Model):
|
|||
kwargs['assertion'] = saml2_assertion.exportToXml()
|
||||
models.Model.__init__(self, *args, **kwargs)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('liberty assertion')
|
||||
verbose_name_plural = _('liberty assertions')
|
||||
|
||||
class LibertyFederation(models.Model):
|
||||
"""Store a federation, i.e. an identifier shared with another provider, be
|
||||
it IdP or SP"""
|
||||
|
@ -548,8 +591,8 @@ class LibertyFederation(models.Model):
|
|||
return not qs.exists()
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("Liberty federation")
|
||||
verbose_name_plural = _("Liberty federations")
|
||||
verbose_name = _("liberty federation")
|
||||
verbose_name_plural = _("liberty federations")
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name_id_content
|
||||
|
@ -589,17 +632,26 @@ class LibertySession(models.Model):
|
|||
@classmethod
|
||||
def get_for_nameid_and_session_indexes(cls, name_id, session_indexes):
|
||||
kwargs = nameid2kwargs(name_id)
|
||||
return LibertySession.objects.filter(session_index__in = session_indexes, **kwargs)
|
||||
return LibertySession.objects.filter(session_index__in=session_indexes,
|
||||
**kwargs)
|
||||
|
||||
def __unicode__(self):
|
||||
return '<LibertySession %s>' % self.__dict__
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("liberty session")
|
||||
verbose_name_plural = _("liberty sessions")
|
||||
|
||||
class LibertySessionSP(models.Model):
|
||||
"""Store the link between a Django session and a Liberty session on the SP"""
|
||||
django_session_key = models.CharField(max_length = 128)
|
||||
session_index = models.CharField(max_length = 80, )
|
||||
federation = models.ForeignKey(LibertyFederation)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("liberty service provider session")
|
||||
verbose_name_plural = _("liberty service provider sessions")
|
||||
|
||||
class KeyValue(models.Model):
|
||||
key = models.CharField(max_length=128, primary_key=True)
|
||||
value = PickledObjectField()
|
||||
|
@ -607,6 +659,10 @@ class KeyValue(models.Model):
|
|||
def __unicode__(self):
|
||||
return self.key
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("key value association")
|
||||
verbose_name_plural = _("key value associations")
|
||||
|
||||
def save_key_values(key, *values):
|
||||
KeyValue(key = key, value = values).save()
|
||||
|
||||
|
|
|
@ -1,38 +0,0 @@
|
|||
{% extends "base.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %} {% trans "Consent page" %} {% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
|
||||
{% load i18n %}
|
||||
<div id="consent">
|
||||
<p>
|
||||
{% if provider_id %}
|
||||
{% trans "Do you accept to federate your account with " %} <strong>{{ provider_id }}</strong> ?
|
||||
{% else %}
|
||||
{% trans "Do you accept to federate your account ?" %}
|
||||
{% endif %}
|
||||
{{ provider_id2 }}
|
||||
</p>
|
||||
<p>
|
||||
{% if attributes %}
|
||||
{% trans "Do you accept to send these attributes?" %}
|
||||
<ul>
|
||||
{% for attribute in attributes %}
|
||||
<li>{{ attribute }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
</p>
|
||||
<form method="post" action="">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="next" value="{{ next }}" />
|
||||
<input type="hidden" name="nonce" value="{{ nonce }}" />
|
||||
<input type="submit" name="accept" value="{% trans 'Accept' %}"/>
|
||||
<input type="submit" name="refuse" value="{% trans 'Refuse' %}"/>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
|
@ -1,8 +0,0 @@
|
|||
{% extends "base.html" %}
|
||||
{% load i18n %}
|
||||
|
||||
{% block title %}{% trans "Create profile" %}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{{ profile }}
|
||||
{% endblock %}
|
Loading…
Reference in New Issue