From 45c05817a059de0424df91d09a5dccba55f3287a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Schauer-K=C3=B6ckeis?= Date: Tue, 10 Sep 2024 09:02:57 +0200 Subject: [PATCH 01/17] feat: Customizable Login page Added new configuration option where the message can be configured, which will be showen on the login page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Thomas Schauer-Köckeis --- src/i18n/locales/de.json | 6 +- src/i18n/locales/en.json | 6 +- src/i18n/locales/es.json | 6 +- src/i18n/locales/fr.json | 6 +- src/i18n/locales/hi.json | 6 +- src/i18n/locales/it.json | 6 +- src/i18n/locales/ja.json | 6 +- src/i18n/locales/pl.json | 6 +- src/i18n/locales/pt-BR.json | 6 +- src/i18n/locales/pt.json | 6 +- src/i18n/locales/ru.json | 6 +- src/i18n/locales/uk-UA.json | 6 +- src/i18n/locales/zh.json | 6 +- src/router/index.js | 12 ++ src/views/administration/AdminMenu.vue | 5 + src/views/administration/Administration.vue | 2 + .../configuration/WelcomeMessage.vue | 107 ++++++++++++++++++ src/views/pages/Login.vue | 18 +++ 18 files changed, 209 insertions(+), 13 deletions(-) create mode 100644 src/views/administration/configuration/WelcomeMessage.vue diff --git a/src/i18n/locales/de.json b/src/i18n/locales/de.json index 3c77dd31f..b48a39342 100644 --- a/src/i18n/locales/de.json +++ b/src/i18n/locales/de.json @@ -187,6 +187,7 @@ "permissions": "Berechtigungen", "personal_access_token": "Persönlicher Zugriffstoken", "portfolio_access_control": "Portfolio-Zugriffskontrolle", + "preview": "Vorschau", "project_access": "Projektzugriff", "publisher": "Publisher", "publisher_class": "Publisher-Klasse", @@ -273,7 +274,10 @@ "vulnsource_osv_advisories_desc": "Google OSV ist eine verteilte Infrastruktur für Schwachstellen und Triage für Open-Source-Projekte, die sowohl Open-Source-Betreuern als auch Open-Source-Nutzern helfen soll. Es dient als Aggregator von Schwachstellendatenbanken, die das OpenSSF-Schwachstellenformat übernommen haben.", "vulnsource_osv_advisories_enable": "Wählen Sie ein Ökosystem aus, um Google OSV Advisory Mirroring zu aktivieren", "vulnsource_osv_alias_sync_warning": "OSV kann nicht identische Schwachstellen als Aliase melden. Gehen Sie mit Vorsicht vor.", - "vulnsource_osv_base_url": "OSV-Basis-URL" + "vulnsource_osv_base_url": "OSV-Basis-URL", + "welcome_message": "Willkommensnachricht", + "welcome_message_desc": "Passen Sie die Willkommensnachricht an, die auf der Startseite von Dependency-Track angezeigt wird, bevor sich Benutzer anmelden.", + "welcome_message_enable": "Willkommensnachricht aktiviert" }, "condition": { "forbidden": "Verboten (403)", diff --git a/src/i18n/locales/en.json b/src/i18n/locales/en.json index e91978073..4fdc35ceb 100644 --- a/src/i18n/locales/en.json +++ b/src/i18n/locales/en.json @@ -187,6 +187,7 @@ "permissions": "Permissions", "personal_access_token": "Personal Access Token", "portfolio_access_control": "Portfolio Access Control", + "preview": "Preview", "project_access": "Project access", "publisher": "Publisher", "publisher_class": "Publisher class", @@ -273,7 +274,10 @@ "vulnsource_osv_advisories_desc": "Google OSV is a distributed vulnerability and triage infrastructure for open source projects aimed at helping both open source maintainers and consumers of open source. It serves as an aggregator of vulnerability databases that have adopted the OpenSSF Vulnerability format.", "vulnsource_osv_advisories_enable": "Select ecosystem to enable Google OSV Advisory mirroring", "vulnsource_osv_alias_sync_warning": "OSV may report non-identical vulnerabilities as aliases. Proceed with caution.", - "vulnsource_osv_base_url": "OSV Base URL" + "vulnsource_osv_base_url": "OSV Base URL", + "welcome_message": "Welcome Message", + "welcome_message_desc": "Customize the welcome message that appears on the start page of Dependency-Track before users sign in.", + "welcome_message_enable": "Welcome Message enabled" }, "condition": { "forbidden": "Forbidden (403)", diff --git a/src/i18n/locales/es.json b/src/i18n/locales/es.json index 8fbc6d0d3..3d06548d5 100644 --- a/src/i18n/locales/es.json +++ b/src/i18n/locales/es.json @@ -187,6 +187,7 @@ "permissions": "Permisos", "personal_access_token": "Token de acceso personal", "portfolio_access_control": "Control de acceso al portafolio", + "preview": "Avance", "project_access": "Acceso al proyecto", "publisher": "Editor", "publisher_class": "Clase de editor", @@ -273,7 +274,10 @@ "vulnsource_osv_advisories_desc": "Google OSV es una infraestructura distribuida de clasificación y vulnerabilidad para proyectos de código abierto cuyo objetivo es ayudar tanto a los mantenedores como a los consumidores de código abierto. Sirve como agregador de bases de datos de vulnerabilidades que han adoptado el formato OpenSSF Vulnerability.", "vulnsource_osv_advisories_enable": "Seleccione el ecosistema para habilitar la duplicación del aviso OSV de Google", "vulnsource_osv_alias_sync_warning": "OSV puede informar vulnerabilidades no idénticas como alias. Proceda con precaución.", - "vulnsource_osv_base_url": "URL base de OSV" + "vulnsource_osv_base_url": "URL base de OSV", + "welcome_message": "Mensaje de bienvenida", + "welcome_message_desc": "Personalice el mensaje de bienvenida que aparece en la página de inicio de Dependency-Track antes de que los usuarios inicien sesión.", + "welcome_message_enable": "Mensaje de bienvenida habilitado" }, "condition": { "forbidden": "Prohibido (403)", diff --git a/src/i18n/locales/fr.json b/src/i18n/locales/fr.json index 676df0418..530e19a49 100644 --- a/src/i18n/locales/fr.json +++ b/src/i18n/locales/fr.json @@ -187,6 +187,7 @@ "permissions": "Autorisations", "personal_access_token": "Jeton d'accès personnel", "portfolio_access_control": "Contrôle d'accès au portefolio", + "preview": "Aperçu", "project_access": "Accès au projet", "publisher": "Éditeur", "publisher_class": "Classe d'éditeur", @@ -273,7 +274,10 @@ "vulnsource_osv_advisories_desc": "Google OSV est une infrastructure distribuée de tri et de vulnérabilité pour les projets open source visant à aider à la fois les responsables et les consommateurs d'open source. Il sert d'agrégateur de bases de données de vulnérabilités ayant adopté le format OpenSSF Vulnerability.", "vulnsource_osv_advisories_enable": "Sélectionnez (au moins) un écosystème pour activer la réplication de Google OSV Advisory", "vulnsource_osv_alias_sync_warning": "OSV peut signaler des vulnérabilités non identiques sous forme d'alias. Procéder avec prudence.", - "vulnsource_osv_base_url": "URL de base OSV" + "vulnsource_osv_base_url": "URL de base OSV", + "welcome_message": "Message de bienvenue", + "welcome_message_desc": "Personnalisez le message de bienvenue qui apparaît sur la page de démarrage de Dependency-Track avant que les utilisateurs ne se connectent.", + "welcome_message_enable": "Message de bienvenue activé" }, "condition": { "forbidden": "Interdit (403)", diff --git a/src/i18n/locales/hi.json b/src/i18n/locales/hi.json index 10278624b..83b75f88b 100644 --- a/src/i18n/locales/hi.json +++ b/src/i18n/locales/hi.json @@ -187,6 +187,7 @@ "permissions": "अनुमतियां", "personal_access_token": "व्यक्तिगत एक्सेस टोकन", "portfolio_access_control": "पोर्टफोलियो एक्सेस नियंत्रण", + "preview": "पूर्व दर्शन", "project_access": "परियोजना तक पहुंच", "publisher": "प्रकाशक", "publisher_class": "प्रकाशक वर्ग", @@ -273,7 +274,10 @@ "vulnsource_osv_advisories_desc": "Google OSV ओपन सोर्स प्रोजेक्ट्स के लिए एक वितरित भेद्यता और ट्राइएज इंफ्रास्ट्रक्चर है जिसका उद्देश्य ओपन सोर्स अनुरक्षकों और ओपन सोर्स के उपभोक्ताओं दोनों की मदद करना है। यह भेद्यता डेटाबेस के एग्रीगेटर के रूप में कार्य करता है जिसने OpenSSF भेद्यता प्रारूप को अपनाया है।", "vulnsource_osv_advisories_enable": "Google OSV एडवाइजरी मिररिंग सक्षम करने के लिए पारिस्थितिकी तंत्र का चयन करें", "vulnsource_osv_alias_sync_warning": "OSV गैर-समान कमज़ोरियों को उपनाम के रूप में रिपोर्ट कर सकता है। सावधानी से आगे बढ़ें।", - "vulnsource_osv_base_url": "OSV बेस यूआरएल" + "vulnsource_osv_base_url": "OSV बेस यूआरएल", + "welcome_message": "स्वागत संदेश", + "welcome_message_desc": "उपयोगकर्ताओं के साइन इन करने से पहले डिपेंडेंसी-ट्रैक के आरंभ पृष्ठ पर दिखाई देने वाले स्वागत संदेश को अनुकूलित करें।", + "welcome_message_enable": "स्वागत संदेश सक्षम किया गया" }, "condition": { "forbidden": "निषिद्ध (403)", diff --git a/src/i18n/locales/it.json b/src/i18n/locales/it.json index 165853bf8..ecc1d4d4c 100644 --- a/src/i18n/locales/it.json +++ b/src/i18n/locales/it.json @@ -187,6 +187,7 @@ "permissions": "Autorizzazioni", "personal_access_token": "Token di accesso personale", "portfolio_access_control": "Controllo degli accessi al portafoglio", + "preview": "Anteprima", "project_access": "Accesso al progetto", "publisher": "Editore", "publisher_class": "Classe editore", @@ -273,7 +274,10 @@ "vulnsource_osv_advisories_desc": "Google OSV è un'infrastruttura distribuita di vulnerabilità e valutazione per progetti open source volta ad aiutare sia i manutentori che i consumatori dell'open source. Serve come aggregatore di database di vulnerabilità che hanno adottato il formato OpenSSF Vulnerability.", "vulnsource_osv_advisories_enable": "Seleziona l'ecosistema per abilitare il mirroring dell'advisory OSV di Google", "vulnsource_osv_alias_sync_warning": "OSV può segnalare vulnerabilità non identiche come alias. Procedi con cautela.", - "vulnsource_osv_base_url": "URL di base OSV" + "vulnsource_osv_base_url": "URL di base OSV", + "welcome_message": "Messaggio di benvenuto", + "welcome_message_desc": "Personalizza il messaggio di benvenuto che appare nella pagina iniziale di Dependency-Track prima che gli utenti accedano.", + "welcome_message_enable": "Messaggio di benvenuto abilitato" }, "condition": { "forbidden": "Proibito (403)", diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json index fb2c66b9a..9a5b3b595 100644 --- a/src/i18n/locales/ja.json +++ b/src/i18n/locales/ja.json @@ -187,6 +187,7 @@ "permissions": "権限", "personal_access_token": "パーソナルアクセストークン", "portfolio_access_control": "ポートフォリオアクセス制御", + "preview": "プレビュー", "project_access": "プロジェクトへのアクセス", "publisher": "パブリッシャー", "publisher_class": "パブリッシャークラス", @@ -273,7 +274,10 @@ "vulnsource_osv_advisories_desc": "Google OSV は、オープンソース プロジェクト向けの分散型脆弱性およびトリアージ インフラストラクチャであり、オープンソースのメンテナーとオープンソースの消費者の両方を支援することを目的としています。OpenSSF 脆弱性形式を採用した脆弱性データベースのアグリゲータとして機能します。", "vulnsource_osv_advisories_enable": "Google OSV アドバイザリ ミラーリングを有効にするエコシステムを選択します", "vulnsource_osv_alias_sync_warning": "OSV は同一でない脆弱性をエイリアスとして報告する場合があります。ご注意ください。", - "vulnsource_osv_base_url": "OSV ベース URL" + "vulnsource_osv_base_url": "OSV ベース URL", + "welcome_message": "ウェルカムメッセージ", + "welcome_message_desc": "ユーザーがサインインする前に、Dependency-Track の開始ページに表示されるウェルカム メッセージをカスタマイズします。", + "welcome_message_enable": "ウェルカムメッセージが有効になりました" }, "condition": { "forbidden": "禁止 (403)", diff --git a/src/i18n/locales/pl.json b/src/i18n/locales/pl.json index 7e54fcb75..d1687f9dd 100644 --- a/src/i18n/locales/pl.json +++ b/src/i18n/locales/pl.json @@ -187,6 +187,7 @@ "permissions": "Uprawnienia", "personal_access_token": "Osobisty token dostępu", "portfolio_access_control": "Kontrola dostępu do portfela", + "preview": "Zapowiedź", "project_access": "Dostęp do projektu", "publisher": "Wydawca", "publisher_class": "Klasa wydawcy", @@ -273,7 +274,10 @@ "vulnsource_osv_advisories_desc": "Google OSV to rozproszona infrastruktura wykrywania luk i selekcji dla projektów open source, której celem jest pomoc zarówno opiekunom oprogramowania open source, jak i konsumentom oprogramowania open source. Służy jako agregator baz danych o lukach w zabezpieczeniach, które przyjęły format OpenSSF Vulnerability.", "vulnsource_osv_advisories_enable": "Wybierz ekosystem, aby włączyć kopię lustrzaną Doradztwa Google OSV", "vulnsource_osv_alias_sync_warning": "OSV może zgłaszać nieidentyczne luki w zabezpieczeniach jako aliasy. Postępuj ostrożnie.", - "vulnsource_osv_base_url": "Podstawowy adres URL OSV" + "vulnsource_osv_base_url": "Podstawowy adres URL OSV", + "welcome_message": "Wiadomość powitalna", + "welcome_message_desc": "Dostosuj wiadomość powitalną wyświetlaną na stronie początkowej funkcji Depency-Track przed zalogowaniem się użytkownika.", + "welcome_message_enable": "Wiadomość powitalna włączona" }, "condition": { "forbidden": "Zabronione (403)", diff --git a/src/i18n/locales/pt-BR.json b/src/i18n/locales/pt-BR.json index ae05147c2..32c2438ab 100644 --- a/src/i18n/locales/pt-BR.json +++ b/src/i18n/locales/pt-BR.json @@ -187,6 +187,7 @@ "permissions": "Permissões", "personal_access_token": "Token de acesso pessoal", "portfolio_access_control": "Controle de acesso ao portfólio", + "preview": "Visualização", "project_access": "Acesso ao projeto", "publisher": "Editor", "publisher_class": "Classe de editor", @@ -273,7 +274,10 @@ "vulnsource_osv_advisories_desc": "O Google OSV é uma infraestrutura distribuída de vulnerabilidade e triagem para projetos de código aberto que visa ajudar mantenedores e consumidores de código aberto. Serve como um agregador de bancos de dados de vulnerabilidades que adotaram o formato OpenSSF Vulnerability.", "vulnsource_osv_advisories_enable": "Selecione o ecossistema para ativar o espelhamento do Google OSV Advisory", "vulnsource_osv_alias_sync_warning": "OSV pode relatar vulnerabilidades não idênticas como aliases. Prossiga com cuidado.", - "vulnsource_osv_base_url": "URL base do OSV" + "vulnsource_osv_base_url": "URL base do OSV", + "welcome_message": "Mensagem de boas-vindas", + "welcome_message_desc": "Personalize a mensagem de boas-vindas que aparece na página inicial do Dependency-Track antes dos usuários fazerem login.", + "welcome_message_enable": "Mensagem de boas-vindas ativada" }, "condition": { "forbidden": "Proibido (403)", diff --git a/src/i18n/locales/pt.json b/src/i18n/locales/pt.json index 564354594..428eb0f77 100644 --- a/src/i18n/locales/pt.json +++ b/src/i18n/locales/pt.json @@ -187,6 +187,7 @@ "permissions": "Permissões", "personal_access_token": "Token de acesso pessoal", "portfolio_access_control": "Controle de acesso ao portfólio", + "preview": "Visualização", "project_access": "Acesso ao projeto", "publisher": "Editor", "publisher_class": "Classe de editor", @@ -273,7 +274,10 @@ "vulnsource_osv_advisories_desc": "O Google OSV é uma infraestrutura distribuída de vulnerabilidade e triagem para projetos de código aberto que visa ajudar mantenedores e consumidores de código aberto. Serve como um agregador de bancos de dados de vulnerabilidades que adotaram o formato OpenSSF Vulnerability.", "vulnsource_osv_advisories_enable": "Selecione o ecossistema para ativar o espelhamento do Google OSV Advisory", "vulnsource_osv_alias_sync_warning": "OSV pode relatar vulnerabilidades não idênticas como aliases. Prossiga com cuidado.", - "vulnsource_osv_base_url": "URL base do OSV" + "vulnsource_osv_base_url": "URL base do OSV", + "welcome_message": "Mensagem de boas-vindas", + "welcome_message_desc": "Personalize a mensagem de boas-vindas que aparece na página inicial do Dependency-Track antes dos usuários fazerem login.", + "welcome_message_enable": "Mensagem de boas-vindas ativada" }, "condition": { "forbidden": "Proibido (403)", diff --git a/src/i18n/locales/ru.json b/src/i18n/locales/ru.json index e72be8c17..3ee1d2522 100644 --- a/src/i18n/locales/ru.json +++ b/src/i18n/locales/ru.json @@ -187,6 +187,7 @@ "permissions": "Разрешения", "personal_access_token": "Токен личного доступа", "portfolio_access_control": "Контроль доступа к портфолио", + "preview": "Предварительный просмотр", "project_access": "Доступ к проекту", "publisher": "Издатель", "publisher_class": "Класс издателя", @@ -273,7 +274,10 @@ "vulnsource_osv_advisories_desc": "Google OSV — это распределенная инфраструктура оценки уязвимостей и сортировки для проектов с открытым исходным кодом, призванная помочь как сопровождающим, так и потребителям открытого исходного кода. Он служит агрегатором баз данных уязвимостей, принятых в формате OpenSSF Vulnerability.", "vulnsource_osv_advisories_enable": "Выберите экосистему, чтобы включить зеркалирование рекомендаций Google OSV.", "vulnsource_osv_alias_sync_warning": "OSV может сообщать о неидентичных уязвимостях как псевдонимах. Действовать с осторожностью.", - "vulnsource_osv_base_url": "Базовый URL-адрес OSV" + "vulnsource_osv_base_url": "Базовый URL-адрес OSV", + "welcome_message": "Приветственное сообщение", + "welcome_message_desc": "Настройте приветственное сообщение, которое появляется на стартовой странице Dependency-Track перед входом пользователей.", + "welcome_message_enable": "Приветственное сообщение включено" }, "condition": { "forbidden": "Запрещено (403)", diff --git a/src/i18n/locales/uk-UA.json b/src/i18n/locales/uk-UA.json index 6afd42cb9..374fa5c14 100644 --- a/src/i18n/locales/uk-UA.json +++ b/src/i18n/locales/uk-UA.json @@ -187,6 +187,7 @@ "permissions": "Дозволи", "personal_access_token": "Персональний маркер доступу", "portfolio_access_control": "Контроль доступу до портфоліо", + "preview": "Попередній перегляд", "project_access": "Доступ до проекту", "publisher": "Видавець", "publisher_class": "Клас видавця", @@ -273,7 +274,10 @@ "vulnsource_osv_advisories_desc": "Google OSV — це розподілена інфраструктура уразливостей і сортування для проектів з відкритим кодом, спрямована на допомогу як розробникам відкритого коду, так і споживачам відкритого коду. \nВін служить агрегатором баз даних уразливостей, які прийняли формат OpenSSF Vulnerability.", "vulnsource_osv_advisories_enable": "Виберіть екосистему, щоб увімкнути віддзеркалення Google OSV Advisory", "vulnsource_osv_alias_sync_warning": "OSV може повідомляти про неідентичні вразливості як псевдоніми. \nДійте обережно.", - "vulnsource_osv_base_url": "Базовий URL OSV" + "vulnsource_osv_base_url": "Базовий URL OSV", + "welcome_message": "Вітальне повідомлення", + "welcome_message_desc": "Налаштуйте вітальне повідомлення, яке з’являється на початковій сторінці Dependency-Track перед входом користувачів.", + "welcome_message_enable": "Вітальне повідомлення ввімкнено" }, "condition": { "forbidden": "Заборонено (403)", diff --git a/src/i18n/locales/zh.json b/src/i18n/locales/zh.json index eb5b50811..d74e8286a 100644 --- a/src/i18n/locales/zh.json +++ b/src/i18n/locales/zh.json @@ -187,6 +187,7 @@ "permissions": "权限", "personal_access_token": "个人访问令牌", "portfolio_access_control": "portfolio 访问控制", + "preview": "预览", "project_access": "项目访问", "publisher": "发行商", "publisher_class": "发行商分类", @@ -273,7 +274,10 @@ "vulnsource_osv_advisories_desc": "Google OSV 是开源项目的分布式漏洞和分类基础设施,旨在帮助开源维护者和开源消费者。它充当采用 OpenSSF 漏洞格式的漏洞数据库的聚合器。", "vulnsource_osv_advisories_enable": "选择生态系统以启用 Google OSV 咨询镜像", "vulnsource_osv_alias_sync_warning": "OSV 可能会将不相同的漏洞报告为别名。请谨慎操作。", - "vulnsource_osv_base_url": "OSV 基本 URL" + "vulnsource_osv_base_url": "OSV 基本 URL", + "welcome_message": "欢迎辞", + "welcome_message_desc": "自定义用户登录前 Dependency-Track 起始页上显示的欢迎消息。", + "welcome_message_enable": "欢迎消息已启用" }, "condition": { "forbidden": "禁止 (403)", diff --git a/src/router/index.js b/src/router/index.js index a6be362d9..3f66346dc 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -26,6 +26,8 @@ const Administration = () => import('@/views/administration/Administration'); const General = () => import('@/views/administration/configuration/General'); const BomFormats = () => import('@/views/administration/configuration/BomFormats'); +const WelcomeMessage = () => + import('@/views/administration/configuration/WelcomeMessage'); const Email = () => import('@/views/administration/configuration/Email'); const Jira = () => import('@/views/administration/configuration/JiraConfig'); const InternalComponents = () => @@ -348,6 +350,16 @@ function configRoutes() { permission: 'SYSTEM_CONFIGURATION', }, }, + { + path: 'configuration/welcomeMessage', + component: WelcomeMessage, + meta: { + title: i18n.t('message.administration'), + i18n: 'message.administration', + sectionPath: '/admin', + permission: 'SYSTEM_CONFIGURATION', + }, + }, { path: 'configuration/email', component: Email, diff --git a/src/views/administration/AdminMenu.vue b/src/views/administration/AdminMenu.vue index ab875bc32..47f86976f 100644 --- a/src/views/administration/AdminMenu.vue +++ b/src/views/administration/AdminMenu.vue @@ -96,6 +96,11 @@ export default { name: this.$t('admin.email'), route: 'configuration/email', }, + { + component: 'WelcomeMessage', + name: this.$t('admin.welcome_message'), + route: 'configuration/welcomeMessage', + }, { component: 'InternalComponents', name: this.$t('admin.internal_components'), diff --git a/src/views/administration/Administration.vue b/src/views/administration/Administration.vue index f413e4ee7..5034e2931 100644 --- a/src/views/administration/Administration.vue +++ b/src/views/administration/Administration.vue @@ -27,6 +27,7 @@ import Jira from './configuration/JiraConfig'; import Search from './configuration/Search.vue'; import TaskScheduler from './configuration/TaskScheduler.vue'; import Experimental from './configuration/Experimental.vue'; +import WelcomeMessage from './configuration/WelcomeMessage.vue'; // Analyzer plugins import InternalAnalyzer from './analyzers/InternalAnalyzer'; import OssIndexAnalyzer from './analyzers/OssIndexAnalyzer'; @@ -72,6 +73,7 @@ export default { EventBus, AdminMenu, General, + WelcomeMessage, BomFormats, Email, Jira, diff --git a/src/views/administration/configuration/WelcomeMessage.vue b/src/views/administration/configuration/WelcomeMessage.vue new file mode 100644 index 000000000..88819b205 --- /dev/null +++ b/src/views/administration/configuration/WelcomeMessage.vue @@ -0,0 +1,107 @@ +