EN · DE · RU · FR · ES

#131: IHKPluginUserRightId.kt

plugins/org.projectforge.plugins.ihk/src/main/kotlin/org/projectforge/plugins/ihk/IHKPluginUserRightId.kt Kotlin-Enum / Benutzerrechtskennung, plugins/org.projectforge.plugins.ihk/src/main/kotlin/org/projectforge/plugins/ihk/IHKPluginUserRightId.kt 60 Zeilen · 24 Code · 30 Kommentare · 6 leer
Kotlin-Enum, das IUserRightId implementiert, um das einzelne Zugriffsrecht des IHK-Plugins zu definieren. Stellt eine innere Klasse ProviderService für die Hibernate-Search-Indizierung und den Right-Right-Provider-SPI bereit.

Architektur

Enum-Definition

@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");
}
ParameterWertBedeutung
id"PLUGIN_IHK"Eindeutige Kennung über alle Plugins hinweg; wird in der Datenbank für Benutzerrechtszuweisungen gespeichert
orderString"plugin70"Sortierschlüssel für die Rechte-Tabelle der UserEditPage; das Muster pluginnn stellt sicher, dass Plugins nach den integrierten Rechten sortiert werden
i18nKey"plugins.ihk"Schlüssel für den Anzeigenamen des Rechts in der Benutzeroberfläche; wird über IHKI18nResources.properties aufgelöst

Hibernate-Search-Integration

Die Annotationen @Indexed und @TypeBinding binden dieses Enum an HibernateSearchUserRightIdTypeBinder und ermöglichen so die Volltextsuche über Benutzerrechtszuweisungen. Wenn eine Hibernate-Search-Abfrage PFUserDO-Entitäten nach Rechten durchsucht, weiß dieser Typ-Binder, wie enum-basierte Rechte-IDs indiziert werden.

ProviderService (SPI)

Die innere Klasse ProviderService implementiert RightRightIdProviderService, ein Java-SPI-Interface. Ihre Methode getUserRightIds() gibt die Enum-Einträge über Arrays.asList(*entries.toTypedArray()) zurück. Dies wird vom ServiceLoader geladen und trägt das IHK-Recht zum globalen Register aller bekannten Benutzerrechte im System bei.

class ProviderService : RightRightIdProviderService {
    override fun getUserRightIds(): Collection<IUserRightId> {
        return Arrays.asList<IUserRightId>(*entries.toTypedArray())
    }
}

Entwurfsentscheidungen

Git-Verlauf

868d6abb7 2025 -> 2026
63081666f Quelltext-Header: 2024 -> 2025.
067a4cbb1 Migration in Arbeit...
b1560ca43 Migration in Arbeit...