Mercurial > lada > lada-server
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 } |