EN · DE · RU · FR · ES

#610: UserRight.java

projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java Java-Klasse, projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java 219 Zeilen · 122 Code · 71 Kommentare · 26 leer
Zweck: Quelldatei: projectforge/business/user/UserRight.java. UserRight.java ist Teil der Open-Source-Projektmanagement-Anwendung ProjectForge.

Quelltext (erste 100 Zeilen)

/////////////////////////////////////////////////////////////////////////////
//
// Project ProjectForge Community Edition
//         www.projectforge.org
//
// Copyright (C) 2001-2026 Micromata GmbH, Deutschland (www.micromata.com)
//
// ProjectForge ist dual-lizenziert.
//
// Diese Community-Edition ist freie Software; Sie können es weiterverteilen und/oder
// modifizieren unter den Bedingungen der GNU General Public License, wie veröffentlicht
// von der Free Software Foundation; Version 3 der Lizenz.
//
// Diese Community-Edition wird in der Hoffnung verteilt, dass sie nützlich sein wird,
// aber OHNE JEGLICHE GEWÄHRLEISTUNG; ohne sogar die stillschweigende Garantie der
// MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Siehe die GNU General
// Public License für weitere Details.
//
// Sie sollten eine Kopie der GNU General Public License zusammen mit
// diesem Programm erhalten haben; falls nicht, siehe http://www.gnu.org/licenses/.
//
/////////////////////////////////////////////////////////////////////////////

package org.projectforge.business.user;

import org.projectforge.framework.DisplayNameCapable;
import org.projectforge.framework.persistence.api.IUserRightId;
import org.projectforge.framework.persistence.user.entities.GroupDO;
import org.projectforge.framework.persistence.user.entities.PFUserDO;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

public abstract class UserRight implements Serializable, DisplayNameCapable {
  private static final long serialVersionUID = -4356329396089081134L;

  private final IUserRightId id;

  protected UserRightValue[] values;

  protected UserRightCategory category = UserRightCategory.MISC;

  protected UserRight dependsOn;

  public UserRight(final IUserRightId id, final UserRightCategory category) {
    this.id = id;
    this.category = category;
  }

  public UserRight(final IUserRightId id, final UserRightCategory category, final UserRightValue... values) {
    this(id, category);
    this.values = values;
  }

  public UserRight(final IUserRightId id, final UserRightCategory category, final UserRight dependsOn) {
    this(id, category, dependsOn, new UserRightValue[]{UserRightValue.FALSE, UserRightValue.TRUE});
  }

  /**
   * @param id
   * @param dependsOn
   * @param values    FALSE, TRUE standardmäßig.
   */
  public UserRight(final IUserRightId id, final UserRightCategory category, final UserRight dependsOn,
                   final UserRightValue... values) {
    this(id, category);
    this.dependsOn = dependsOn;
    this.values = values;
  }

  public IUserRightId getId() {
    return id;
  }

  /**
   * Verfügbare Werte {TRUE, FALSE} standardmäßig.
   *
   * @return
   */
  public UserRightValue[] getValues() {
    return values;
  }

  /**
   * Für manche Benutzer und Rechtekombinationen ist es möglich, dass der Benutzer standardmäßig einen Zugriffswert hat,
   * weil er Mitglied einer Gruppe mit einem einzelnen Recht ist. <br/>
   *
   * @param user
   * @return true, wenn alle verfügbaren Werte für den Benutzer automatisch zutreffen, andernfalls false (dieses Recht
   *         scheint für den angegebenen Benutzer im UserEditForm konfigurierbar zu sein).
   */
  public boolean isConfigurable(final PFUserDO user, final Collection<GroupDO> userGroups) {
    if (values == null) {
      return false;
    }
    final UserRightValue[] availableValues = getAvailableValues(user, userGroups);
    if (availableValues == null || availableValues.length <= 1) {
      return false;

Git-Verlauf

868d6abb7 2025 -> 2026
63081666f Quelltextdatei-Header: 2024-> 2025.
b6092df09 Copyright 2023 -> 2024
ab45d51fa Copyright 2001-2022 -> 2001-2023.
5f9658941 UserRight.isConfigurable/getAvailableValues/matches(UserGroupCache, ...) -> isConfigurable/...(..., Collection...) UserGroovyRight entfernt.

868d6abb7

2025 -> 2026
868d6abb75cd191a892911ac8e45058932cf9074
diff --git a/projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java b/projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java
index 8f44a66bc..c2192b929 100644
--- a/projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java
+++ b/projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java
@@ -3,7 +3,7 @@
 // Project ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2025 Micromata GmbH, Deutschland (www.micromata.com)
+// Copyright (C) 2001-2026 Micromata GmbH, Deutschland (www.micromata.com)
 //
 // ProjectForge ist dual-lizenziert.
 //

63081666f

Quelltextdatei-Header: 2024-> 2025.
63081666f620fb87315f01b817e560e0b2f6a33a
diff --git a/projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java b/projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java
index 4ca0656f0..8f44a66bc 100644
--- a/projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java
+++ b/projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java
@@ -3,7 +3,7 @@
 // Project ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2024 Micromata GmbH, Deutschland (www.micromata.com)
+// Copyright (C) 2001-2025 Micromata GmbH, Deutschland (www.micromata.com)
 //
 // ProjectForge ist dual-lizenziert.
 //

b6092df09

Copyright 2023 -> 2024
b6092df0927c4a3b161e888445f31dcab57493f2
diff --git a/projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java b/projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java
index c48cd83ef..4ca0656f0 100644
--- a/projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java
+++ b/projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java
@@ -3,7 +3,7 @@
 // Project ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2023 Micromata GmbH, Deutschland (www.micromata.com)
+// Copyright (C) 2001-2024 Micromata GmbH, Deutschland (www.micromata.com)
 //
 // ProjectForge ist dual-lizenziert.
 //

ab45d51fa

Copyright 2001-2022 -> 2001-2023.
ab45d51fa419ede6174b31d69987f96d4b841ff9
diff --git a/projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java b/projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java
index dd2b57847..c48cd83ef 100644
--- a/projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java
+++ b/projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java
@@ -3,7 +3,7 @@
 // Project ProjectForge Community Edition
 //         www.projectforge.org
 //
-// Copyright (C) 2001-2022 Micromata GmbH, Deutschland (www.micromata.com)
+// Copyright (C) 2001-2023 Micromata GmbH, Deutschland (www.micromata.com)
 //
 // ProjectForge ist dual-lizenziert.
 //

5f9658941

UserRight.isConfigurable/getAvailableValues/matches(UserGroupCache, ...) -> isConfigurable/...(..., Collection...) UserGroovyRight entfernt.
5f96589418cc9445e8a09ed5abd80ab9b184748e
diff --git a/projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java b/projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java
index 6c5644eb4..dd2b57847 100644
--- a/projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java
+++ b/projectforge-business/src/main/java/org/projectforge/business/user/UserRight.java
@@ -87,16 +87,15 @@ public abstract class UserRight implements Serializable, DisplayNameCapable {
    * Für manche Benutzer und Rechtekombinationen ist es möglich, dass der Benutzer standardmäßig einen Zugriffswert hat,
    * weil er Mitglied einer Gruppe mit einem einzelnen Recht ist. <br/>
    *
-   * @param userGroupCache
    * @param user
    * @return true, wenn alle verfügbaren Werte für den Benutzer automatisch zutreffen, andernfalls false (dieses Recht
    * scheint für den angegebenen Benutzer im UserEditForm konfigurierbar zu sein).
    */
-  public boolean isConfigurable(final UserGroupCache userGroupCache, final PFUserDO user) {
+  public boolean isConfigurable(final PFUserDO user, final Collection<GroupDO> userGroups) {
     if (values == null) {
       return false;
     }
-    final UserRightValue[] availableValues = getAvailableValues(userGroupCache, user);
+    final UserRightValue[] availableValues = getAvailableValues(user, userGroups);
     if (availableValues == null || availableValues.length <= 1) {
       return false;
     }
@@ -104,11 +103,11 @@ public abstract class UserRight implements Serializable, DisplayNameCapable {
       if (value == UserRightValue.FALSE) {
         continue; // Sollte nicht konfigurierbar sein.
       }
-      if (!matches(userGroupCache, user, value)) {
+      if (!matches(user, userGroups, value)) {
         final UserRightValue[] includedByValues = value.includedBy();
         if (includedByValues != null) {
           for (final UserRightValue includedByValue : includedByValues) {
-            if (matches(userGroupCache, user, includedByValue)) {
+            if (matches(user, userGroups, includedByValue)) {
               // Dieser verfügbare Wert wird automatisch für den Benutzer gesetzt, daher scheint das Recht nicht konfigurierbar zu sein:
               break;
             }
@@ -126,16 +125,14 @@ public abstract class UserRight implements Serializable, DisplayNameCapable {
    * Alle Rechtewerte abrufen, die potenziell für den Benutzer verfügbar sind. Wenn der in den Benutzerdaten gespeicherte
    * Benutzerwert nicht Teil der verfügbaren Werte ist, gibt der AccessChecker zurück, dass der Benutzer kein Recht hat.
    *
-   * @param userGroupCache
    * @param user
    * @return
    */
-  public UserRightValue[] getAvailableValues(final UserGroupCache userGroupCache, final PFUserDO user) {
+  public UserRightValue[] getAvailableValues(final PFUserDO user, final Collection<GroupDO> userGroups) {
     if (values == null) {
       return null;
     }
     final List<UserRightValue> list = new ArrayList<>();
-    final Collection<GroupDO> userGroups = userGroupCache.getUserGroupDOs(user);
     for (final UserRightValue value : values) {
       if (isAvailable(user, userGroups, value)) {
         list.add(value);
@@ -162,7 +159,7 @@ public abstract class UserRight implements Serializable, DisplayNameCapable {
 
   /**
    * @param assignedGroups