diff --git a/src/containers/DefaultContainer.vue b/src/containers/DefaultContainer.vue
index 845b05f4..9190536d 100644
--- a/src/containers/DefaultContainer.vue
+++ b/src/containers/DefaultContainer.vue
@@ -102,6 +102,12 @@ export default {
icon: 'fa fa-balance-scale',
permission: permissions.VIEW_PORTFOLIO,
},
+ {
+ name: 'Tags',
+ url: '/tags',
+ icon: 'fa fa-tag',
+ permission: permissions.VIEW_PORTFOLIO,
+ },
{
title: true,
name: this.$t('message.global_audit'),
diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json
index f10da4ed..e9831aa0 100644
--- a/src/i18n/locales/de.json
+++ b/src/i18n/locales/de.json
@@ -691,6 +691,7 @@
"password_unauthorized": "Überprüfen Sie die aktuellen Anmeldeinformationen und versuchen Sie es erneut",
"phone": "Telefon",
"policies": "Richtlinien",
+ "policies_tagged_with": "Richtlinien mit dem Tag {tag}",
"policy_bundle_hash": "Paket-Hash",
"policy_bundle_info": "Paket-Info",
"policy_bundle_sync": "Paket synchronisieren",
@@ -727,6 +728,7 @@
"project_vulnerabilities": "Projektschwachstellen",
"projects": "Projekte",
"projects_at_risk": "Gefährdete Projekte",
+ "projects_tagged_with": "Projekte mit dem Tag {tag}",
"properties": "Eigenschaften",
"property_created": "Eigenschaft erstellt",
"property_deleted": "Eigenschaft gelöscht",
diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json
index 42d25756..1b791d40 100644
--- a/src/i18n/locales/en.json
+++ b/src/i18n/locales/en.json
@@ -691,6 +691,7 @@
"password_unauthorized": "Check current login credentials and try again",
"phone": "Phone",
"policies": "Policies",
+ "policies_tagged_with": "Policies tagged with {tag}",
"policy_bundle_hash": "Bundle Hash",
"policy_bundle_info": "Bundle Info",
"policy_bundle_sync": "Sync Bundle",
@@ -727,6 +728,7 @@
"project_vulnerabilities": "Project Vulnerabilities",
"projects": "Projects",
"projects_at_risk": "Projects at Risk",
+ "projects_tagged_with": "Projects tagged with {tag}",
"properties": "Properties",
"property_created": "Property created",
"property_deleted": "Property deleted",
diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json
index 1b0b6e46..611189d5 100644
--- a/src/i18n/locales/es.json
+++ b/src/i18n/locales/es.json
@@ -691,6 +691,7 @@
"password_unauthorized": "Verifique las credenciales de inicio de sesión actuales e inténtelo nuevamente",
"phone": "Teléfono",
"policies": "Políticas",
+ "policies_tagged_with": "Políticas etiquetadas con {tag}",
"policy_bundle_hash": "paquete de hash",
"policy_bundle_info": "Información del paquete",
"policy_bundle_sync": "Paquete de sincronización",
@@ -727,6 +728,7 @@
"project_vulnerabilities": "Vulnerabilidades del proyecto",
"projects": "Proyectos",
"projects_at_risk": "Proyectos en riesgo",
+ "projects_tagged_with": "Proyectos etiquetados con {tag}",
"properties": "Propiedades",
"property_created": "Propiedad creada",
"property_deleted": "Propiedad eliminada",
diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json
index d2d31868..4ab17cbb 100644
--- a/src/i18n/locales/fr.json
+++ b/src/i18n/locales/fr.json
@@ -691,6 +691,7 @@
"password_unauthorized": "Vérifiez les informations de connexion actuelles et réessayez",
"phone": "Téléphone",
"policies": "Politiques",
+ "policies_tagged_with": "Règles marquées avec {tag}",
"policy_bundle_hash": "Hachage groupé",
"policy_bundle_info": "Informations sur le forfait",
"policy_bundle_sync": "Pack de synchronisation",
@@ -727,6 +728,7 @@
"project_vulnerabilities": "Vulnérabilités du projet",
"projects": "Projets",
"projects_at_risk": "Projets à risque",
+ "projects_tagged_with": "Projets marqués avec {tag}",
"properties": "Propriétés",
"property_created": "Propriété créée",
"property_deleted": "Propriété supprimée",
diff --git a/src/i18n/locales/hi.json b/src/i18n/locales/hi.json
index 5d567ccc..53157a24 100644
--- a/src/i18n/locales/hi.json
+++ b/src/i18n/locales/hi.json
@@ -691,6 +691,7 @@
"password_unauthorized": "वर्तमान लॉगिन क्रेडेंशियल जांचें और पुनः प्रयास करें",
"phone": "फ़ोन",
"policies": "नीतियों",
+ "policies_tagged_with": "{tag} के साथ टैग की गईं नीतियां",
"policy_bundle_hash": "बंडल हैश",
"policy_bundle_info": "बंडल जानकारी",
"policy_bundle_sync": "सिंक बंडल",
@@ -727,6 +728,7 @@
"project_vulnerabilities": "परियोजना की कमज़ोरियाँ",
"projects": "परियोजनाओं",
"projects_at_risk": "जोखिम में परियोजनाएँ",
+ "projects_tagged_with": "{tag} के साथ टैग किए गए प्रोजेक्ट",
"properties": "गुण",
"property_created": "संपत्ति बनाई गई",
"property_deleted": "संपत्ति हटा दी गई",
diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json
index 3dabd757..04721ffc 100644
--- a/src/i18n/locales/it.json
+++ b/src/i18n/locales/it.json
@@ -691,6 +691,7 @@
"password_unauthorized": "Controlla le credenziali di accesso attuali e riprova",
"phone": "Telefono",
"policies": "Politiche",
+ "policies_tagged_with": "Politiche contrassegnate con {tag}",
"policy_bundle_hash": "Pacchetto Hash",
"policy_bundle_info": "Informazioni sul pacchetto",
"policy_bundle_sync": "Pacchetto di sincronizzazione",
@@ -727,6 +728,7 @@
"project_vulnerabilities": "Vulnerabilità del progetto",
"projects": "Progetti",
"projects_at_risk": "Progetti a rischio",
+ "projects_tagged_with": "Progetti taggati con {tag}",
"properties": "Proprietà",
"property_created": "Proprietà creata",
"property_deleted": "Proprietà eliminata",
diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json
index eb31e376..c43bc22f 100644
--- a/src/i18n/locales/ja.json
+++ b/src/i18n/locales/ja.json
@@ -691,6 +691,7 @@
"password_unauthorized": "現在のログイン資格情報を確認して、もう一度お試しください",
"phone": "電話",
"policies": "ポリシー",
+ "policies_tagged_with": "{tag} でタグ付けされたポリシー",
"policy_bundle_hash": "バンドルハッシュ",
"policy_bundle_info": "バンドル情報",
"policy_bundle_sync": "同期バンドル",
@@ -727,6 +728,7 @@
"project_vulnerabilities": "プロジェクトの脆弱性",
"projects": "プロジェクト",
"projects_at_risk": "リスクのあるプロジェクト",
+ "projects_tagged_with": "{tag} でタグ付けされたプロジェクト",
"properties": "プロパティ",
"property_created": "プロパティが作成されました",
"property_deleted": "プロパティが削除されました",
diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json
index 20459894..13548a3e 100644
--- a/src/i18n/locales/pl.json
+++ b/src/i18n/locales/pl.json
@@ -691,6 +691,7 @@
"password_unauthorized": "Sprawdź aktualne dane logowania i spróbuj ponownie",
"phone": "Telefon",
"policies": "Zasady",
+ "policies_tagged_with": "Zasady oznaczone tagiem {tag}",
"policy_bundle_hash": "Hash pakietu",
"policy_bundle_info": "Informacje o pakiecie",
"policy_bundle_sync": "Pakiet synchronizacji",
@@ -727,6 +728,7 @@
"project_vulnerabilities": "Luki w zabezpieczeniach projektu",
"projects": "Projektowanie",
"projects_at_risk": "Projekty zagrożone",
+ "projects_tagged_with": "Projekty oznaczone tagiem {tag}",
"properties": "Nieruchomości",
"property_created": "Właściwość utworzona",
"property_deleted": "Właściwość usunięta",
diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json
index 265f9ef7..59191611 100644
--- a/src/i18n/locales/pt-BR.json
+++ b/src/i18n/locales/pt-BR.json
@@ -691,6 +691,7 @@
"password_unauthorized": "Verifique as credenciais de login atuais e tente novamente",
"phone": "Telefone",
"policies": "Políticas",
+ "policies_tagged_with": "Políticas marcadas com {tag}",
"policy_bundle_hash": "Hash do pacote",
"policy_bundle_info": "Informações do pacote",
"policy_bundle_sync": "Pacote de sincronização",
@@ -727,6 +728,7 @@
"project_vulnerabilities": "Vulnerabilidades do projeto",
"projects": "Projetos",
"projects_at_risk": "Projetos em risco",
+ "projects_tagged_with": "Projetos marcados com {tag}",
"properties": "Propriedades",
"property_created": "Propriedade criada",
"property_deleted": "Propriedade excluída",
diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json
index 42d4cc5b..deadda9e 100644
--- a/src/i18n/locales/pt.json
+++ b/src/i18n/locales/pt.json
@@ -691,6 +691,7 @@
"password_unauthorized": "Verifique as credenciais de login atuais e tente novamente",
"phone": "Telefone",
"policies": "Políticas",
+ "policies_tagged_with": "Políticas marcadas com {tag}",
"policy_bundle_hash": "Hash do pacote",
"policy_bundle_info": "Informações do pacote",
"policy_bundle_sync": "Pacote de sincronização",
@@ -727,6 +728,7 @@
"project_vulnerabilities": "Vulnerabilidades do projeto",
"projects": "Projetos",
"projects_at_risk": "Projetos em risco",
+ "projects_tagged_with": "Projetos marcados com {tag}",
"properties": "Propriedades",
"property_created": "Propriedade criada",
"property_deleted": "Propriedade excluída",
diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json
index dd2e714c..75df7275 100644
--- a/src/i18n/locales/ru.json
+++ b/src/i18n/locales/ru.json
@@ -691,6 +691,7 @@
"password_unauthorized": "Проверьте текущие учетные данные для входа и повторите попытку.",
"phone": "Телефон",
"policies": "Политика",
+ "policies_tagged_with": "Политики с тегом {tag}",
"policy_bundle_hash": "Пакетный хеш",
"policy_bundle_info": "Информация о пакете",
"policy_bundle_sync": "Пакет синхронизации",
@@ -727,6 +728,7 @@
"project_vulnerabilities": "Уязвимости проекта",
"projects": "Проекты",
"projects_at_risk": "Проекты под угрозой",
+ "projects_tagged_with": "Проекты с тегом {tag}",
"properties": "Характеристики",
"property_created": "Объект создан",
"property_deleted": "Ресурс удален.",
diff --git a/src/i18n/locales/uk-UA.json b/src/i18n/locales/uk-UA.json
index 5edee440..560de1f0 100644
--- a/src/i18n/locales/uk-UA.json
+++ b/src/i18n/locales/uk-UA.json
@@ -691,6 +691,7 @@
"password_unauthorized": "Перевірте поточні облікові дані для входу та повторіть спробу",
"phone": "Телефон",
"policies": "політики",
+ "policies_tagged_with": "Правила з тегом {tag}",
"policy_bundle_hash": "Хеш пакета",
"policy_bundle_info": "Інформація про пакет",
"policy_bundle_sync": "Пакет синхронізації",
@@ -727,6 +728,7 @@
"project_vulnerabilities": "Уразливості проекту",
"projects": "Проекти",
"projects_at_risk": "Проекти під загрозою",
+ "projects_tagged_with": "Проекти з тегом {tag}",
"properties": "Властивості",
"property_created": "Власність створена",
"property_deleted": "Власність видалено",
diff --git a/src/i18n/locales/zh.json b/src/i18n/locales/zh.json
index 4a6feac0..f5fa301e 100644
--- a/src/i18n/locales/zh.json
+++ b/src/i18n/locales/zh.json
@@ -691,6 +691,7 @@
"password_unauthorized": "检查当前登录凭据并重试",
"phone": "电话",
"policies": "策略",
+ "policies_tagged_with": "带有 {tag} 标记的政策",
"policy_bundle_hash": "捆绑哈希",
"policy_bundle_info": "捆绑信息",
"policy_bundle_sync": "同步包",
@@ -727,6 +728,7 @@
"project_vulnerabilities": "项目漏洞",
"projects": "项目",
"projects_at_risk": "面临风险的项目",
+ "projects_tagged_with": "带有 {tag} 标记的项目",
"properties": "属性",
"property_created": "创建的财产",
"property_deleted": "属性已删除",
diff --git a/src/router/index.js b/src/router/index.js
index 4cda5bf6..50f66644 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -11,6 +11,7 @@ const DefaultContainer = () => import('@/containers/DefaultContainer');
// Views
const Dashboard = () => import('@/views/Dashboard');
const ProjectList = () => import('@/views/portfolio/projects/ProjectList');
+const TagList = () => import('@/views/portfolio/tags/TagList.vue');
const ComponentSearch = () =>
import('@/views/portfolio/components/ComponentSearch');
const VulnerabilityList = () =>
@@ -266,6 +267,17 @@ function configRoutes() {
permissions: ['VIEW_PORTFOLIO'],
},
},
+ {
+ path: 'tags',
+ name: 'Tags',
+ component: TagList,
+ meta: {
+ title: i18n.t('message.tags'),
+ i18n: 'message.tags',
+ sectionPath: '/tags',
+ permission: 'VIEW_PORTFOLIO',
+ },
+ },
{
path: 'licenses',
name: 'Licenses',
diff --git a/src/views/administration/accessmanagement/SelectProjectModal.vue b/src/views/administration/accessmanagement/SelectProjectModal.vue
index cec8d52f..c21a4ee4 100644
--- a/src/views/administration/accessmanagement/SelectProjectModal.vue
+++ b/src/views/administration/accessmanagement/SelectProjectModal.vue
@@ -44,6 +44,7 @@ import xssFilters from 'xss-filters';
import permissionsMixin from '../../../mixins/permissionsMixin';
import common from '../../../shared/common';
import { Switch as cSwitch } from '@coreui/vue';
+import router from '@/router';
export default {
mixins: [permissionsMixin],
@@ -70,16 +71,20 @@ export default {
title: this.$t('message.project_name'),
field: 'name',
sortable: true,
- formatter(value, row, index) {
- let url = xssFilters.uriInUnQuotedAttr('../projects/' + row.uuid);
- return `${xssFilters.inHTMLData(value)}`;
+ formatter(value, row) {
+ // TODO: Close modal when link is clicked.
+ const href = router.resolve({
+ name: 'Project',
+ params: { uuid: row.uuid },
+ }).href;
+ return `${xssFilters.inHTMLData(value)}`;
},
},
{
title: this.$t('message.version'),
field: 'version',
sortable: true,
- formatter(value, row, index) {
+ formatter(value) {
return xssFilters.inHTMLData(common.valueWithDefault(value, ''));
},
},
diff --git a/src/views/portfolio/tags/TagList.vue b/src/views/portfolio/tags/TagList.vue
new file mode 100644
index 00000000..cf361b42
--- /dev/null
+++ b/src/views/portfolio/tags/TagList.vue
@@ -0,0 +1,136 @@
+
+
+
+
+
diff --git a/src/views/portfolio/tags/TaggedPoliciesListModal.vue b/src/views/portfolio/tags/TaggedPoliciesListModal.vue
new file mode 100644
index 00000000..54987280
--- /dev/null
+++ b/src/views/portfolio/tags/TaggedPoliciesListModal.vue
@@ -0,0 +1,88 @@
+
+
+
+
+
+ {{
+ $t('message.cancel')
+ }}
+
+
+
+
+
diff --git a/src/views/portfolio/tags/TaggedProjectListModal.vue b/src/views/portfolio/tags/TaggedProjectListModal.vue
new file mode 100644
index 00000000..dccff705
--- /dev/null
+++ b/src/views/portfolio/tags/TaggedProjectListModal.vue
@@ -0,0 +1,102 @@
+
+
+
+
+
+ {{
+ $t('message.cancel')
+ }}
+
+
+
+
+