diff --git a/packages/manager/modules/iam/src/components/deleteEntity/deleteEntity.constants.js b/packages/manager/modules/iam/src/components/deleteEntity/deleteEntity.constants.js
index c81d8cbefe3a..8f893f962d1d 100644
--- a/packages/manager/modules/iam/src/components/deleteEntity/deleteEntity.constants.js
+++ b/packages/manager/modules/iam/src/components/deleteEntity/deleteEntity.constants.js
@@ -29,6 +29,12 @@ export const DELETE_ENTITY_TAG = {
error: TAG.RESOURCE_GROUPS__DELETE_GROUP_CONFIRM_BANNER__ERROR,
success: TAG.RESOURCE_GROUPS__DELETE_GROUP_CONFIRM_BANNER__SUCCESS,
},
+ [ENTITY.APPLICATION]: {
+ close: TAG.DELETE_APPLICATION__CANCEL,
+ delete: TAG.DELETE_APPLICATION__CONFIRM,
+ error: TAG.APPLICATIONS__DELETE_APPLICATION_CONFIRM_BANNER__ERROR,
+ success: TAG.APPLICATIONS__DELETE_APPLICATION_CONFIRM_BANNER__SUCCESS,
+ },
};
export default {
diff --git a/packages/manager/modules/iam/src/components/deleteEntity/deleteEntity.controller.js b/packages/manager/modules/iam/src/components/deleteEntity/deleteEntity.controller.js
index 43e7ab51d055..5db09ba3f061 100644
--- a/packages/manager/modules/iam/src/components/deleteEntity/deleteEntity.controller.js
+++ b/packages/manager/modules/iam/src/components/deleteEntity/deleteEntity.controller.js
@@ -87,6 +87,8 @@ export default class DeleteEntityController {
promise = this.deletePolicy();
} else if (this.entity.type === ENTITY.RESOURCE_GROUP) {
promise = this.deleteResourceGroup();
+ } else if (this.entity.type === ENTITY.APPLICATION) {
+ promise = this.deleteApplication();
} else if (this.entity.type === ENTITY.RESOURCE_TYPE) {
promise = this.$q.when(true);
} else {
@@ -135,6 +137,14 @@ export default class DeleteEntityController {
return this.IAMService.deleteResourceGroup(this.entity.data.id);
}
+ /**
+ * Delete the entity using the IAMService
+ * @returns {Promise}
+ */
+ deleteApplication() {
+ return this.IAMService.deleteApplication(this.entity.data.applicationId);
+ }
+
/**
* Custom trackClick wrapper witch uses the tagPrefix bound property
* @param {'close'|'delete'} tagKey
diff --git a/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_de_DE.json b/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_de_DE.json
index 006d9ea4cd88..f121c0a1854c 100644
--- a/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_de_DE.json
+++ b/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_de_DE.json
@@ -17,5 +17,11 @@
"iam_delete_entity_resourceType_name": "Löschen des Produkttyps: ",
"iam_delete_entity_resourceType_success": "Der Produkttyp wurde gelöscht",
"iam_delete_entity_resourceType_warn": "Achtung, mit dieser Aktion werden alle zugehörigen Ressourcen und ausgewählten Aktionen gelöscht",
- "iam_delete_entity_secondary_label": "Abbrechen"
-}
\ No newline at end of file
+ "iam_delete_entity_secondary_label": "Abbrechen",
+ "iam_delete_entity_application_error": "Die Anwendung konnte aufgrund eines Fehlers nicht gelöscht werden: {{ message }}",
+ "iam_delete_entity_application_field": "Bitte geben Sie das Wort „{{ statement }}“ ein, um das Löschen Ihrer Anwendung zu bestätigen.",
+ "iam_delete_entity_application_heading": "Anwendung löschen",
+ "iam_delete_entity_application_name": "Löschung der Anwendung: ",
+ "iam_delete_entity_application_success": "Anwendung gelöscht",
+ "iam_delete_entity_application_warn": "Warnung: Durch diese Aktion wird die Anwendung gelöscht und alle dieser Anwendung zugeordneten Zertifikate werden widerrufen."
+}
diff --git a/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_en_GB.json b/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_en_GB.json
index 368d8d7d0f2b..e11a76903cef 100644
--- a/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_en_GB.json
+++ b/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_en_GB.json
@@ -17,5 +17,11 @@
"iam_delete_entity_resourceType_name": "Deleting product type: ",
"iam_delete_entity_resourceType_success": "Product type deleted",
"iam_delete_entity_resourceType_warn": "Warning: this action will delete the associated resources and the selected actions",
- "iam_delete_entity_secondary_label": "Exit"
-}
\ No newline at end of file
+ "iam_delete_entity_secondary_label": "Exit",
+ "iam_delete_entity_application_error": "An error occurred deleting the application: {{ message }}",
+ "iam_delete_entity_application_field": "Please enter the word “{{ statement }}” to confirm the deletion of your application",
+ "iam_delete_entity_application_heading": "Delete an application",
+ "iam_delete_entity_application_name": "Delete application: ",
+ "iam_delete_entity_application_success": "Application deleted",
+ "iam_delete_entity_application_warn": "Warning: This action will delete the application and revoke all associated certificates."
+}
diff --git a/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_es_ES.json b/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_es_ES.json
index 287455a67170..d1cecfc635f6 100644
--- a/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_es_ES.json
+++ b/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_es_ES.json
@@ -17,5 +17,11 @@
"iam_delete_entity_resourceType_name": "Eliminación del tipo de producto: ",
"iam_delete_entity_resourceType_success": "El tipo de producto se ha eliminado correctamente",
"iam_delete_entity_resourceType_warn": "Atención: Esta acción eliminará los recursos asociados y las acciones seleccionadas",
- "iam_delete_entity_secondary_label": "Cancelar"
-}
\ No newline at end of file
+ "iam_delete_entity_secondary_label": "Cancelar",
+ "iam_delete_entity_application_error": "No se ha podido eliminar la aplicación debido a un error: {{ message }}",
+ "iam_delete_entity_application_field": "Introduzca la palabra «{{ statement }}» para confirmar la eliminación de su aplicación.",
+ "iam_delete_entity_application_heading": "Eliminar una aplicación",
+ "iam_delete_entity_application_name": "Eliminación de la aplicación: ",
+ "iam_delete_entity_application_success": "Aplicación eliminada",
+ "iam_delete_entity_application_warn": "Importante: esta acción eliminará la aplicación y revocará todos los certificados asociados a dicha aplicación."
+}
diff --git a/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_fr_CA.json b/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_fr_CA.json
index 1daca17d53e9..cc9782db9345 100644
--- a/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_fr_CA.json
+++ b/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_fr_CA.json
@@ -12,10 +12,16 @@
"iam_delete_entity_resourceGroup_name": "Suppression du groupe de ressources : ",
"iam_delete_entity_resourceGroup_success": "Le groupe de ressources a bien été supprimé",
"iam_delete_entity_resourceGroup_warn": "Êtes-vous sûr.e de confirmer la suppression ?",
+ "iam_delete_entity_application_error": "L'application n'a pas pu être supprimée en raison d'une erreur : {{ message }}",
+ "iam_delete_entity_application_field": "Veuillez entrer le mot \"{{ statement }}\" pour confirmer la suppression de votre application",
+ "iam_delete_entity_application_heading": "Supprimer une application",
+ "iam_delete_entity_application_name": "Suppression de l'application : ",
+ "iam_delete_entity_application_success": "Application supprimée",
+ "iam_delete_entity_application_warn": "Avertissement : cette action supprimera l'application et révoquera tous les certificats associées à cette application.",
"iam_delete_entity_resourceType_error": "Une erreur est survenue lors de la suppression du type de produit : {{ message }}",
"iam_delete_entity_resourceType_heading": "Supprimer un type de produit",
"iam_delete_entity_resourceType_name": "Suppression du type de produit : ",
"iam_delete_entity_resourceType_success": "Le type de produit a bien été supprimé",
"iam_delete_entity_resourceType_warn": "Attention, cette action va entrainer la suppression des ressources associées et des actions sélectionnées",
"iam_delete_entity_secondary_label": "Annuler"
-}
\ No newline at end of file
+}
diff --git a/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_fr_FR.json b/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_fr_FR.json
index ee9760ceb484..cc9782db9345 100644
--- a/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_fr_FR.json
+++ b/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_fr_FR.json
@@ -12,6 +12,12 @@
"iam_delete_entity_resourceGroup_name": "Suppression du groupe de ressources : ",
"iam_delete_entity_resourceGroup_success": "Le groupe de ressources a bien été supprimé",
"iam_delete_entity_resourceGroup_warn": "Êtes-vous sûr.e de confirmer la suppression ?",
+ "iam_delete_entity_application_error": "L'application n'a pas pu être supprimée en raison d'une erreur : {{ message }}",
+ "iam_delete_entity_application_field": "Veuillez entrer le mot \"{{ statement }}\" pour confirmer la suppression de votre application",
+ "iam_delete_entity_application_heading": "Supprimer une application",
+ "iam_delete_entity_application_name": "Suppression de l'application : ",
+ "iam_delete_entity_application_success": "Application supprimée",
+ "iam_delete_entity_application_warn": "Avertissement : cette action supprimera l'application et révoquera tous les certificats associées à cette application.",
"iam_delete_entity_resourceType_error": "Une erreur est survenue lors de la suppression du type de produit : {{ message }}",
"iam_delete_entity_resourceType_heading": "Supprimer un type de produit",
"iam_delete_entity_resourceType_name": "Suppression du type de produit : ",
diff --git a/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_it_IT.json b/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_it_IT.json
index 3df4020dd370..d7bee04d3205 100644
--- a/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_it_IT.json
+++ b/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_it_IT.json
@@ -17,5 +17,11 @@
"iam_delete_entity_resourceType_name": "Eliminazione del tipo di prodotto: ",
"iam_delete_entity_resourceType_success": "Il tipo di prodotto è stato eliminato correttamente",
"iam_delete_entity_resourceType_warn": "Attenzione: questa azione comporta l'eliminazione delle risorse associate e delle azioni selezionate",
- "iam_delete_entity_secondary_label": "Annullare"
-}
\ No newline at end of file
+ "iam_delete_entity_secondary_label": "Annullare",
+ "iam_delete_entity_application_error": "Impossibile eliminare l’applicazione a causa di un errore: {{ message }}",
+ "iam_delete_entity_application_field": "Inserisci la parola \"{{ statement }}\" per confermare l'eliminazione della tua applicazione.",
+ "iam_delete_entity_application_heading": "Eliminare un'applicazione",
+ "iam_delete_entity_application_name": "Eliminazione dell'applicazione ",
+ "iam_delete_entity_application_success": "Applicazione eliminata",
+ "iam_delete_entity_application_warn": "Importante: questa azione comporta l'eliminazione dell'applicazione e la revoca di tutti i certificati ad essa associati."
+}
diff --git a/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_pl_PL.json b/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_pl_PL.json
index c512113f2db7..ce1f1b23aa8c 100644
--- a/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_pl_PL.json
+++ b/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_pl_PL.json
@@ -17,5 +17,11 @@
"iam_delete_entity_resourceType_name": "Usuwanie typu usługi: ",
"iam_delete_entity_resourceType_success": "Typ usługi został usunięty",
"iam_delete_entity_resourceType_warn": "Uwaga, ta operacja spowoduje usunięcie zasobów i powiązanych operacji.",
- "iam_delete_entity_secondary_label": "Anuluj"
-}
\ No newline at end of file
+ "iam_delete_entity_secondary_label": "Anuluj",
+ "iam_delete_entity_application_error": "Aplikacja nie mogła zostać usunięta z powodu błędu: {{message}}",
+ "iam_delete_entity_application_field": "Wpisz słowo „{{ statement }}”, aby potwierdzić usunięcie aplikacji.",
+ "iam_delete_entity_application_heading": "Usuń aplikację",
+ "iam_delete_entity_application_name": "Usuwanie aplikacji: ",
+ "iam_delete_entity_application_success": "Aplikacja usunięta",
+ "iam_delete_entity_application_warn": "Ostrzeżenie: ta operacja spowoduje usunięcie aplikacji i unieważni wszystkie certyfikaty powiązane z tą aplikacją."
+}
diff --git a/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_pt_PT.json b/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_pt_PT.json
index 15f5ffc05302..90533620e180 100644
--- a/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_pt_PT.json
+++ b/packages/manager/modules/iam/src/components/deleteEntity/translations/Messages_pt_PT.json
@@ -17,5 +17,11 @@
"iam_delete_entity_resourceType_name": "Eliminação do tipo de produto: ",
"iam_delete_entity_resourceType_success": "O tipo de produto foi eliminado com sucesso",
"iam_delete_entity_resourceType_warn": "Atenção, esta ação levará à eliminação dos recursos associados e das ações selecionadas",
- "iam_delete_entity_secondary_label": "Anular"
-}
\ No newline at end of file
+ "iam_delete_entity_secondary_label": "Anular",
+ "iam_delete_entity_application_error": "Não foi possível eliminar a aplicação devido a um erro: {{ message }}",
+ "iam_delete_entity_application_field": "Introduza a palavra \"{{ statement }}\" para confirmar a eliminação da sua aplicação",
+ "iam_delete_entity_application_heading": "Eliminar uma aplicação",
+ "iam_delete_entity_application_name": "Eliminação da aplicação: ",
+ "iam_delete_entity_application_success": "Aplicação eliminada",
+ "iam_delete_entity_application_warn": "Atenção: esta ação eliminará a aplicação e revogará todos os certificados associados a esta aplicação."
+}
diff --git a/packages/manager/modules/iam/src/dashboard/applications/applications.component.js b/packages/manager/modules/iam/src/dashboard/applications/applications.component.js
new file mode 100644
index 000000000000..73fb0aac643c
--- /dev/null
+++ b/packages/manager/modules/iam/src/dashboard/applications/applications.component.js
@@ -0,0 +1,13 @@
+import controller from './applications.controller';
+import template from './applications.template.html';
+
+export default {
+ bindings: {
+ applications: '<',
+ alert: '<',
+ goTo: '<',
+ trackClick: '<',
+ },
+ controller,
+ template,
+};
diff --git a/packages/manager/modules/iam/src/dashboard/applications/applications.controller.js b/packages/manager/modules/iam/src/dashboard/applications/applications.controller.js
new file mode 100644
index 000000000000..06eabc3a15f5
--- /dev/null
+++ b/packages/manager/modules/iam/src/dashboard/applications/applications.controller.js
@@ -0,0 +1,23 @@
+import { AbstractCursorDatagridController } from '@ovh-ux/manager-ng-apiv2-helper';
+import { TAG } from '../../iam.constants';
+
+export default class ApplicationsController extends AbstractCursorDatagridController {
+ /* @ngInject */
+ constructor(IAMService) {
+ super();
+ this.IAMService = IAMService;
+ }
+
+ /**
+ * Go to resourceGroup deletion
+ * @param {string} id The application id
+ * @returns {Promise}
+ */
+ deleteApplication(id) {
+ this.trackClick(TAG.APPLICATIONS__DELETE);
+ this.goTo({
+ name: 'iam.dashboard.applications.delete',
+ params: { application: id },
+ });
+ }
+}
diff --git a/packages/manager/modules/iam/src/dashboard/applications/applications.module.js b/packages/manager/modules/iam/src/dashboard/applications/applications.module.js
new file mode 100644
index 000000000000..7964aa5aaa33
--- /dev/null
+++ b/packages/manager/modules/iam/src/dashboard/applications/applications.module.js
@@ -0,0 +1,15 @@
+import angular from 'angular';
+
+import component from './applications.component';
+import routing from './applications.routing';
+import deleteModule from './delete';
+
+const moduleName = 'ovhManagerIAMDashboardApplications';
+
+angular
+ .module(moduleName, [deleteModule])
+ .component('iamApplications', component)
+ .config(routing)
+ .run(/* @ngTranslationsInject:json ./translations */);
+
+export default moduleName;
diff --git a/packages/manager/modules/iam/src/dashboard/applications/applications.routing.js b/packages/manager/modules/iam/src/dashboard/applications/applications.routing.js
new file mode 100644
index 000000000000..ab3a7af20b89
--- /dev/null
+++ b/packages/manager/modules/iam/src/dashboard/applications/applications.routing.js
@@ -0,0 +1,16 @@
+import { TAG } from '../../iam.constants';
+
+export default /* @ngInject */ ($stateProvider) => {
+ $stateProvider.state('iam.dashboard.applications', {
+ url: '/applications?cursors',
+ component: 'iamApplications',
+ resolve: {
+ breadcrumb: () => null,
+ applications: /* @ngInject */ (IAMService) =>
+ IAMService.getApplications(),
+ },
+ atInternet: {
+ rename: TAG.APPLICATIONS,
+ },
+ });
+};
diff --git a/packages/manager/modules/iam/src/dashboard/applications/applications.template.html b/packages/manager/modules/iam/src/dashboard/applications/applications.template.html
new file mode 100644
index 000000000000..a3b2df6f42f3
--- /dev/null
+++ b/packages/manager/modules/iam/src/dashboard/applications/applications.template.html
@@ -0,0 +1,58 @@
+