UI-Komponenten lassen sich über die Property Rights mit beliebig vielen Benutzerrechten verknüpfen. Dazu wird jeweils ein bestimmtes Recht, z.B. ProductEdit, mit einem von 3 möglichen Zuständen (Strategy) einer UI-Komponente verknüpft:
Dadurch werden insgesamt 6 verschiedene Zustände abgedeckt:
Recht | Erklärung | Fälle | Strategy | Status | Zustand |
---|---|---|---|---|---|
ProductEdit | Benutzer darf Kunden-Datensätze speichern. | Recht vorhanden. | ENABLED | TRUE | UI Komponente ist aktiviert |
VISIBLE | TRUE | UI Komponente ist sichtbar | |||
READ_ONLY | FALSE | UI Komponente zeigt Wert an. Werte eingeben oder editieren ist jedoch nicht möglich. | |||
Recht nicht vorhanden. | ENABLED | FALSE | UI Komponente ist deaktiviert. | ||
VISIBLE | FALSE | UI Komponente ist unsichtbar. | |||
READ_ONLY | TRUE | Werte eingeben oder editieren ist möglich. |
Da Benutzerrechte vom Anwendungsfall abhängig sind, müssen sämtliche Rechte selbst definiert werden. Gängige Rechte sind u.a.
die für nahezu jede Eingabemaske sowie für die Views selbst benötigt werden, z.B. für das Entity Product:
Dadurch können sich für ene größere Anwendung sehr viele verschiedene Rechte ergeben.
AuthorizationResources - Im Projekt Management > Business Objects wird diese Klasse angelegt, um die Rechte global zu verwalten.
package com.company.example.business; import com.xdev.security.authorization.Resource; import com.xdev.security.authorization.ResourceEnum; import com.xdev.security.authorization.ui.Authorization; /** * Central collection of all authorization resources used in the project. */ public enum AuthorizationResources implements ResourceEnum<AuthorizationResources> { CUSTOMERCREATE("CustomerCreate") ; /** * Helper method to export all resource names. * <p> * Right click and select 'Run As' - 'Java Application' * </p> */ public static void main(String[] args) { for (AuthorizationResources value : AuthorizationResources.values()) { System.out.println(value.name); } } ///////////////////////////// // implementation details // /////////////////////////// private final String name; private Resource resource; private AuthorizationResources(final String name) { this.name = name; } @Override public String resourceName() { return this.name; } @Override public Resource resource() { if (this.resource == null) { this.resource = Authorization.resource(this.name); } return this.resource; } } |
UI-Komponente - Die UI-Komponente wird mit dem Recht verknüpft.
/* * WARNING: Do NOT edit!<br>The content of this method is always regenerated * by the UI designer. */ // <generated-code name="initUI"> private void initUI() { this.button = new XdevButton(); this.button.setCaption("Save"); Authorization.setSubjectEvaluatingComponentExtension(this.button, SubjectEvaluatingComponentExtension.Builder .New().add(AuthorizationResources.CUSTOMERSAVE.resource(), SubjectEvaluationStrategy.ENABLED).build()); Authorization.evaluateComponents(this); |
Benutzerrechte global verwalten