comparison 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
comparison
equal deleted inserted replaced
1331:03faaba3c2a3 1332:65ed13ff9945
5 * and comes with ABSOLUTELY NO WARRANTY! Check out 5 * and comes with ABSOLUTELY NO WARRANTY! Check out
6 * the documentation coming with IMIS-Labordaten-Application for details. 6 * the documentation coming with IMIS-Labordaten-Application for details.
7 */ 7 */
8 package de.intevation.lada.util.auth; 8 package de.intevation.lada.util.auth;
9 9
10 import java.util.ArrayList;
11 import java.util.List;
12
10 import javax.inject.Inject; 13 import javax.inject.Inject;
11 14
12 import de.intevation.lada.model.land.Messprogramm; 15 import de.intevation.lada.model.land.Messprogramm;
13 import de.intevation.lada.model.land.MessprogrammMmt; 16 import de.intevation.lada.model.land.MessprogrammMmt;
17 import de.intevation.lada.model.stammdaten.MessStelle;
14 import de.intevation.lada.util.annotation.RepositoryConfig; 18 import de.intevation.lada.util.annotation.RepositoryConfig;
15 import de.intevation.lada.util.data.Repository; 19 import de.intevation.lada.util.data.Repository;
16 import de.intevation.lada.util.data.RepositoryType; 20 import de.intevation.lada.util.data.RepositoryType;
17 import de.intevation.lada.util.rest.RequestMethod; 21 import de.intevation.lada.util.rest.RequestMethod;
18 import de.intevation.lada.util.rest.Response; 22 import de.intevation.lada.util.rest.Response;
42 messprogramm = repository.getByIdPlain( 46 messprogramm = repository.getByIdPlain(
43 Messprogramm.class, 47 Messprogramm.class,
44 ((MessprogrammMmt)data).getMessprogrammId(), 48 ((MessprogrammMmt)data).getMessprogrammId(),
45 "land"); 49 "land");
46 } 50 }
47 if (userInfo.getMessstellen().contains(messprogramm.getMstId())) { 51 MessStelle mst = repository.getByIdPlain(
52 MessStelle.class, messprogramm.getMstId(), "stamm");
53 if (userInfo.getFunktionenForNetzbetreiber(
54 mst.getNetzbetreiberId()).contains(4)) {
48 return true; 55 return true;
49 } 56 }
50 return false; 57 return false;
51 } 58 }
52 59
54 public <T> Response filter( 61 public <T> Response filter(
55 Response data, 62 Response data,
56 UserInfo userInfo, 63 UserInfo userInfo,
57 Class<T> clazz 64 Class<T> clazz
58 ) { 65 ) {
59 // Allow read access to everybody 66 if (data.getData() instanceof List<?> &&
67 !clazz.getSimpleName().equals("MessprogrammMmt")) {
68 List<Messprogramm> messprogramme = new ArrayList<Messprogramm>();
69 for (Messprogramm messprogramm :(List<Messprogramm>)data.getData()) {
70 messprogramme.add(setAuthData(userInfo, messprogramm));
71 }
72 data.setData(messprogramme);
73 }
74 else if (data.getData() instanceof Messprogramm) {
75 Messprogramm messprogramm = (Messprogramm)data.getData();
76 data.setData(setAuthData(userInfo, messprogramm));
77 }
60 return data; 78 return data;
61 } 79 }
80
81 /**
82 * Set authorization data for the current probe object.
83 *
84 * @param userInfo The user information.
85 * @param probe The probe object.
86 * @return The probe.
87 */
88 private Messprogramm setAuthData(UserInfo userInfo, Messprogramm messprogramm) {
89 MessStelle mst = repository.getByIdPlain(MessStelle.class, messprogramm.getMstId(), "stamm");
90 if (userInfo.getFunktionenForNetzbetreiber(
91 mst.getNetzbetreiberId()).contains(4)) {
92 messprogramm.setReadonly(false);
93 return messprogramm;
94 }
95 else {
96 messprogramm.setReadonly(true);
97 }
98 return messprogramm;
99 }
62 } 100 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)