Files
pki_management/README.md
2025-11-11 09:56:01 +03:00

127 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PKI Management (JavaFX)
<p align="center">
<img src="https://img.shields.io/badge/Java-ED8B00?style=for-the-badge&logo=openjdk&logoColor=white" alt="Java badge"/>
<img src="https://img.shields.io/badge/JavaFX-1B6AC6?style=for-the-badge&logo=java&logoColor=white" alt="JavaFX badge"/>
<img src="https://img.shields.io/badge/Maven-C71A36?style=for-the-badge&logo=apache-maven&logoColor=white" alt="Maven badge"/>
<img src="https://img.shields.io/badge/Windows-0078D6?style=for-the-badge&logo=windows&logoColor=white" alt="Windows badge"/>
<img src="https://img.shields.io/badge/Architecture-Modular-4CAF50?style=for-the-badge" alt="Modular architecture badge"/>
</p>
> Современное настольное приложение на 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.
---