EN · DE · RU · FR · ES

#131: IHKPluginUserRightId.kt

plugins/org.projectforge.plugins.ihk/src/main/kotlin/org/projectforge/plugins/ihk/IHKPluginUserRightId.kt перечисление Kotlin / идентификатор права пользователя, plugins/org.projectforge.plugins.ihk/src/main/kotlin/org/projectforge/plugins/ihk/IHKPluginUserRightId.kt 60 строк · 24 кода · 30 комментариев · 6 пустых
Перечисление Kotlin, реализующее IUserRightId для определения единственного права доступа плагина 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

Интеграция с Hibernate Search

Аннотации @Indexed и @TypeBinding привязывают это перечисление к HibernateSearchUserRightIdTypeBinder, обеспечивая полнотекстовый поиск по назначениям прав пользователей. Когда запрос Hibernate Search сканирует сущности PFUserDO на предмет прав, этот связыватель типов знает, как индексировать идентификаторы прав на основе перечислений.

ProviderService (SPI)

Внутренний класс 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())
    }
}

Проектные решения

История Git

868d6abb7 2025 -> 2026
63081666f Заголовки исходных файлов: 2024-> 2025.
067a4cbb1 Работа над миграцией в процессе...
b1560ca43 Работа над миграцией в процессе...