Add a display field to Identity Providers
This commit is contained in:
parent
aa433d3c58
commit
b0a07efe41
9 changed files with 119 additions and 74 deletions
|
@ -354,6 +354,9 @@ An identity provider comes with 5 fields:
|
|||
* `CAS protocol version`: the version of the CAS protocol to use to contact the identity provider.
|
||||
The default is version 3.
|
||||
* `Verbose name`: the name used on the login page to display the identity provider.
|
||||
* `Display`: a boolean controlling the display of the identity provider on the login page.
|
||||
Beware that this do not disable the identity provider, it just hide it on the login page.
|
||||
User will always be able to log in using this provider by fetching `/federate/provider_suffix`.
|
||||
|
||||
|
||||
In federation mode, ``django-cas-server`` build user's username as follow:
|
||||
|
|
|
@ -93,7 +93,8 @@ class ServicePatternAdmin(admin.ModelAdmin):
|
|||
|
||||
|
||||
class FederatedIendityProviderAdmin(admin.ModelAdmin):
|
||||
fields = ('pos', 'suffix', 'server_url', 'cas_protocol_version', 'verbose_name')
|
||||
fields = ('pos', 'suffix', 'server_url', 'cas_protocol_version', 'verbose_name', 'display')
|
||||
list_display = ('verbose_name', 'suffix', 'display')
|
||||
|
||||
|
||||
admin.site.register(User, UserAdmin)
|
||||
|
|
|
@ -34,7 +34,7 @@ class FederateSelect(forms.Form):
|
|||
allowing the user to choose a identity provider.
|
||||
"""
|
||||
provider = forms.ModelChoiceField(
|
||||
queryset=models.FederatedIendityProvider.objects.all().order_by(
|
||||
queryset=models.FederatedIendityProvider.objects.filter(display=True).order_by(
|
||||
"pos",
|
||||
"verbose_name",
|
||||
"suffix"
|
||||
|
|
Binary file not shown.
|
@ -7,8 +7,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: cas_server\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-07-04 17:15+0200\n"
|
||||
"PO-Revision-Date: 2016-07-04 17:15+0200\n"
|
||||
"POT-Creation-Date: 2016-07-04 17:36+0200\n"
|
||||
"PO-Revision-Date: 2016-07-04 17:39+0200\n"
|
||||
"Last-Translator: Valentin Samir <valentin.samir@crans.org>\n"
|
||||
"Language-Team: django <LL@li.org>\n"
|
||||
"Language: en\n"
|
||||
|
@ -104,48 +104,56 @@ msgstr ""
|
|||
msgid "Name for this identity provider displayed on the login page"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:70 models.py:312
|
||||
#: models.py:70 models.py:317
|
||||
msgid "position"
|
||||
msgstr "position"
|
||||
|
||||
#: models.py:159
|
||||
#: models.py:80
|
||||
msgid "display"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:81
|
||||
msgid "Display the provider on the login page"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:164
|
||||
msgid "User"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:160
|
||||
#: models.py:165
|
||||
msgid "Users"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:229
|
||||
#: models.py:234
|
||||
#, python-format
|
||||
msgid "Error during service logout %s"
|
||||
msgstr "Error during service logout %s"
|
||||
|
||||
#: models.py:307
|
||||
#: models.py:312
|
||||
msgid "Service pattern"
|
||||
msgstr "Service pattern"
|
||||
|
||||
#: models.py:308
|
||||
#: models.py:313
|
||||
msgid "Services patterns"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:313
|
||||
#: models.py:318
|
||||
msgid "service patterns are sorted using the position attribute"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:320 models.py:444
|
||||
#: models.py:325 models.py:449
|
||||
msgid "name"
|
||||
msgstr "name"
|
||||
|
||||
#: models.py:321
|
||||
#: models.py:326
|
||||
msgid "A name for the service"
|
||||
msgstr "A name for the service"
|
||||
|
||||
#: models.py:326 models.py:473 models.py:492
|
||||
#: models.py:331 models.py:478 models.py:497
|
||||
msgid "pattern"
|
||||
msgstr "pattern"
|
||||
|
||||
#: models.py:328
|
||||
#: models.py:333
|
||||
msgid ""
|
||||
"A regular expression matching services. Will usually looks like '^https://"
|
||||
"some\\.server\\.com/path/.*$'.As it is a regular expression, special "
|
||||
|
@ -155,73 +163,73 @@ msgstr ""
|
|||
"some\\.server\\.com/path/.*$'.As it is a regular expression, special "
|
||||
"character must be escaped with a '\\'."
|
||||
|
||||
#: models.py:337
|
||||
#: models.py:342
|
||||
msgid "user field"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:338
|
||||
#: models.py:343
|
||||
msgid "Name of the attribut to transmit as username, empty = login"
|
||||
msgstr "Name of the attribut to transmit as username, empty = login"
|
||||
|
||||
#: models.py:342
|
||||
#: models.py:347
|
||||
msgid "restrict username"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:343
|
||||
#: models.py:348
|
||||
msgid "Limit username allowed to connect to the list provided bellow"
|
||||
msgstr "Limit username allowed to connect to the list provided bellow"
|
||||
|
||||
#: models.py:347
|
||||
#: models.py:352
|
||||
msgid "proxy"
|
||||
msgstr "proxy"
|
||||
|
||||
#: models.py:348
|
||||
#: models.py:353
|
||||
msgid "Proxy tickets can be delivered to the service"
|
||||
msgstr "Proxy tickets can be delivered to the service"
|
||||
|
||||
#: models.py:352
|
||||
#: models.py:357
|
||||
msgid "proxy callback"
|
||||
msgstr "proxy callback"
|
||||
|
||||
#: models.py:353
|
||||
#: models.py:358
|
||||
msgid "can be used as a proxy callback to deliver PGT"
|
||||
msgstr "can be used as a proxy callback to deliver PGT"
|
||||
|
||||
#: models.py:357
|
||||
#: models.py:362
|
||||
msgid "single log out"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:358
|
||||
#: models.py:363
|
||||
msgid "Enable SLO for the service"
|
||||
msgstr "Enable SLO for the service"
|
||||
|
||||
#: models.py:365
|
||||
#: models.py:370
|
||||
msgid "single log out callback"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:366
|
||||
#: models.py:371
|
||||
msgid ""
|
||||
"URL where the SLO request will be POST. empty = service url\n"
|
||||
"This is usefull for non HTTP proxied services."
|
||||
msgstr ""
|
||||
|
||||
#: models.py:428
|
||||
#: models.py:433
|
||||
msgid "username"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:429
|
||||
#: models.py:434
|
||||
msgid "username allowed to connect to the service"
|
||||
msgstr "username allowed to connect to the service"
|
||||
|
||||
#: models.py:445
|
||||
#: models.py:450
|
||||
msgid "name of an attribut to send to the service, use * for all attributes"
|
||||
msgstr "name of an attribut to send to the service, use * for all attributes"
|
||||
|
||||
#: models.py:450 models.py:498
|
||||
#: models.py:455 models.py:503
|
||||
msgid "replace"
|
||||
msgstr "replace"
|
||||
|
||||
#: models.py:451
|
||||
#: models.py:456
|
||||
msgid ""
|
||||
"name under which the attribut will be showto the service. empty = default "
|
||||
"name of the attribut"
|
||||
|
@ -229,27 +237,27 @@ msgstr ""
|
|||
"name under which the attribut will be showto the service. empty = default "
|
||||
"name of the attribut"
|
||||
|
||||
#: models.py:468 models.py:487
|
||||
#: models.py:473 models.py:492
|
||||
msgid "attribut"
|
||||
msgstr "attribut"
|
||||
|
||||
#: models.py:469
|
||||
#: models.py:474
|
||||
msgid "Name of the attribut which must verify pattern"
|
||||
msgstr "Name of the attribut which must verify pattern"
|
||||
|
||||
#: models.py:474
|
||||
#: models.py:479
|
||||
msgid "a regular expression"
|
||||
msgstr "a regular expression"
|
||||
|
||||
#: models.py:488
|
||||
#: models.py:493
|
||||
msgid "Name of the attribut for which the value must be replace"
|
||||
msgstr "Name of the attribut for which the value must be replace"
|
||||
|
||||
#: models.py:493
|
||||
#: models.py:498
|
||||
msgid "An regular expression maching whats need to be replaced"
|
||||
msgstr "An regular expression maching whats need to be replaced"
|
||||
|
||||
#: models.py:499
|
||||
#: models.py:504
|
||||
msgid "replace expression, groups are capture by \\1, \\2 …"
|
||||
msgstr "replace expression, groups are capture by \\1, \\2 …"
|
||||
|
||||
|
|
Binary file not shown.
|
@ -7,8 +7,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: cas_server\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-07-04 17:15+0200\n"
|
||||
"PO-Revision-Date: 2016-07-04 17:21+0200\n"
|
||||
"POT-Creation-Date: 2016-07-04 17:36+0200\n"
|
||||
"PO-Revision-Date: 2016-07-04 17:37+0200\n"
|
||||
"Last-Translator: Valentin Samir <valentin.samir@crans.org>\n"
|
||||
"Language-Team: django <LL@li.org>\n"
|
||||
"Language: fr\n"
|
||||
|
@ -111,48 +111,56 @@ msgstr "Nom du fournisseur"
|
|||
msgid "Name for this identity provider displayed on the login page"
|
||||
msgstr "Nom affiché pour ce fournisseur d'identité sur la page de connexion"
|
||||
|
||||
#: models.py:70 models.py:312
|
||||
#: models.py:70 models.py:317
|
||||
msgid "position"
|
||||
msgstr "position"
|
||||
|
||||
#: models.py:159
|
||||
#: models.py:80
|
||||
msgid "display"
|
||||
msgstr "afficher"
|
||||
|
||||
#: models.py:81
|
||||
msgid "Display the provider on the login page"
|
||||
msgstr "Afficher le fournisseur d'identité sur la page de connexion"
|
||||
|
||||
#: models.py:164
|
||||
msgid "User"
|
||||
msgstr "Utilisateur"
|
||||
|
||||
#: models.py:160
|
||||
#: models.py:165
|
||||
msgid "Users"
|
||||
msgstr "Utilisateurs"
|
||||
|
||||
#: models.py:229
|
||||
#: models.py:234
|
||||
#, python-format
|
||||
msgid "Error during service logout %s"
|
||||
msgstr "Une erreur est survenue durant la déconnexion du service %s"
|
||||
|
||||
#: models.py:307
|
||||
#: models.py:312
|
||||
msgid "Service pattern"
|
||||
msgstr "Motif de service"
|
||||
|
||||
#: models.py:308
|
||||
#: models.py:313
|
||||
msgid "Services patterns"
|
||||
msgstr "Motifs de services"
|
||||
|
||||
#: models.py:313
|
||||
#: models.py:318
|
||||
msgid "service patterns are sorted using the position attribute"
|
||||
msgstr "Les motifs de service sont trié selon l'attribut position"
|
||||
|
||||
#: models.py:320 models.py:444
|
||||
#: models.py:325 models.py:449
|
||||
msgid "name"
|
||||
msgstr "nom"
|
||||
|
||||
#: models.py:321
|
||||
#: models.py:326
|
||||
msgid "A name for the service"
|
||||
msgstr "Un nom pour le service"
|
||||
|
||||
#: models.py:326 models.py:473 models.py:492
|
||||
#: models.py:331 models.py:478 models.py:497
|
||||
msgid "pattern"
|
||||
msgstr "motif"
|
||||
|
||||
#: models.py:328
|
||||
#: models.py:333
|
||||
msgid ""
|
||||
"A regular expression matching services. Will usually looks like '^https://"
|
||||
"some\\.server\\.com/path/.*$'.As it is a regular expression, special "
|
||||
|
@ -163,55 +171,55 @@ msgstr ""
|
|||
"expression rationnelle, les caractères spéciaux doivent être échappés avec "
|
||||
"un '\\'."
|
||||
|
||||
#: models.py:337
|
||||
#: models.py:342
|
||||
msgid "user field"
|
||||
msgstr "champ utilisateur"
|
||||
|
||||
#: models.py:338
|
||||
#: models.py:343
|
||||
msgid "Name of the attribut to transmit as username, empty = login"
|
||||
msgstr ""
|
||||
"Nom de l'attribut devant être transmis comme nom d'utilisateur au service. "
|
||||
"vide = nom de connection"
|
||||
|
||||
#: models.py:342
|
||||
#: models.py:347
|
||||
msgid "restrict username"
|
||||
msgstr "limiter les noms d'utilisateurs"
|
||||
|
||||
#: models.py:343
|
||||
#: models.py:348
|
||||
msgid "Limit username allowed to connect to the list provided bellow"
|
||||
msgstr ""
|
||||
"Limiter les noms d'utilisateurs autorisé à se connecter à la liste fournie "
|
||||
"ci-dessous"
|
||||
|
||||
#: models.py:347
|
||||
#: models.py:352
|
||||
msgid "proxy"
|
||||
msgstr "proxy"
|
||||
|
||||
#: models.py:348
|
||||
#: models.py:353
|
||||
msgid "Proxy tickets can be delivered to the service"
|
||||
msgstr "des proxy tickets peuvent être délivrés au service"
|
||||
|
||||
#: models.py:352
|
||||
#: models.py:357
|
||||
msgid "proxy callback"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:353
|
||||
#: models.py:358
|
||||
msgid "can be used as a proxy callback to deliver PGT"
|
||||
msgstr "peut être utilisé comme un callback pour recevoir un PGT"
|
||||
|
||||
#: models.py:357
|
||||
#: models.py:362
|
||||
msgid "single log out"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:358
|
||||
#: models.py:363
|
||||
msgid "Enable SLO for the service"
|
||||
msgstr "Active le SLO pour le service"
|
||||
|
||||
#: models.py:365
|
||||
#: models.py:370
|
||||
msgid "single log out callback"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:366
|
||||
#: models.py:371
|
||||
msgid ""
|
||||
"URL where the SLO request will be POST. empty = service url\n"
|
||||
"This is usefull for non HTTP proxied services."
|
||||
|
@ -220,51 +228,51 @@ msgstr ""
|
|||
"service\n"
|
||||
"Ceci n'est utilise que pour des services non HTTP proxifiés"
|
||||
|
||||
#: models.py:428
|
||||
#: models.py:433
|
||||
msgid "username"
|
||||
msgstr "nom d'utilisateur"
|
||||
|
||||
#: models.py:429
|
||||
#: models.py:434
|
||||
msgid "username allowed to connect to the service"
|
||||
msgstr "noms d'utilisateurs autorisé à se connecter au service"
|
||||
|
||||
#: models.py:445
|
||||
#: models.py:450
|
||||
msgid "name of an attribut to send to the service, use * for all attributes"
|
||||
msgstr ""
|
||||
"nom d'un attribut a envoyer au service, utiliser * pour tous les attributs"
|
||||
|
||||
#: models.py:450 models.py:498
|
||||
#: models.py:455 models.py:503
|
||||
msgid "replace"
|
||||
msgstr "remplacement"
|
||||
|
||||
#: models.py:451
|
||||
#: models.py:456
|
||||
msgid ""
|
||||
"name under which the attribut will be showto the service. empty = default "
|
||||
"name of the attribut"
|
||||
msgstr ""
|
||||
"nom sous lequel l'attribut sera rendu visible au service. vide = inchangé"
|
||||
|
||||
#: models.py:468 models.py:487
|
||||
#: models.py:473 models.py:492
|
||||
msgid "attribut"
|
||||
msgstr "attribut"
|
||||
|
||||
#: models.py:469
|
||||
#: models.py:474
|
||||
msgid "Name of the attribut which must verify pattern"
|
||||
msgstr "Nom de l'attribut devant vérifier un motif"
|
||||
|
||||
#: models.py:474
|
||||
#: models.py:479
|
||||
msgid "a regular expression"
|
||||
msgstr "une expression régulière"
|
||||
|
||||
#: models.py:488
|
||||
#: models.py:493
|
||||
msgid "Name of the attribut for which the value must be replace"
|
||||
msgstr "nom de l'attribue pour lequel la valeur doit être remplacé"
|
||||
|
||||
#: models.py:493
|
||||
#: models.py:498
|
||||
msgid "An regular expression maching whats need to be replaced"
|
||||
msgstr "une expression régulière reconnaissant ce qui doit être remplacé"
|
||||
|
||||
#: models.py:499
|
||||
#: models.py:504
|
||||
msgid "replace expression, groups are capture by \\1, \\2 …"
|
||||
msgstr "expression de remplacement, les groupe sont capturé par \\1, \\2"
|
||||
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.9.7 on 2016-07-04 15:33
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('cas_server', '0007_auto_20160704_1510'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='federatediendityprovider',
|
||||
name='display',
|
||||
field=models.BooleanField(default=True, help_text='Display the provider on the login page', verbose_name='display'),
|
||||
),
|
||||
]
|
|
@ -75,6 +75,11 @@ class FederatedIendityProvider(models.Model):
|
|||
)
|
||||
)
|
||||
)
|
||||
display = models.BooleanField(
|
||||
default=True,
|
||||
verbose_name=_(u"display"),
|
||||
help_text=_("Display the provider on the login page")
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return self.verbose_name
|
||||
|
|
Loading…
Reference in a new issue