IHKPluginUserRightId.ktIUserRightId para definir el único derecho de acceso del plugin IHK. Proporciona una clase interna ProviderService para la indexación de Hibernate Search y el SPI del proveedor de derechos.@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");
}
| Parámetro | Valor | Significado |
|---|---|---|
id | "PLUGIN_IHK" | Identificador único entre todos los plugins; almacenado en la base de datos para asignaciones de derechos de usuario |
orderString | "plugin70" | Clave de ordenación para la tabla de derechos de UserEditPage; el patrón pluginnn asegura que los plugins se ordenen después de los derechos incorporados |
i18nKey | "plugins.ihk" | Clave para el nombre mostrado del derecho en la interfaz de usuario; resuelta mediante IHKI18nResources.properties |
Las anotaciones @Indexed y @TypeBinding vinculan este enum a HibernateSearchUserRightIdTypeBinder, permitiendo la búsqueda de texto completo en las asignaciones de derechos de usuario. Cuando una consulta de Hibernate Search escanea entidades PFUserDO en busca de derechos, este enlazador de tipos sabe cómo indexar IDs de derechos basados en enum.
La clase interna ProviderService implementa RightRightIdProviderService, una interfaz SPI de Java. Su método getUserRightIds() devuelve las entradas del enum mediante Arrays.asList(*entries.toTypedArray()). Esto es cargado por el ServiceLoader y contribuye con el derecho IHK al registro global de todos los derechos de usuario conocidos en el sistema.
class ProviderService : RightRightIdProviderService {
override fun getUserRightIds(): Collection<IUserRightId> {
return Arrays.asList<IUserRightId>(*entries.toTypedArray())
}
}
override val.ProviderService se registra en META-INF/services/org.projectforge.framework.persistence.api.RightRightIdProviderService (no se muestra pero se deduce del patrón), haciendo que los derechos del plugin sean automáticamente detectables sin código de registro explícito.PLUGIN_IHK), a diferencia de ToDo que tiene PLUGIN_TODO. El patrón enum escala limpiamente si se necesitan sub-derechos futuros (por ejemplo, PLUGIN_IHK_ADMIN).pluginNN (donde NN es un número incremental) asegura un orden determinista en la tabla de administración de derechos. IHK usa 70, colocándolo después de plugins anteriores como ToDo (plugin10).868d6abb7 2025 -> 2026 63081666f Encabezados de archivos fuente: 2024-> 2025. 067a4cbb1 Migración en progreso... b1560ca43 Migración en progreso...