Development #44254
Placer le bouton FC par défaut en premier pour les nouveaux déploiements
0%
Description
Accord avec la DINUM. Pour éviter une opération CPF et une opération CPT et le délai entre les deux pendant lequel le bouton n'est pas en premier.
Demandes liées
Historique
Mis à jour par Frédéric Péters il y a presque 4 ans
Faire ça par défaut dans authentic2-auth-fc, plutôt que porter une configuration partout ? (avec possibilité pour les déploiements existants d'alors poser une configuration inverse, pour qu'ils ne changent pas).
Mis à jour par Mikaël Ates il y a presque 4 ans
- Sujet changé de placer le bouton FC par défaut en premier pour les nouveaux déploiements à Placer le bouton FC par défaut en premier pour les nouveaux déploiements
Mis à jour par Serghei Mihai il y a presque 4 ans
- Lié à Development #44393: auth_fc: définir une priorité afin que le bloc s'affiche en premier sur la page de connexion ajouté
Mis à jour par Serghei Mihai il y a presque 4 ans
Pour garder la deuxième position sur les déploiements existants on peut s'en sortir avec du code executé avec runscript
.
On prend le 6 mai comme date de référence car c'est à ce moment qu'on a officialisé avec la DINUM le fait de placer le bouton en premier par défaut.
Et on épargne les déploiements existants, avec demande de la part du client de placer FC en premier (Arles, la Dordogne, j'en zappe?):
import json from django.utils.timezone import datetime, make_aware from hobo.deploy.signals import notify_agents from hobo.environment.models import Authentic from hobo.environment.utils import get_setting_variable DOMAINS_WITH_FC_FIRST = ['https://moncompte-demarches.arles.fr/', 'https://connexion.demarches.dordogne.fr/', ] for a2 in Authentic.objects.filter(last_operational_success_timestamp__lt=make_aware(datetime(2020, 5, 6)), secondary=False): if a2.base_url in DOMAINS_WITH_FC_FIRST: continue variable = get_setting_variable('AUTH_FRONTENDS_KWARGS', service=a2) variable.value = json.dumps({'fc': {'priority': 0}}) variable.save() notify_agents(None)
Mis à jour par Frédéric Péters il y a presque 4 ans
Ça m'a l'air plein d'espoir last_operational_success_timestamp__lt.
J'imaginais de mon côté que cela passe par des settings.json, parce que je n'aime pas passer par hobo pour ça, surtout pour de la donnée structurée ainsi, surtout pour des variables attachées à un unique service.
Mis à jour par Serghei Mihai il y a presque 4 ans
Effectivement poser la variable qu'on ne pourra pas éditer facilement (sans UI) n'est pas top.
C'est mieux de poser la conf dans le settings.json
de chaque tenant, en excluant les anciens déploiements avec FC en premier et les récents:
https://moncompte-demarches.arles.fr/ https://connexion.demarches.dordogne.fr/ https://connexion.icitoyen.fr/ https://connexion.mesdemarches.saintlaurentduvar.fr/ https://connexion.demarches.g-ny.eu/ https://connexion.services-en-ligne.correze.fr/
Mis à jour par Serghei Mihai il y a presque 4 ans
- Statut changé de Nouveau à En cours
- Assigné à mis à Serghei Mihai
Code suivant éxecuté en recette avec runscript
:
import json import os from django.db import connection from django.conf import settings DOMAINS_WITH_FC_FIRST = [ # prod 'https://moncompte-demarches.arles.fr', 'https://connexion.demarches.dordogne.fr', 'https://connexion.icitoyen.fr', 'https://connexion.mesdemarches.saintlaurentduvar.fr', 'https://connexion.demarches.g-ny.eu', 'https://connexion.services-en-ligne.correze.fr', # test 'https://connexion-arles.test.entrouvert.org', 'https://connexion-dordogne.test.entrouvert.org', 'https://connexion-roannais-agglomeration.test.entrouvert.org', 'https://connexion-roanne-mutuel.test.entrouvert.org', 'https://connexion-saintlaurentduvar.test.entrouvert.org', 'https://connexion-grand-nancy.test.entrouvert.org', 'https://connexion-correze.test.entrouvert.org', ] if settings.A2_FC_ENABLE: tenant = connection.get_tenant() if tenant.get_base_url() not in DOMAINS_WITH_FC_FIRST: settings_json_path = os.path.join(tenant.get_directory(), 'settings.json') if not os.path.exists(settings_json_path): with open(settings_json_path, 'w') as out: settings = {'AUTH_FRONTENDS_KWARGS': {'fc': {'priority': 1}}} json.dump(settings, out, indent=2) else: settings_json_backup_path = os.path.join(tenant.get_directory(), 'settings.json.backup') settings = json.load(open(settings_json_path)) if 'AUTH_FRONTENDS_KWARGS' in settings: if 'fc' not in settings['AUTH_FRONTENDS_KWARGS']: settings['AUTH_FRONTENDS_KWARGS']['fc'] = {'priority': 1} else: settings['AUTH_FRONTENDS_KWARGS']['fc']['priority'] = 1 else: settings['AUTH_FRONTENDS_KWARGS'] = {'fc': {'priority': 1}} with open(settings_json_path, 'w') as out: json.dump(settings, out, indent=2)
Après une vérification tout semble nickel.
Mis à jour par Frédéric Péters il y a presque 4 ans
Après une vérification tout semble nickel.
Heureusement parce que de
settings_json_backup_path = os.path.join(tenant.get_directory(), 'settings.json.backup')
il n'est rien fait.
Mis à jour par Serghei Mihai il y a presque 4 ans
L'authenticator LoginPassword
n'est pas forcément le premier dans la liste. Donc pour FC il faut donner une priorité plus haute, 1.