IHKPluginUserRightId.ktIUserRightId 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.@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");
}
| Parameter | Wert | Bedeutung |
|---|---|---|
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 |
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.
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())
}
}
override val-Konstruktoreigenschaften zu erhalten.ProviderService wird in META-INF/services/org.projectforge.framework.persistence.api.RightRightIdProviderService registriert (nicht gezeigt, aber durch das Muster impliziert), wodurch Plugin-Rechte automatisch auffindbar sind, ohne expliziten Registrierungscode.PLUGIN_IHK), im Gegensatz zu ToDo mit PLUGIN_TODO. Das Enum-Muster skaliert sauber, falls zukünftig Unterrechte benötigt werden (z. B. PLUGIN_IHK_ADMIN).pluginNN (wobei NN eine aufsteigende Nummer ist) gewährleistet eine deterministische Sortierung in der Rechteverwaltungstabelle. IHK verwendet 70 und platziert sich damit nach früheren Plugins wie ToDo (plugin10).868d6abb7 2025 -> 2026 63081666f Quelltext-Header: 2024 -> 2025. 067a4cbb1 Migration in Arbeit... b1560ca43 Migration in Arbeit...