IHKPluginUserRightId.ktIUserRightId для определения единственного права доступа плагина IHK. Предоставляет внутренний класс ProviderService для индексации Hibernate Search и SPI-провайдера прав.@Indexed
@TypeBinding(binder = TypeBinderRef(type = HibernateSearchUserRightIdTypeBinder::class))
enum class IHKPluginUserRightId(
override val id: String,
override val orderString: String,
override val i18nKey: String
) : IUserRightId {
IHK("PLUGIN_IHK", "plugin70", "plugins.ihk");
}
| Параметр | Значение | Смысл |
|---|---|---|
id | "PLUGIN_IHK" | Уникальный идентификатор среди всех плагинов; хранится в базе данных для назначения прав пользователям |
orderString | "plugin70" | Ключ сортировки для таблицы прав на странице UserEditPage; шаблон pluginnn гарантирует сортировку плагинов после встроенных прав |
i18nKey | "plugins.ihk" | Ключ для отображаемого имени права в интерфейсе; разрешается через IHKI18nResources.properties |
Аннотации @Indexed и @TypeBinding привязывают это перечисление к HibernateSearchUserRightIdTypeBinder, обеспечивая полнотекстовый поиск по назначениям прав пользователей. Когда запрос Hibernate Search сканирует сущности PFUserDO на предмет прав, этот связыватель типов знает, как индексировать идентификаторы прав на основе перечислений.
Внутренний класс ProviderService реализует RightRightIdProviderService — интерфейс Java SPI. Его метод getUserRightIds() возвращает элементы перечисления через Arrays.asList(*entries.toTypedArray()). Он загружается ServiceLoader и добавляет право IHK в глобальный реестр всех известных прав пользователей в системе.
class ProviderService : RightRightIdProviderService {
override fun getUserRightIds(): Collection<IUserRightId> {
return Arrays.asList<IUserRightId>(*entries.toTypedArray())
}
}
override val.ProviderService регистрируется в META-INF/services/org.projectforge.framework.persistence.api.RightRightIdProviderService (не показано, но подразумевается шаблоном), что делает права плагина автоматически обнаруживаемыми без явного кода регистрации.PLUGIN_IHK), в отличие от ToDo, у которого есть PLUGIN_TODO. Шаблон перечисления легко масштабируется, если в будущем потребуются дополнительные права (например, PLUGIN_IHK_ADMIN).pluginNN (где NN — увеличивающийся номер) обеспечивает детерминированный порядок в таблице администрирования прав. IHK использует 70, размещаясь после более ранних плагинов, таких как ToDo (plugin10).868d6abb7 2025 -> 2026 63081666f Заголовки исходных файлов: 2024-> 2025. 067a4cbb1 Работа над миграцией в процессе... b1560ca43 Работа над миграцией в процессе...