# PKI Management (JavaFX)

Java badge JavaFX badge Maven badge Windows badge Modular architecture badge

> Современное настольное приложение на JavaFX для управления PKI-ресурсами с модульной архитектурой, настраиваемой навигацией и системой прав доступа. ## ✨ Особенности - **Компонентная навигация** - `MenuItem` — визуальные блоки-оглавления - `SubMenuItem` — кликабельные пункты подменю - Управление видимостью пунктов (вкл/выкл), автоматическое скрытие пустых блоков - **Модульная архитектура** - Пример модуля: `Test 1` - Настройки с пользовательским и админским режимами - **Админский доступ** - Диалог ввода пароля с автофокусом - Переключение интерфейса настроек (User/Admin) - **Конфигурация** - Хранится в скрытой папке пользователя `pki_management` (Windows: `C:\Users\{user}\pki_management\config.properties`) - Доступ через `ConfigManager` (singleton) ## 🧰 Стек - Java 21, JavaFX 21 (Controls + FXML) - Maven ## 🗂️ Структура проекта ``` src/main/java/com/dsol/pki_management/ ├─ app/ # Запуск приложения │ ├─ PKIApplication.java │ └─ Launcher.java ├─ controllers/ # Контроллеры экранов │ ├─ MainController.java │ └─ SettingsController.java ├─ components/ # Переиспользуемые UI-компоненты │ ├─ MenuItem.java │ └─ SubMenuItem.java ├─ modules/ # Функциональные модули │ └─ test1/ │ └─ Test1Controller.java └─ config/ # Конфигурация приложения ├─ ConfigManager.java └─ AppConfig.java src/main/resources/com/dsol/pki_management/ ├─ views/ │ └─ main.fxml ├─ components/ │ ├─ menu-item.fxml │ └─ sub-menu-item.fxml └─ modules/ ├─ settings/ │ └─ settings-view.fxml └─ test1/ └─ test1-view.fxml ``` ## 🚀 Быстрый старт 1. Установите JDK 21 и Maven 2. Сборка и запуск ```bash # Windows / Linux / macOS mvn clean javafx:run ``` Либо через главный класс: ```bash mvn -q -Dexec.mainClass="com.dsol.pki_management.app.Launcher" exec:java ``` ## ⚙️ Конфигурация - Путь: `C:\Users\{user}\pki_management\config.properties` (Windows) - Создается автоматически при первом запуске - Пример ключей: - `admin.password` — пароль администратора (по умолчанию `admin123`) - `app.language`, `app.theme` — пользовательские настройки Использование в коде: ```java var config = ConfigManager.getInstance(); String pwd = config.getProperty(AppConfig.KEY_ADMIN_PASSWORD, AppConfig.DEFAULT_ADMIN_PASSWORD); config.setProperty(AppConfig.KEY_THEME, "light"); config.saveConfig(); ``` ## 💡 UX-функции - Гамбургер-меню слева - Отображение навигации как дерева - Зачеркивание скрытых SubMenu пунктов - Скрытие `MenuItem`, если все дочерние скрыты ## 🛣️ Дорожная карта - Локализация интерфейса (i18n) - Темы (light/dark) - Новые модули: управление сертификатами, аудит - Экспорт/импорт настроек ## 👩‍💻 Разработка ```bash # Сборка mvn clean package # Запуск с логами mvn -Dprism.verbose=true javafx:run ``` ## 📄 Лицензия Проект распространяется на условиях лицензии Apache-2.0. ---