diff src/main/java/de/intevation/lada/util/auth/MessprogrammAuthorizer.java @ 1332:65ed13ff9945 2.6.1

Changed authorization for Messprogramm. * Added 'readonly' flag * Only user with function '4' and the corresponding 'netzbetreiber' are allowed to edit. * User authorized to create a 'probe' are allowed to generate proben.
author Raimund Renkert <raimund.renkert@intevation.de>
date Wed, 29 Mar 2017 14:25:56 +0200
parents cf1eb19f896b
children
line wrap: on
line diff
--- a/src/main/java/de/intevation/lada/util/auth/MessprogrammAuthorizer.java	Mon Mar 27 17:04:32 2017 +0200
+++ b/src/main/java/de/intevation/lada/util/auth/MessprogrammAuthorizer.java	Wed Mar 29 14:25:56 2017 +0200
@@ -7,10 +7,14 @@
  */
 package de.intevation.lada.util.auth;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import javax.inject.Inject;
 
 import de.intevation.lada.model.land.Messprogramm;
 import de.intevation.lada.model.land.MessprogrammMmt;
+import de.intevation.lada.model.stammdaten.MessStelle;
 import de.intevation.lada.util.annotation.RepositoryConfig;
 import de.intevation.lada.util.data.Repository;
 import de.intevation.lada.util.data.RepositoryType;
@@ -44,7 +48,10 @@
                 ((MessprogrammMmt)data).getMessprogrammId(),
                 "land");
         }
-        if (userInfo.getMessstellen().contains(messprogramm.getMstId())) {
+        MessStelle mst = repository.getByIdPlain(
+            MessStelle.class, messprogramm.getMstId(), "stamm");
+        if (userInfo.getFunktionenForNetzbetreiber(
+                mst.getNetzbetreiberId()).contains(4)) {
             return true;
         }
         return false;
@@ -56,7 +63,38 @@
         UserInfo userInfo,
         Class<T> clazz
     ) {
-        // Allow read access to everybody
+        if (data.getData() instanceof List<?> &&
+            !clazz.getSimpleName().equals("MessprogrammMmt")) {
+            List<Messprogramm> messprogramme = new ArrayList<Messprogramm>();
+            for (Messprogramm messprogramm :(List<Messprogramm>)data.getData()) {
+                messprogramme.add(setAuthData(userInfo, messprogramm));
+            }
+            data.setData(messprogramme);
+        }
+        else if (data.getData() instanceof Messprogramm) {
+            Messprogramm messprogramm = (Messprogramm)data.getData();
+            data.setData(setAuthData(userInfo, messprogramm));
+        }
         return data;
     }
+
+    /**
+     * Set authorization data for the current probe object.
+     *
+     * @param userInfo  The user information.
+     * @param probe     The probe object.
+     * @return The probe.
+     */
+    private Messprogramm setAuthData(UserInfo userInfo, Messprogramm messprogramm) {
+        MessStelle mst = repository.getByIdPlain(MessStelle.class, messprogramm.getMstId(), "stamm");
+        if (userInfo.getFunktionenForNetzbetreiber(
+                mst.getNetzbetreiberId()).contains(4)) {
+            messprogramm.setReadonly(false);
+            return messprogramm;
+        }
+        else {
+            messprogramm.setReadonly(true);
+        }
+        return messprogramm;
+    }
 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)