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 eine größere Anwendung sehr viele verschiedene Rechte ergeben.
AuthorizationResources - Im Projekt Management > main-java wird diese Klasse angelegt, um die Rechte global zu verwalten.
package com.company.demoproject; import java.util.MissingResourceException; import com.rapidclipse.framework.security.authorization.Resource; import com.rapidclipse.framework.security.authorization.ResourceEnum; import com.rapidclipse.framework.server.resources.Caption; import com.rapidclipse.framework.server.resources.StringResourceUtils; import com.rapidclipse.framework.server.security.authorization.Authorization; /** * Central collection of all authorization resources used in the project. */ @Caption("{%description}") public enum AuthorizationResources implements ResourceEnum<AuthorizationResources> { CREATE("create"), READ("read") ; /** * 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 String description; 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; } public String getDescription() { if(this.description == null) { try { this.description = StringResourceUtils.getResourceString(name(), this); } catch(final MissingResourceException e) { this.description = this.name; } } return this.description; } } } |
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 Button(); this.button.setText("Save"); Authorization.setSubjectEvaluatingComponentExtension(this.button, SubjectEvaluatingComponentExtension.Builder.New() .add(AuthorizationResources.CREATE.resource(), SubjectEvaluationStrategy.ENABLED).build()); Authorization.evaluateComponents(this); |
Benutzerrechte global verwalten