From 95f56c4702a09e1ea75453316e4c7c28a18e4123 Mon Sep 17 00:00:00 2001 From: Pierre-Philippe Date: Mon, 3 Nov 2025 21:33:10 +0100 Subject: [PATCH] feat(pci-rancher): create iam authentification ref: #TAPC-4728 Signed-off-by: Pierre-Philippe --- .../dashboard/Messages_de_DE.json | 25 ++- .../dashboard/Messages_en_GB.json | 25 ++- .../dashboard/Messages_es_ES.json | 25 ++- .../dashboard/Messages_fr_CA.json | 25 ++- .../dashboard/Messages_fr_FR.json | 26 ++- .../dashboard/Messages_it_IT.json | 25 ++- .../dashboard/Messages_pl_PL.json | 25 ++- .../dashboard/Messages_pt_PT.json | 25 ++- .../translations/listing/Messages_de_DE.json | 1 + .../translations/listing/Messages_en_GB.json | 3 +- .../translations/listing/Messages_es_ES.json | 3 +- .../translations/listing/Messages_fr_CA.json | 13 +- .../translations/listing/Messages_fr_FR.json | 13 +- .../translations/listing/Messages_it_IT.json | 13 +- .../translations/listing/Messages_pl_PL.json | 13 +- .../translations/listing/Messages_pt_PT.json | 13 +- .../StatusChip/StatusChip.component.tsx | 3 +- .../RancherDetail/RancherDetail.component.tsx | 74 ++++++++- .../hooks/useEditRancher/useEditRancher.tsx | 2 +- .../pci-rancher/src/hooks/useIamActivated.tsx | 11 ++ .../iam-activation/iamActivation.page.tsx | 153 +++++++++++++++++ .../iam-activation/iamActivationViewModel.tsx | 156 ++++++++++++++++++ .../apps/pci-rancher/src/routes/routes.tsx | 6 + .../apps/pci-rancher/src/setupTests.ts | 4 + .../apps/pci-rancher/src/types/api.type.ts | 3 +- 25 files changed, 639 insertions(+), 46 deletions(-) create mode 100644 packages/manager/apps/pci-rancher/src/hooks/useIamActivated.tsx create mode 100644 packages/manager/apps/pci-rancher/src/pages/dashboard/iam-activation/iamActivation.page.tsx create mode 100644 packages/manager/apps/pci-rancher/src/pages/dashboard/iam-activation/iamActivationViewModel.tsx diff --git a/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_de_DE.json b/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_de_DE.json index 79ef5a205465..4d1ae16add31 100644 --- a/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_de_DE.json +++ b/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_de_DE.json @@ -58,5 +58,28 @@ "egress_tooltip": "Diese CIDRs stellen die IP-Adressbereiche für den Ausgang dar, die von Rancher verwendet werden. Es kann notwendig sein, diese IP-Adressen per Whitelisting für den Zugriff auf Ihre Drittplattformen zu autorisieren (z. B. API-Aufrufe zum Bereitstellen von Ressourcen).", "badRequestSwitchPlan": "Beim Wechseln des Angebots Ihres Managed Rancher Service ist ein Fehler aufgetreten. Sie verwenden derzeit Treiber, die im Angebot {{plan}} nicht unterstütz werden: {{drivers}}.", "savingsPlanUsage": "Wenn Sie bereits einen oder mehrere Savings Plans für den ausgewählten Plan abonniert haben, werden die vCPUs Ihrer Downstream-Cluster automatisch berücksichtigt.", - "iamTemporaryAccessUnavailable": "Die Funktion „Temporären Zugriff generieren“ ist nicht verfügbar, wenn die IAM-Authentifizierung aktiviert ist. Um das Passwort des Admin-Users zu ändern, verwenden Sie bitte das Rancher-Interface." + "iamTemporaryAccessUnavailable": "Die Funktion „Temporären Zugriff generieren“ ist nicht verfügbar, wenn die IAM-Authentifizierung aktiviert ist. Um das Passwort des Admin-Users zu ändern, verwenden Sie bitte das Rancher-Interface.", + "iam_section_title": "OVHcloud IAM-Authentifizierung", + "iam_tooltip_content": "Ermöglicht es Rancher, die von OVHcloud IAM (Identity and Access Management) verwalteten Identitäten zu verwenden, um den Zugriff auf Rancher zu steuern und so die manuelle Verwaltung von Benutzern zu vermeiden.", + "iam_section_content": "Zugriffsverwaltung", + "iam_button_content": "IAM deaktivieren", + "iam_status_enabled": "Aktiviert", + "iam_status_disabled": "Deaktiviert", + "iam_modal_title": "Aktivieren Sie die Authentifizierung über OVHcloud IAM", + "iam_modal_activation_content_1": "Die OVHcloud IAM-Authentifizierungsfunktion ermöglicht es Rancher, die OVHcloud IAM-Identitäten zur Verwaltung des Zugriffs zu verwenden. So melden sich die Benutzer über ihr OVHcloud IAM SSO-Konto bei Rancher an, was die Zugriffsverwaltung vereinfacht und zentralisiert.", + "iam_modal_activation_more_info": "OVHcloud IAM-Dokumentation", + "iam_modal_activation_section_title": "Bei der Aktivierung der OVHcloud IAM-Authentifizierung in Rancher:", + "iam_modal_activation_point_1": "Die lokalen Benutzer bleiben immer funktionsfähig.", + "iam_modal_activation_point_2": "Sie können sich also weiterhin mit Ihren gewohnten Rancher-Konten anmelden.", + "iam_modal_activation_warning_title": "Bekannte Einschränkung", + "iam_modal_activation_warning_text": "Wenn das Passwort „admin“ regeneriert wird, während die IAM-Authentifizierung aktiviert ist, wird dies vorübergehend die Möglichkeit deaktivieren, sich mit dem IAM-Root-Benutzer anzumelden. Um dieses Problem zu beheben, müssen Sie sich zunächst mit dem lokalen Benutzer „admin“ anmelden, um den Zugriff mit dem IAM-Root-Benutzer wiederherzustellen.", + "iam_modal_close_button": "Schliessen", + "iam_modal_activate_button": "Aktivieren", + "iam_modal_deactivation_title": "Deaktivieren Sie die OVHcloud IAM-Authentifizierung", + "iam_modal_deactivation_content": "Die Deaktivierung der OVHcloud IAM-Authentifizierung stellt die Verwendung lokaler Benutzer in Rancher wieder her.", + "iam_modal_deactivation_warning": "Benutzer können sich nicht mehr über ihre OVHcloud IAM-Konten anmelden. Möchten Sie fortfahren?", + "iam_modal_deactivate_button": "Deaktivieren", + "iam_modal_more_info": "Mehr Informationen hier", + "iam_authentication_enable_success_message": "Die Authentifizierung über OVHcloud IAM wurde auf dem Rancher {{ rancherId }} aktiviert.", + "iam_authentication_disable_success_message": "Die Authentifizierung über OVHcloud IAM wurde auf dem Rancher {{ rancherId }} deaktiviert." } diff --git a/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_en_GB.json b/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_en_GB.json index b81be7d758b8..7be7151023fb 100644 --- a/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_en_GB.json +++ b/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_en_GB.json @@ -58,5 +58,28 @@ "egress_tooltip": "These CIDRs list the output IP address ranges used by Rancher. You might need to whitelist these IP addresses to access your third-party platforms (e.g. API calls to provision resources).", "badRequestSwitchPlan": "An error has occurred changing the solution for your Managed Rancher Service. You are currently using drivers that are not compatible with the {{plan}} solution: {{drivers}}", "savingsPlanUsage": "If you already have one or more Savings Plans, the vCPUs in your downstream clusters are automatically included in your plan’s total vCPU count.", - "iamTemporaryAccessUnavailable": "The “Generate your temporary access” feature is not available when IAM authentication is enabled. To change the password for the Admin user, please use the Rancher interface." + "iamTemporaryAccessUnavailable": "The “Generate your temporary access” feature is not available when IAM authentication is enabled. To change the password for the Admin user, please use the Rancher interface.", + "iam_section_title": "OVHcloud IAM Authentication", + "iam_tooltip_content": "Allows Rancher to use identities managed by OVHcloud IAM (Identity and Access Management) to control access to Rancher, thus avoiding manual user management.", + "iam_section_content": "Access management", + "iam_button_content": "Disable IAM", + "iam_status_enabled": "Enabled", + "iam_status_disabled": "Disabled", + "iam_modal_title": "Enable authentication via OVHcloud IAM", + "iam_modal_activation_content_1": "The OVHcloud IAM authentication feature allows Rancher to use OVHcloud IAM identities to manage access. Thus, users log in to Rancher via their OVHcloud IAM SSO account, simplifying and centralizing access management.", + "iam_modal_activation_more_info": "OVHcloud IAM Documentation", + "iam_modal_activation_section_title": "When enabling OVHcloud IAM authentication in Rancher:", + "iam_modal_activation_point_1": "Local users will always remain functional.", + "iam_modal_activation_point_2": "You will therefore be able to continue logging in with your usual Rancher accounts.", + "iam_modal_activation_warning_title": "Known limitation", + "iam_modal_activation_warning_text": "If the 'admin' password is regenerated while IAM authentication is enabled, this will temporarily disable the ability to log in with the IAM root user. To fix this issue, you will need to log in once with the local 'admin' user to restore access with the IAM root user.", + "iam_modal_close_button": "Close", + "iam_modal_activate_button": "Enable", + "iam_modal_deactivation_title": "Disable OVHcloud IAM authentication", + "iam_modal_deactivation_content": "Disabling OVHcloud IAM authentication will restore the use of local users in Rancher.", + "iam_modal_deactivation_warning": "Users will no longer be able to log in via their OVHcloud IAM accounts. Do you wish to continue?", + "iam_modal_deactivate_button": "Disable", + "iam_modal_more_info": "More information here", + "iam_authentication_enable_success_message": "Authentication via OVHcloud IAM has been enabled on the Rancher {{ rancherId }}.", + "iam_authentication_disable_success_message": "Authentication via OVHcloud IAM has been disabled on the Rancher {{ rancherId }}." } diff --git a/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_es_ES.json b/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_es_ES.json index a630e41ddf77..5cf4f74c11f4 100644 --- a/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_es_ES.json +++ b/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_es_ES.json @@ -58,5 +58,28 @@ "egress_tooltip": "Las notaciones CIDR representan los rangos de las direcciones IP de salida utilizadas por Rancher. Puede ser necesario autorizar estas direcciones IP («whitelisting») a acceder a sus plataformas de terceros (p. ej., llamadas a la API para aprovisionar recursos).", "badRequestSwitchPlan": "Se ha producido un error al cambiar su plan Managed Rancher Service. Actualmente utiliza drivers que no son compatibles con el plan {{plan}}: {{drivers}}", "savingsPlanUsage": "Si ya ha contratado uno o varios Saving Plans para el plan seleccionado, las vCPU de sus clústeres «downstream» se contabilizarán automáticamente en este plan.", - "iamTemporaryAccessUnavailable": "La funcionalidad \"Generar los accesos temporales\" no está disponible cuando la autenticación IAM está activada. Para cambiar la contraseña del usuario Admin, utilice la interfaz Rancher." + "iamTemporaryAccessUnavailable": "La funcionalidad \"Generar los accesos temporales\" no está disponible cuando la autenticación IAM está activada. Para cambiar la contraseña del usuario Admin, utilice la interfaz Rancher.", + "iam_section_title": "Autenticación OVHcloud IAM", + "iam_tooltip_content": "Permite a Rancher utilizar las identidades gestionadas por OVHcloud IAM (Gestión de Identidad y Acceso) para controlar el acceso al Rancher, evitando así la gestión manual de usuarios.", + "iam_section_content": "Gestión de los accesos", + "iam_button_content": "Desactivar IAM", + "iam_status_enabled": "Activado", + "iam_status_disabled": "Desactivado", + "iam_modal_title": "Activar la autenticación a través de OVHcloud IAM", + "iam_modal_activation_content_1": "La funcionalidad de autenticación IAM OVHcloud permite a Rancher utilizar las identidades OVHcloud IAM para gestionar el acceso. Así, los usuarios inician sesión en Rancher a través de su cuenta SSO OVHcloud IAM, simplificando y centralizando la gestión de accesos.", + "iam_modal_activation_more_info": "Documentación OVHcloud IAM", + "iam_modal_activation_section_title": "Al activar la autenticación IAM OVHcloud en Rancher:", + "iam_modal_activation_point_1": "Los usuarios locales seguirán siendo funcionales.", + "iam_modal_activation_point_2": "Por lo tanto, podrá seguir iniciando sesión con sus cuentas Rancher habituales.", + "iam_modal_activation_warning_title": "Limitación conocida", + "iam_modal_activation_warning_text": "En caso de regeneración de la contraseña « admin » mientras la autenticación IAM está activada, esto tendrá como efecto desactivar temporalmente la posibilidad de iniciar sesión con el usuario root IAM. Para corregir este problema, será necesario iniciar sesión una primera vez con el usuario local « admin », para restablecer el acceso con el usuario root IAM.", + "iam_modal_close_button": "Cerrar", + "iam_modal_activate_button": "Activar", + "iam_modal_deactivation_title": "Desactivar la autenticación OVHcloud IAM", + "iam_modal_deactivation_content": "La desactivación de la autenticación IAM OVHcloud restablecerá el uso de los usuarios locales en Rancher.", + "iam_modal_deactivation_warning": "Los usuarios ya no podrán iniciar sesión a través de sus cuentas OVHcloud IAM. ¿Desea continuar?", + "iam_modal_deactivate_button": "Desactivar", + "iam_modal_more_info": "Más información aquí", + "iam_authentication_enable_success_message": "La autenticación a través de OVHcloud IAM se ha activado en el Rancher {{ rancherId }}.", + "iam_authentication_disable_success_message": "La autenticación a través de OVHcloud IAM se ha desactivado en el Rancher {{ rancherId }}." } diff --git a/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_fr_CA.json b/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_fr_CA.json index 8225930d039d..d68acab08aa6 100644 --- a/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_fr_CA.json +++ b/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_fr_CA.json @@ -58,5 +58,28 @@ "savingsPlanMessage": "Bénéficiez de tarifs mensuels avantageux grâce aux Savings Plans, tout en gardant la flexibilité de la tarification horaire.", "savingsPlanUsage": "Si vous avez déjà souscrit à un ou plusieurs Saving Plan pour le plan sélectionné, les vCPU de vos downstream clusters seront automatiquement comptabilisées dans ce(s) dernier(s).", "savingsPlanCTA": "Configurez vos Savings Plans", - "badRequestSwitchPlan": "Une erreur est survenue lors du changement d'offre de votre Managed Rancher Service. Vous utilisez actuellement des pilotes qui ne sont pas pris en charge dans l'offre {{plan}}: {{drivers}}" + "badRequestSwitchPlan": "Une erreur est survenue lors du changement d'offre de votre Managed Rancher Service. Vous utilisez actuellement des pilotes qui ne sont pas pris en charge dans l'offre {{plan}}: {{drivers}}", + "iam_section_title": "Authentification OVHcloud IAM", + "iam_tooltip_content": "Permet à Rancher d’utiliser les identités gérées par OVHcloud IAM (Identity and Access Management) pour contrôler l’accès au Rancher, évitant ainsi la gestion manuelle des utilisateurs.", + "iam_section_content": "Gestion des accès", + "iam_button_content": "Désactiver IAM", + "iam_status_enabled": "Activé", + "iam_status_disabled": "Désactivé", + "iam_modal_title": "Activer l’authentification via OVHcloud IAM", + "iam_modal_activation_content_1": "La fonctionnalité d’Authentification IAM OVHcloud permet à Rancher d’utiliser les identités OVHcloud IAM pour gérer l’accès. Ainsi, les utilisateurs se connectent à Rancher via leur compte SSO OVHcloud IAM, simplifiant et centralisant la gestion des accès.", + "iam_modal_activation_more_info": "Documentation OVHcloud IAM", + "iam_modal_activation_section_title": "Lors de l’activation de l’authentification IAM OVHcloud dans Rancher :", + "iam_modal_activation_point_1": "Les utilisateurs locaux resteront toujours fonctionnels.", + "iam_modal_activation_point_2": "Vous pourrez donc continuer à vous connecter avec vos comptes Rancher habituels.", + "iam_modal_activation_warning_title": "Limitation connue", + "iam_modal_activation_warning_text": "En cas de régénération du mot de passe « admin » alors que l’authentification IAM est activée, cela aura pour effet de désactiver temporairement la possibilité de se connecter avec l’utilisateur root IAM. Pour corriger ce problème, il sera nécessaire de vous connecter une première fois avec l’utilisateur local « admin », afin de rétablir l’accès avec l’utilisateur root IAM.", + "iam_modal_close_button": "Fermer", + "iam_modal_activate_button": "Activer", + "iam_modal_deactivation_title": "Désactiver l’authentification OVHcloud IAM", + "iam_modal_deactivation_content": "La désactivation de l’authentification IAM OVHcloud rétablira l’utilisation des utilisateurs locaux dans Rancher.", + "iam_modal_deactivation_warning": "Les utilisateurs ne pourront plus se connecter via leurs comptes OVHcloud IAM. Souhaitez-vous continuer ?", + "iam_modal_deactivate_button": "Désactiver", + "iam_modal_more_info": "Plus d’informations ici", + "iam_authentication_enable_success_message": "L'authentification via OVHcloud IAM a été activée sur le Rancher {{ rancherId }}.", + "iam_authentication_disable_success_message": "L'authentification via OVHcloud IAM a été désactivée sur le Rancher {{ rancherId }}." } diff --git a/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_fr_FR.json b/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_fr_FR.json index 8225930d039d..393807fd2a6f 100644 --- a/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_fr_FR.json +++ b/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_fr_FR.json @@ -58,5 +58,29 @@ "savingsPlanMessage": "Bénéficiez de tarifs mensuels avantageux grâce aux Savings Plans, tout en gardant la flexibilité de la tarification horaire.", "savingsPlanUsage": "Si vous avez déjà souscrit à un ou plusieurs Saving Plan pour le plan sélectionné, les vCPU de vos downstream clusters seront automatiquement comptabilisées dans ce(s) dernier(s).", "savingsPlanCTA": "Configurez vos Savings Plans", - "badRequestSwitchPlan": "Une erreur est survenue lors du changement d'offre de votre Managed Rancher Service. Vous utilisez actuellement des pilotes qui ne sont pas pris en charge dans l'offre {{plan}}: {{drivers}}" + "badRequestSwitchPlan": "Une erreur est survenue lors du changement d'offre de votre Managed Rancher Service. Vous utilisez actuellement des pilotes qui ne sont pas pris en charge dans l'offre {{plan}}: {{drivers}}", + "iam_section_title": "Authentification OVHcloud IAM", + "iam_tooltip_content": "Permet à Rancher d’utiliser les identités gérées par OVHcloud IAM (Identity and Access Management) pour contrôler l’accès au Rancher, évitant ainsi la gestion manuelle des utilisateurs.", + "iam_section_content": "Gestion des accès", + "iam_button_content": "Désactiver IAM", + "iam_status_enabled": "Activé", + "iam_status_disabled": "Désactivé", + "iam_modal_title": "Activer l’authentification via OVHcloud IAM", + "iam_modal_activation_content_1": "La fonctionnalité d’authentification IAM OVHcloud permet à Rancher d’utiliser les identités OVHcloud IAM pour gérer l’accès. Ainsi, les utilisateurs se connectent à Rancher via leur compte SSO OVHcloud IAM, simplifiant et centralisant la gestion des accès.", + "iam_modal_activation_more_info": "Documentation OVHcloud IAM", + "iam_modal_activation_section_title": "Lors de l’activation de l’authentification IAM OVHcloud dans Rancher :", + "iam_modal_activation_point_1": "Les utilisateurs locaux resteront toujours fonctionnels.", + "iam_modal_activation_point_2": "Vous pourrez donc continuer à vous connecter avec vos comptes Rancher habituels.", + "iam_modal_activation_warning_title": "Limitation connue", + "iam_modal_activation_warning_text": "En cas de régénération du mot de passe « admin » alors que l’authentification IAM est activée, cela aura pour effet de désactiver temporairement la possibilité de se connecter avec l’utilisateur root IAM. Pour corriger ce problème, il sera nécessaire de vous connecter une première fois avec l’utilisateur local « admin » afin de rétablir l’accès avec l’utilisateur root IAM.", + "iam_modal_close_button": "Fermer", + "iam_modal_activate_button": "Activer", + "iam_modal_deactivation_title": "Désactiver l’authentification OVHcloud IAM", + "iam_modal_deactivation_content": "La désactivation de l’authentification IAM OVHcloud rétablira l’utilisation des utilisateurs locaux dans Rancher.", + "iam_modal_deactivation_warning": "Les utilisateurs ne pourront plus se connecter via leurs comptes OVHcloud IAM. Souhaitez-vous continuer ?", + "iam_modal_deactivate_button": "Désactiver", + "iam_modal_more_info": "Plus d’informations ici", + "iam_authentication_enable_success_message": "L'authentification via OVHcloud IAM a été activée sur le Rancher {{ rancherId }}.", + "iam_authentication_disable_success_message": "L'authentification via OVHcloud IAM a été désactivée sur le Rancher {{ rancherId }}.", + "iam_authentication_warning": "Limitation connue" } diff --git a/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_it_IT.json b/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_it_IT.json index b67bc4acfa2d..8e90fcad4b63 100644 --- a/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_it_IT.json +++ b/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_it_IT.json @@ -58,5 +58,28 @@ "egress_tooltip": "Questi CIDR rappresentano gli intervalli di indirizzi IP di uscita utilizzati da Rancher. Potrebbe essere necessario autorizzare questi indirizzi IP (whitelisting) ad accedere alle tue piattaforme terze (per es. chiamate API per il provisioning delle risorse).", "badRequestSwitchPlan": "Si è verificato un errore durante la modifica del piano Managed Rancher Service. Al momento utilizzi driver non supportati nella soluzione {{plan}}: {{drivers}}", "savingsPlanUsage": "Se hai già sottoscritto uno o più Savings Plan per il piano selezionato, le vCPU dei tuoi downstream cluster verranno automaticamente contabilizzate in questo piano.", - "iamTemporaryAccessUnavailable": "La funzionalità \"Generare i tuoi accessi temporanei\" non è disponibile quando l'autenticazione IAM è attiva. Per modificare la password dell’utente Admin, utilizza l’interfaccia Rancher." + "iamTemporaryAccessUnavailable": "La funzionalità \"Generare i tuoi accessi temporanei\" non è disponibile quando l'autenticazione IAM è attiva. Per modificare la password dell’utente Admin, utilizza l’interfaccia Rancher.", + "iam_section_title": "Autenticazione OVHcloud IAM", + "iam_tooltip_content": "Consente a Rancher di utilizzare le identità gestite da OVHcloud IAM (Identity and Access Management) per controllare l'accesso al Rancher, evitando così la gestione manuale degli utenti.", + "iam_section_content": "Gestione degli accessi", + "iam_button_content": "Disattivare IAM", + "iam_status_enabled": "Attivato", + "iam_status_disabled": "Disattivato", + "iam_modal_title": "Attivare l'autenticazione tramite OVHcloud IAM", + "iam_modal_activation_content_1": "La funzionalità di autenticazione IAM OVHcloud consente a Rancher di utilizzare le identità OVHcloud IAM per gestire l'accesso. Così, gli utenti si connettono a Rancher tramite il loro account SSO OVHcloud IAM, semplificando e centralizzando la gestione degli accessi.", + "iam_modal_activation_more_info": "Documentazione OVHcloud IAM", + "iam_modal_activation_section_title": "Durante l'attivazione dell'autenticazione IAM OVHcloud in Rancher:", + "iam_modal_activation_point_1": "Gli utenti locali rimarranno sempre funzionali.", + "iam_modal_activation_point_2": "Potrete quindi continuare a connettervi con i vostri account Rancher abituali.", + "iam_modal_activation_warning_title": "Limitazione nota", + "iam_modal_activation_warning_text": "In caso di rigenerazione della password « admin » mentre l'autenticazione IAM è attivata, ciò avrà l'effetto di disattivare temporaneamente la possibilità di connettersi con l'utente root IAM. Per correggere questo problema, sarà necessario connettersi una prima volta con l'utente locale « admin », al fine di ripristinare l'accesso con l'utente root IAM.", + "iam_modal_close_button": "Chiudi", + "iam_modal_activate_button": "Attiva", + "iam_modal_deactivation_title": "Disattivare l'autenticazione OVHcloud IAM", + "iam_modal_deactivation_content": "La disattivazione dell'Autenticazione IAM OVHcloud ripristinerà l'uso degli utenti locali in Rancher.", + "iam_modal_deactivation_warning": "Gli utenti non potranno più connettersi tramite i loro account OVHcloud IAM. Desideri continuare?", + "iam_modal_deactivate_button": "Disattivare", + "iam_modal_more_info": "Maggiori informazioni qui", + "iam_authentication_enable_success_message": "L'autenticazione tramite OVHcloud IAM è stata attivata su il Rancher {{ rancherId }}.", + "iam_authentication_disable_success_message": "L'autenticazione tramite OVHcloud IAM è stata disattivata su il Rancher {{ rancherId }}." } diff --git a/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_pl_PL.json b/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_pl_PL.json index 3ed45bd291a8..2e4873d1fe84 100644 --- a/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_pl_PL.json +++ b/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_pl_PL.json @@ -58,5 +58,28 @@ "egress_tooltip": "CIDRs to zapisy odnoszące się do zakresów adresów IP używanych przez Rancher do ruchu wychodzącego. Może być konieczne dodanie tych adresów IP do białej listy, aby miały dostęp do zewnętrznych platform (np. wywołania API w celu dostarczania zasobów).", "badRequestSwitchPlan": "Wystąpił błąd podczas zmiany oferty Managed Rancher Service. Aktualnie korzystasz ze sterowników, które nie są obsługiwane w ofercie {{plan}}: {{drivers}}", "savingsPlanUsage": "Jeśli masz już zamówiony jeden lub więcej Saving Plan dla wybranego pakietu, vCPU przypisane do „downstream clusters” będą automatycznie wliczane do tego planu (planów).", - "iamTemporaryAccessUnavailable": "Funkcja „Generuj tymczasowe dostępy” nie działa, gdy uwierzytelnianie IAM jest włączone. Aby zmienić hasło użytkownika Admin, skorzystaj z interfejsu Rancher." + "iamTemporaryAccessUnavailable": "Funkcja „Generuj tymczasowe dostępy” nie działa, gdy uwierzytelnianie IAM jest włączone. Aby zmienić hasło użytkownika Admin, skorzystaj z interfejsu Rancher.", + "iam_section_title": "Uwierzytelnianie OVHcloud IAM", + "iam_tooltip_content": "Pozwala to Rancherowi na korzystanie z tożsamości zarządzanych przez OVHcloud IAM (Zarządzanie Tożsamością i Dostępem) w celu kontrolowania dostępu do Ranchera, unikając w ten sposób ręcznego zarządzania użytkownikami.", + "iam_section_content": "Zarządzanie dostępem", + "iam_button_content": "Dezaktywuj IAM", + "iam_status_enabled": "Włączone", + "iam_status_disabled": "Wyłączona", + "iam_modal_title": "Włącz uwierzytelnianie za pomocą OVHcloud IAM", + "iam_modal_activation_content_1": "Funkcja Uwierzytelnianie IAM OVHcloud pozwala Rancherowi na korzystanie z tożsamości OVHcloud IAM do zarządzania dostępem. W ten sposób użytkownicy logują się do Ranchera za pomocą swojego konta SSO OVHcloud IAM, upraszczając i centralizując zarządzanie dostępem.", + "iam_modal_activation_more_info": "Dokumentacja OVHcloud IAM", + "iam_modal_activation_section_title": "Podczas aktywacji Uwierzytelniania IAM OVHcloud w Rancherze:", + "iam_modal_activation_point_1": "Użytkownicy lokalni będą zawsze funkcjonalni.", + "iam_modal_activation_point_2": "Będziesz mógł więc nadal logować się za pomocą swoich zwykłych kont Rancher.", + "iam_modal_activation_warning_title": "Znana ograniczenie", + "iam_modal_activation_warning_text": "W przypadku regeneracji hasła „admin” podczas gdy uwierzytelnianie IAM jest włączone, spowoduje to tymczasowe wyłączenie możliwości logowania się jako użytkownik root IAM. Aby naprawić ten problem, konieczne będzie pierwsze zalogowanie się jako lokalny użytkownik „admin”, aby przywrócić dostęp jako użytkownik root IAM.", + "iam_modal_close_button": "Zamknij", + "iam_modal_activate_button": "Włącz", + "iam_modal_deactivation_title": "Dezaktywuj uwierzytelnianie OVHcloud IAM", + "iam_modal_deactivation_content": "Dezaktywacja Uwierzytelniania IAM OVHcloud przywróci korzystanie z użytkowników lokalnych w Rancherze.", + "iam_modal_deactivation_warning": "Użytkownicy nie będą mogli już logować się za pomocą swoich kont OVHcloud IAM. Czy chcesz kontynuować?", + "iam_modal_deactivate_button": "Dezaktywuj", + "iam_modal_more_info": "Więcej informacji tutaj", + "iam_authentication_enable_success_message": "Uwierzytelnianie za pomocą OVHcloud IAM zostało włączone na Rancherze {{ rancherId }}.", + "iam_authentication_disable_success_message": "Uwierzytelnianie za pomocą OVHcloud IAM zostało wyłączone na Rancherze {{ rancherId }}." } diff --git a/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_pt_PT.json b/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_pt_PT.json index 660417e25b07..836453cda8c7 100644 --- a/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_pt_PT.json +++ b/packages/manager/apps/pci-rancher/public/translations/dashboard/Messages_pt_PT.json @@ -58,5 +58,28 @@ "egress_tooltip": "Estes CIDR representam os intervalos de endereços IP de saída utilizados pelo Rancher. Pode ser necessário autorizar estes endereços IP (whitelisting) a aceder às suas plataformas de terceiros (ex: chamadas API para aprovisionar recursos).", "badRequestSwitchPlan": "Ocorreu um erro aquando da alteração da oferta do seu Managed Rancher Service. Atualmente, está a utilizar drivers que não são suportados na oferta {{plan}}: {{drivers}}", "savingsPlanUsage": "Se já tiver subscrito um ou vários Savings Plan para o plano escolhido, os vCPU dos seus downstream clusters serão automaticamente contabilizados nele(s).", - "iamTemporaryAccessUnavailable": "A funcionalidade \"Gerar os seus acessos temporários\" fica indisponível quando a autenticação IAM está ativada. Para alterar a palavra-passe do utilizador Admin, utilize a interface Rancher." + "iamTemporaryAccessUnavailable": "A funcionalidade \"Gerar os seus acessos temporários\" fica indisponível quando a autenticação IAM está ativada. Para alterar a palavra-passe do utilizador Admin, utilize a interface Rancher.", + "iam_section_title": "Autenticação OVHcloud IAM", + "iam_tooltip_content": "Permite que o Rancher utilize as identidades geridas pelo OVHcloud IAM (Gestão de Identidade e Acesso) para controlar o acesso ao Rancher, evitando assim a gestão manual dos utilizadores.", + "iam_section_content": "Gestão dos acessos", + "iam_button_content": "Desativar IAM", + "iam_status_enabled": "Ativado", + "iam_status_disabled": "Desativado", + "iam_modal_title": "Ativar a autenticação via OVHcloud IAM", + "iam_modal_activation_content_1": "A funcionalidade de autenticação IAM OVHcloud permite que o Rancher utilize as identidades OVHcloud IAM para gerir o acesso. Assim, os utilizadores conectam-se ao Rancher através da sua conta SSO OVHcloud IAM, simplificando e centralizando a gestão de acessos.", + "iam_modal_activation_more_info": "Documentação OVHcloud IAM", + "iam_modal_activation_section_title": "Ao ativar a autenticação IAM OVHcloud no Rancher:", + "iam_modal_activation_point_1": "Os utilizadores locais continuarão sempre funcionais.", + "iam_modal_activation_point_2": "Portanto, poderá continuar a conectar-se com as suas contas Rancher habituais.", + "iam_modal_activation_warning_title": "Limitação conhecida", + "iam_modal_activation_warning_text": "Em caso de regeneração da palavra-passe « admin » enquanto a autenticação IAM está ativada, isso terá como efeito desativar temporariamente a possibilidade de se conectar com o utilizador root IAM. Para corrigir este problema, será necessário conectar-se uma primeira vez com o utilizador local « admin », a fim de restabelecer o acesso com o utilizador root IAM.", + "iam_modal_close_button": "Fechar", + "iam_modal_activate_button": "Ativar", + "iam_modal_deactivation_title": "Desativar a autenticação OVHcloud IAM", + "iam_modal_deactivation_content": "A desativação da autenticação IAM OVHcloud restabelecerá a utilização dos utilizadores locais no Rancher.", + "iam_modal_deactivation_warning": "Os utilizadores não poderão mais se conectar através das suas contas OVHcloud IAM. Deseja continuar?", + "iam_modal_deactivate_button": "Desativar", + "iam_modal_more_info": "Mais informações aqui", + "iam_authentication_enable_success_message": "A autenticação via OVHcloud IAM foi ativada no Rancher {{ rancherId }}.", + "iam_authentication_disable_success_message": "A autenticação via OVHcloud IAM foi desativada no Rancher {{ rancherId }}." } diff --git a/packages/manager/apps/pci-rancher/public/translations/listing/Messages_de_DE.json b/packages/manager/apps/pci-rancher/public/translations/listing/Messages_de_DE.json index 1c5330b51007..c8f29d664ce2 100644 --- a/packages/manager/apps/pci-rancher/public/translations/listing/Messages_de_DE.json +++ b/packages/manager/apps/pci-rancher/public/translations/listing/Messages_de_DE.json @@ -26,6 +26,7 @@ "READY": "Fertig", "UPDATING": "Wird aktualisiert", "ERROR": "Fehler", + "ENABLED": "Aktiviert", "DELETING": "Wird gelöscht", "CREATING": "Wird erstellt", "OVHCLOUD_EDITION": "OVHcloud Edition", diff --git a/packages/manager/apps/pci-rancher/public/translations/listing/Messages_en_GB.json b/packages/manager/apps/pci-rancher/public/translations/listing/Messages_en_GB.json index 030e5ae8daf5..8449804aa6ae 100644 --- a/packages/manager/apps/pci-rancher/public/translations/listing/Messages_en_GB.json +++ b/packages/manager/apps/pci-rancher/public/translations/listing/Messages_en_GB.json @@ -24,8 +24,9 @@ "editNameModaleHelperInput": "The service name must be between 3 and 63 characters, must start and end with lower-case alphanumeric characters (a to z and 0 to 9), and may include the following punctuation marks: ‘_’ ‘.’ and ‘-’.", "editNameRancherCta": "Edit", "READY": "Ready", + "ENABLED": "Enabled", "UPDATING": "Updating", - "ERROR": "404 error", + "ERROR": "Error", "DELETING": "Deleting", "CREATING": "Creating", "OVHCLOUD_EDITION": "OVHcloud Edition", diff --git a/packages/manager/apps/pci-rancher/public/translations/listing/Messages_es_ES.json b/packages/manager/apps/pci-rancher/public/translations/listing/Messages_es_ES.json index 2b337e0475f4..81ece26632bf 100644 --- a/packages/manager/apps/pci-rancher/public/translations/listing/Messages_es_ES.json +++ b/packages/manager/apps/pci-rancher/public/translations/listing/Messages_es_ES.json @@ -30,6 +30,7 @@ "CREATING": "Creando", "OVHCLOUD_EDITION": "OVHcloud Edition", "STANDARD": "Standard", - "DISABLED": "Disabled", + "DISABLED": "Deshabilitado", + "ENABLED": "Habilitado", "rancherStatusCreating": "Creando su Managed Rancher Service... Por favor, espere. Esta operación puede tardar unos minutos." } diff --git a/packages/manager/apps/pci-rancher/public/translations/listing/Messages_fr_CA.json b/packages/manager/apps/pci-rancher/public/translations/listing/Messages_fr_CA.json index 3dc8e450556a..d0d516a74862 100644 --- a/packages/manager/apps/pci-rancher/public/translations/listing/Messages_fr_CA.json +++ b/packages/manager/apps/pci-rancher/public/translations/listing/Messages_fr_CA.json @@ -25,12 +25,13 @@ "editNameModaleHelperInput": "Le nom du service doit comporter entre 3 et 63 caractères , doit commencer et se terminer par des caractères alphanumériques minuscules (de a à z et de 0 à 9) et peut comporter les signes de ponctuation suivants : '_', '.' et '-'.", "editNameRancherCta": "Modifier", - "READY": "Ready", - "DISABLED": "Disabled", - "UPDATING": "Updating", - "ERROR": "Error", - "DELETING": "Deleting", - "CREATING": "Creating", + "READY": "Prêt", + "DISABLED": "Désactivé", + "ENABLED": "Activé", + "UPDATING": "Mise à jour en cours", + "ERROR": "Erreur", + "DELETING": "Suppression en cours", + "CREATING": "Création en cours", "OVHCLOUD_EDITION": "OVHcloud Edition", "STANDARD": "Standard" diff --git a/packages/manager/apps/pci-rancher/public/translations/listing/Messages_fr_FR.json b/packages/manager/apps/pci-rancher/public/translations/listing/Messages_fr_FR.json index 3dc8e450556a..d0d516a74862 100644 --- a/packages/manager/apps/pci-rancher/public/translations/listing/Messages_fr_FR.json +++ b/packages/manager/apps/pci-rancher/public/translations/listing/Messages_fr_FR.json @@ -25,12 +25,13 @@ "editNameModaleHelperInput": "Le nom du service doit comporter entre 3 et 63 caractères , doit commencer et se terminer par des caractères alphanumériques minuscules (de a à z et de 0 à 9) et peut comporter les signes de ponctuation suivants : '_', '.' et '-'.", "editNameRancherCta": "Modifier", - "READY": "Ready", - "DISABLED": "Disabled", - "UPDATING": "Updating", - "ERROR": "Error", - "DELETING": "Deleting", - "CREATING": "Creating", + "READY": "Prêt", + "DISABLED": "Désactivé", + "ENABLED": "Activé", + "UPDATING": "Mise à jour en cours", + "ERROR": "Erreur", + "DELETING": "Suppression en cours", + "CREATING": "Création en cours", "OVHCLOUD_EDITION": "OVHcloud Edition", "STANDARD": "Standard" diff --git a/packages/manager/apps/pci-rancher/public/translations/listing/Messages_it_IT.json b/packages/manager/apps/pci-rancher/public/translations/listing/Messages_it_IT.json index edd125edcfda..b0a2982b5e96 100644 --- a/packages/manager/apps/pci-rancher/public/translations/listing/Messages_it_IT.json +++ b/packages/manager/apps/pci-rancher/public/translations/listing/Messages_it_IT.json @@ -23,13 +23,14 @@ "editNameModalInfo": "Nome del servizio", "editNameModaleHelperInput": "Il nome del servizio deve contenere da 3 a 63 caratteri, iniziare e terminare con caratteri alfanumerici minuscoli (da a a z e da 0 a 9) e può contenere i seguenti segni di punteggiatura: '_', '.' e '-'.", "editNameRancherCta": "Modificare", - "READY": "Ready", - "UPDATING": "Updating", - "ERROR": "Error", - "DELETING": "Deleting", - "CREATING": "Creating", + "READY": "Pronto", + "DISABLED": "Disabilitato", + "ENABLED": "Abilitato", + "UPDATING": "Aggiornamento in corso", + "ERROR": "Errore", + "DELETING": "Eliminazione in corso", + "CREATING": "Creazione in corso", "OVHCLOUD_EDITION": "OVHcloud Edition", "STANDARD": "Standard", - "DISABLED": "Disabled", "rancherStatusCreating": "Creazione del tuo Managed Rancher Service in corso... Ti chiediamo di attendere, l'operazione potrebbe richiedere alcuni minuti." } diff --git a/packages/manager/apps/pci-rancher/public/translations/listing/Messages_pl_PL.json b/packages/manager/apps/pci-rancher/public/translations/listing/Messages_pl_PL.json index 1ec22a020ddd..5ad46d42b0de 100644 --- a/packages/manager/apps/pci-rancher/public/translations/listing/Messages_pl_PL.json +++ b/packages/manager/apps/pci-rancher/public/translations/listing/Messages_pl_PL.json @@ -23,13 +23,14 @@ "editNameModalInfo": "Nazwa usługi", "editNameModaleHelperInput": "Nazwa usługi musi zawierać od 3 do 63 znaków, musi zaczynać się i kończyć małym znakiem alfanumerycznym (od „a” do „z” i od 0 do 9) i może zawierać następujące znaki interpunkcyjne: „_”, „.” oraz „-”.", "editNameRancherCta": "Zmień", - "READY": "Ready", - "UPDATING": "Updating", - "ERROR": "Error", - "DELETING": "Deleting", - "CREATING": "Creating", + "READY": "Gotowy", + "DISABLED": "Wyłączony", + "ENABLED": "Włączony", + "UPDATING": "Aktualizowanie", + "ERROR": "Błąd", + "DELETING": "Usuwanie", + "CREATING": "Tworzenie", "OVHCLOUD_EDITION": "OVHcloud Edition", "STANDARD": "Standard", - "DISABLED": "Disabled", "rancherStatusCreating": "Trwa tworzenie usługi Managed Rancher Service. Może to potrwać kilka minut." } diff --git a/packages/manager/apps/pci-rancher/public/translations/listing/Messages_pt_PT.json b/packages/manager/apps/pci-rancher/public/translations/listing/Messages_pt_PT.json index 72462213cebd..28528343e410 100644 --- a/packages/manager/apps/pci-rancher/public/translations/listing/Messages_pt_PT.json +++ b/packages/manager/apps/pci-rancher/public/translations/listing/Messages_pt_PT.json @@ -23,13 +23,14 @@ "editNameModalInfo": "Nome do serviço", "editNameModaleHelperInput": "O nome do serviço deve ter entre 3 e 63 caracteres, deve começar e terminar por caracteres alfanuméricos minúsculos (de “a” a “z” e de “0” a “9”), e pode incluir os seguintes sinais de pontuação: “_”, “.” e “-”.", "editNameRancherCta": "Alterar", - "READY": "Ready", - "UPDATING": "Updating", - "ERROR": "Error", - "DELETING": "Deleting", - "CREATING": "Creating", + "READY": "Pronto", + "DISABLED": "Desativado", + "ENABLED": "Ativado", + "UPDATING": "Atualizando", + "ERROR": "Erro", + "DELETING": "Eliminando", + "CREATING": "Criando", "OVHCLOUD_EDITION": "OVHcloud Edition", "STANDARD": "Standard", - "DISABLED": "Disabled", "rancherStatusCreating": "O seu Managed Rancher Service está a ser criado. Por favor, aguarde. Esta operação pode demorar alguns minutos." } diff --git a/packages/manager/apps/pci-rancher/src/components/StatusChip/StatusChip.component.tsx b/packages/manager/apps/pci-rancher/src/components/StatusChip/StatusChip.component.tsx index 02de67d80550..2c2cc00f074c 100644 --- a/packages/manager/apps/pci-rancher/src/components/StatusChip/StatusChip.component.tsx +++ b/packages/manager/apps/pci-rancher/src/components/StatusChip/StatusChip.component.tsx @@ -11,11 +11,12 @@ const StatusChip = ({ label }: { label: string }) => { [key in ResourceStatus]: ODS_THEME_COLOR_INTENT; } = { [ResourceStatus.READY]: ODS_THEME_COLOR_INTENT.success, - [ResourceStatus.DISABLED]: ODS_THEME_COLOR_INTENT.error, + [ResourceStatus.DISABLED]: ODS_THEME_COLOR_INTENT.default, [ResourceStatus.UPDATING]: ODS_THEME_COLOR_INTENT.warning, [ResourceStatus.ERROR]: ODS_THEME_COLOR_INTENT.error, [ResourceStatus.CREATING]: ODS_THEME_COLOR_INTENT.info, [ResourceStatus.DELETING]: ODS_THEME_COLOR_INTENT.info, + [ResourceStatus.ENABLED]: ODS_THEME_COLOR_INTENT.success, }; return label ? ( diff --git a/packages/manager/apps/pci-rancher/src/components/layout-helpers/Dashboard/RancherDetail/RancherDetail.component.tsx b/packages/manager/apps/pci-rancher/src/components/layout-helpers/Dashboard/RancherDetail/RancherDetail.component.tsx index f640fae4f120..ad5bd9d0f4df 100644 --- a/packages/manager/apps/pci-rancher/src/components/layout-helpers/Dashboard/RancherDetail/RancherDetail.component.tsx +++ b/packages/manager/apps/pci-rancher/src/components/layout-helpers/Dashboard/RancherDetail/RancherDetail.component.tsx @@ -30,6 +30,7 @@ import { OsdsDivider, OsdsMessage, OsdsText, + OsdsChip, OsdsTile, OsdsTooltipContent, OsdsTooltip, @@ -55,6 +56,7 @@ import { getLatestVersionAvailable, } from '@/utils/rancher'; import { TrackingEvent, TrackingPageView } from '@/utils/tracking'; +import { useIamActivated } from '@/hooks/useIamActivated'; export interface RancherDetailProps { rancher: RancherService; @@ -84,11 +86,12 @@ const RancherDetail = ({ const hrefEdit = useHref('./edit'); const hrefUpdateSoftware = useHref('./update-software'); const hrefGenerateAccess = useHref('./generate-access'); + const hrefIamActivation = useHref('./iam-activation'); const hrefUpdateOffer = useHref('./update-offer'); const [isPendingUpdate, setIsPendingUpdate] = useState(false); const [isPendingOffer, setIsPendingOffer] = useState(false); const [hasTaskPending, setHasTaskPending] = useState(false); - const { resourceStatus, currentState, currentTasks } = rancher; + const { resourceStatus, currentState, currentTasks, targetSpec } = rancher; const { addError, addInfo, clearNotifications } = useNotifications(); useEffect(() => { @@ -113,10 +116,10 @@ const RancherDetail = ({ useEffect(() => { if (currentTasks.length) { - addInfo(t('updateOfferPending')); + addInfo(t('updateOfferPending'), true); setHasTaskPending(true); } - }, [currentTasks]); + }, [currentTasks, targetSpec.iamAuthEnabled]); useEffect(() => { if (hasTaskPending && currentTasks.length === 0) { @@ -167,6 +170,8 @@ const RancherDetail = ({ const iamEnabled = rancher.currentState.iamAuthEnabled || rancher.targetSpec.iamAuthEnabled; + const { isIAmActivated } = useIamActivated(); + return (
@@ -337,6 +342,69 @@ const RancherDetail = ({ ))} + {isIAmActivated && ( +
+
+ + {t('iam_section_title')} + + + + + + {t('iam_tooltip_content')} + + + +
+
+ + {t('iam_section_content')} + + + +
+ +
+ +
+ + +
+ )}
diff --git a/packages/manager/apps/pci-rancher/src/data/hooks/useEditRancher/useEditRancher.tsx b/packages/manager/apps/pci-rancher/src/data/hooks/useEditRancher/useEditRancher.tsx index 7fa2c901425c..4daa09d758cc 100644 --- a/packages/manager/apps/pci-rancher/src/data/hooks/useEditRancher/useEditRancher.tsx +++ b/packages/manager/apps/pci-rancher/src/data/hooks/useEditRancher/useEditRancher.tsx @@ -13,7 +13,7 @@ export enum EditAction { export type EditMutationVariables = { rancher: Partial; - editAction: EditAction; + editAction?: EditAction; }; const useEditRancher = ({ diff --git a/packages/manager/apps/pci-rancher/src/hooks/useIamActivated.tsx b/packages/manager/apps/pci-rancher/src/hooks/useIamActivated.tsx new file mode 100644 index 000000000000..d1e972b0d313 --- /dev/null +++ b/packages/manager/apps/pci-rancher/src/hooks/useIamActivated.tsx @@ -0,0 +1,11 @@ +import { useFeatureAvailability } from '@ovh-ux/manager-react-components'; + +export const RANCHER_IAM_FEATURE = 'pci-rancher:iam'; + +export const useIamActivated = () => { + const { data, isLoading } = useFeatureAvailability([RANCHER_IAM_FEATURE]); + return { + isIAmActivated: data && !!data[RANCHER_IAM_FEATURE], + isLoading, + }; +}; diff --git a/packages/manager/apps/pci-rancher/src/pages/dashboard/iam-activation/iamActivation.page.tsx b/packages/manager/apps/pci-rancher/src/pages/dashboard/iam-activation/iamActivation.page.tsx new file mode 100644 index 000000000000..44a831c83935 --- /dev/null +++ b/packages/manager/apps/pci-rancher/src/pages/dashboard/iam-activation/iamActivation.page.tsx @@ -0,0 +1,153 @@ +import React, { FC } from 'react'; +import { + ODS_BUTTON_VARIANT, + ODS_MESSAGE_TYPE, + ODS_TEXT_LEVEL, + ODS_TEXT_SIZE, +} from '@ovhcloud/ods-components'; +import { + OsdsButton, + OsdsText, + OsdsSpinner, + OsdsMessage, +} from '@ovhcloud/ods-components/react'; +import { ODS_THEME_COLOR_INTENT } from '@ovhcloud/ods-common-theming'; +import { useTranslation, Trans } from 'react-i18next'; +import { useNavigate, useParams } from 'react-router-dom'; +import { useNotifications } from '@ovh-ux/manager-react-components'; +import Modal from '@/components/Modal/Modal.component'; +import { useRancher } from '@/data/hooks/useRancher/useRancher'; +import useEditRancher from '@/data/hooks/useEditRancher/useEditRancher'; + +import { selectIamContent } from './iamActivationViewModel'; + +const ActivateIamModal: FC = () => { + const { t } = useTranslation('dashboard'); + const navigate = useNavigate(); + const { projectId, rancherId } = useParams(); + const { data: rancher, refetch } = useRancher(); + + const { addError, addSuccess } = useNotifications(); + + const iamEnabled = + rancher?.currentState.iamAuthEnabled || + rancher?.targetSpec.iamAuthEnabled || + false; + + const { mutate: updateRancher, isPending } = useEditRancher({ + projectId, + rancherId, + + onSuccess: () => { + refetch(); + addSuccess( + iamEnabled + ? t('iam_authentication_enable_success_message', { + rancherId, + }) + : t('iam_authentication_disable_success_message', { + rancherId, + }), + true, + ); + navigate('..'); + }, + onError: () => { + addError(t('editNameRancherError')); + }, + }); + + const { + title, + content: Content, + warning, + showWarningTitle, + } = selectIamContent(!iamEnabled); + const onClose = () => { + navigate('..'); + }; + + const handleActivate = () => { + if (rancher) { + updateRancher({ + rancher: { + targetSpec: { + ...rancher.targetSpec, + iamAuthEnabled: !iamEnabled, + }, + }, + }); + } + }; + + return ( + + {!isPending ? ( + <> +
+ + {t(title)} + + + + +
+ {showWarningTitle && ( + + + {t('iam_authentication_warning')} {':'} + + + )} +
+ + }} + /> + +
+
+
+
+ + {t('cancel')} + + + + {t(`iam_modal_${iamEnabled ? 'deactivate' : 'activate'}_button`)} + + + ) : ( +
+ +
+ )} +
+ ); +}; + +export default ActivateIamModal; diff --git a/packages/manager/apps/pci-rancher/src/pages/dashboard/iam-activation/iamActivationViewModel.tsx b/packages/manager/apps/pci-rancher/src/pages/dashboard/iam-activation/iamActivationViewModel.tsx new file mode 100644 index 000000000000..44bcbe7a210c --- /dev/null +++ b/packages/manager/apps/pci-rancher/src/pages/dashboard/iam-activation/iamActivationViewModel.tsx @@ -0,0 +1,156 @@ +import { ODS_ICON_NAME, ODS_TEXT_SIZE } from '@ovhcloud/ods-components'; +import { OsdsText } from '@ovhcloud/ods-components/react'; +import { ODS_THEME_COLOR_INTENT } from '@ovhcloud/ods-common-theming'; +import React, { useContext } from 'react'; +import { useTranslation, Trans } from 'react-i18next'; +import { OdsHTMLAnchorElementTarget } from '@ovhcloud/ods-common-core'; +import { ShellContext } from '@ovh-ux/manager-react-shell-client'; +import LinkIcon from '@/components/LinkIcon/LinkIcon.component'; + +export const DOCUMENTATION_LINK = { + DEFAULT: + 'https://www.ovhcloud.com/en/identity-security-operations/identity-access-management', + ASIA: + 'https://www.ovhcloud.com/asia/identity-security-operations/identity-access-management', + AU: + 'https://www.ovhcloud.com/en-au/identity-security-operations/identity-access-management', + CA: + 'https://www.ovhcloud.com/fr/identity-security-operations/identity-access-management', + DE: + 'https://www.ovhcloud.com/de/identity-security-operations/identity-access-management', + ES: + 'https://www.ovhcloud.com/es/identity-security-operations/identity-access-management', + FR: + 'https://www.ovhcloud.com/fr/identity-security-operations/identity-access-management', + GB: + 'https://www.ovhcloud.com/en/identity-security-operations/identity-access-management', + IE: + 'https://www.ovhcloud.com/en-ie/identity-security-operations/identity-access-management', + IN: + 'https://www.ovhcloud.com/en-in/identity-security-operations/identity-access-management', + IT: + 'https://www.ovhcloud.com/it/identity-security-operations/identity-access-management', + MA: + 'https://www.ovhcloud.com/fr-ma/identity-security-operations/identity-access-management/', + NL: + 'https://www.ovhcloud.com/nl/identity-security-operations/identity-access-management/', + PL: + 'https://www.ovhcloud.com/pl/identity-security-operations/identity-access-management', + PT: + 'https://www.ovhcloud.com/pt/identity-security-operations/identity-access-management/', + QB: + 'https://www.ovhcloud.com/en/identity-security-operations/identity-access-management', + SG: + 'https://www.ovhcloud.com/en-sg/identity-security-operations/identity-access-management', + SN: + 'https://www.ovhcloud.com/en/identity-security-operations/identity-access-management', + TN: + 'https://www.ovhcloud.com/fr-tn/identity-security-operations/identity-access-management', + WE: + 'https://www.ovhcloud.com/en/identity-security-operations/identity-access-management', + WS: + 'https://www.ovhcloud.com/en/identity-security-operations/identity-access-management', + WW: + 'https://www.ovhcloud.com/en/identity-security-operations/identity-access-management', + US: + 'https://us.ovhcloud.com/identity-security-operations/identity-access-management', +}; + +const ContentActivation = () => { + const { t } = useTranslation('dashboard'); + const shell = useContext(ShellContext); + const url = + DOCUMENTATION_LINK[ + shell.environment.getUser() + .ovhSubsidiary as keyof typeof DOCUMENTATION_LINK + ]; + + return ( +
+
+ + {t('iam_modal_activation_content_1')} + + + +
+ +
+ + }} + /> + +
    +
  • + + {t('iam_modal_activation_point_1')} + +
  • +
  • + + }} + /> + +
  • +
+
+
+ ); +}; + +const ContentDeactivation = () => { + return ( +
+ + }} + /> + +
+ ); +}; + +const IAM_MODAL_CONFIG = { + activation: { + title: 'iam_modal_title', + content: ContentActivation, + warning: 'iam_modal_activation_warning_text', + confirmButton: 'iam_modal_activate_button', + showWarningTitle: true, + }, + deactivation: { + title: 'iam_modal_deactivation_title', + content: ContentDeactivation, + warning: 'iam_modal_deactivation_warning', + confirmButton: 'iam_modal_deactivate_button', + showWarningTitle: false, + }, +} as const; + +export const selectIamContent = (iamEnabled: boolean) => { + return IAM_MODAL_CONFIG[iamEnabled ? 'activation' : 'deactivation']; +}; diff --git a/packages/manager/apps/pci-rancher/src/routes/routes.tsx b/packages/manager/apps/pci-rancher/src/routes/routes.tsx index e622e33015d4..e4e796be6f13 100644 --- a/packages/manager/apps/pci-rancher/src/routes/routes.tsx +++ b/packages/manager/apps/pci-rancher/src/routes/routes.tsx @@ -127,6 +127,12 @@ export default [ }, }, }, + { + path: 'iam-activation', + ...lazyRouteConfig(() => + import('@/pages/dashboard/iam-activation/iamActivation.page'), + ), + }, ], }, { diff --git a/packages/manager/apps/pci-rancher/src/setupTests.ts b/packages/manager/apps/pci-rancher/src/setupTests.ts index 4bb8f533f911..a8878e75f709 100644 --- a/packages/manager/apps/pci-rancher/src/setupTests.ts +++ b/packages/manager/apps/pci-rancher/src/setupTests.ts @@ -23,3 +23,7 @@ vi.mock('react-router-dom', async () => { useParams: () => ({ projectId: '123' }), }; }); + +vi.mock('@/hooks/useIamActivated', () => ({ + useIamActivated: vi.fn().mockReturnValue(true), +})); diff --git a/packages/manager/apps/pci-rancher/src/types/api.type.ts b/packages/manager/apps/pci-rancher/src/types/api.type.ts index 4f2ccf366538..bc97ebf17ff6 100644 --- a/packages/manager/apps/pci-rancher/src/types/api.type.ts +++ b/packages/manager/apps/pci-rancher/src/types/api.type.ts @@ -55,7 +55,7 @@ export interface RancherService { plan: string; iamAuthEnabled: boolean; version: string; - ipRestrictions: [ + ipRestrictions?: [ { cidrBlock: string; description: string; @@ -100,6 +100,7 @@ export enum ResourceStatus { CREATING = 'CREATING', DELETING = 'DELETING', ERROR = 'ERROR', + ENABLED = 'ENABLED', } export type RancherReferenceStatus = 'AVAILABLE' | 'UNAVAILABLE';