Mercurial > lada > lada-server
annotate 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 |
rev | line source |
---|---|
1070
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
1 /* Copyright (C) 2013 by Bundesamt fuer Strahlenschutz |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
2 * Software engineering by Intevation GmbH |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
3 * |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
4 * This file is Free Software under the GNU GPL (v>=3) |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
5 * and comes with ABSOLUTELY NO WARRANTY! Check out |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
6 * the documentation coming with IMIS-Labordaten-Application for details. |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
7 */ |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
8 package de.intevation.lada.util.auth; |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
9 |
1332
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
10 import java.util.ArrayList; |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
11 import java.util.List; |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
12 |
1150
cf1eb19f896b
Authorize messprogramm - messmethode.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1070
diff
changeset
|
13 import javax.inject.Inject; |
1070
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
14 |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
15 import de.intevation.lada.model.land.Messprogramm; |
1150
cf1eb19f896b
Authorize messprogramm - messmethode.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1070
diff
changeset
|
16 import de.intevation.lada.model.land.MessprogrammMmt; |
1332
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
17 import de.intevation.lada.model.stammdaten.MessStelle; |
1150
cf1eb19f896b
Authorize messprogramm - messmethode.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1070
diff
changeset
|
18 import de.intevation.lada.util.annotation.RepositoryConfig; |
cf1eb19f896b
Authorize messprogramm - messmethode.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1070
diff
changeset
|
19 import de.intevation.lada.util.data.Repository; |
cf1eb19f896b
Authorize messprogramm - messmethode.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1070
diff
changeset
|
20 import de.intevation.lada.util.data.RepositoryType; |
1070
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
21 import de.intevation.lada.util.rest.RequestMethod; |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
22 import de.intevation.lada.util.rest.Response; |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
23 |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
24 public class MessprogrammAuthorizer implements Authorizer { |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
25 |
1150
cf1eb19f896b
Authorize messprogramm - messmethode.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1070
diff
changeset
|
26 @Inject |
cf1eb19f896b
Authorize messprogramm - messmethode.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1070
diff
changeset
|
27 @RepositoryConfig(type=RepositoryType.RO) |
cf1eb19f896b
Authorize messprogramm - messmethode.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1070
diff
changeset
|
28 private Repository repository; |
cf1eb19f896b
Authorize messprogramm - messmethode.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1070
diff
changeset
|
29 |
1070
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
30 @Override |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
31 public <T> boolean isAuthorized( |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
32 Object data, |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
33 RequestMethod method, |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
34 UserInfo userInfo, |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
35 Class<T> clazz |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
36 ) { |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
37 if (method == RequestMethod.GET) { |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
38 // Allow read access to everybody |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
39 return true; |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
40 } |
1150
cf1eb19f896b
Authorize messprogramm - messmethode.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1070
diff
changeset
|
41 Messprogramm messprogramm = null; |
cf1eb19f896b
Authorize messprogramm - messmethode.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1070
diff
changeset
|
42 if (data instanceof Messprogramm) { |
cf1eb19f896b
Authorize messprogramm - messmethode.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1070
diff
changeset
|
43 messprogramm = (Messprogramm)data; |
cf1eb19f896b
Authorize messprogramm - messmethode.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1070
diff
changeset
|
44 } |
cf1eb19f896b
Authorize messprogramm - messmethode.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1070
diff
changeset
|
45 else if (data instanceof MessprogrammMmt) { |
cf1eb19f896b
Authorize messprogramm - messmethode.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1070
diff
changeset
|
46 messprogramm = repository.getByIdPlain( |
cf1eb19f896b
Authorize messprogramm - messmethode.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1070
diff
changeset
|
47 Messprogramm.class, |
cf1eb19f896b
Authorize messprogramm - messmethode.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1070
diff
changeset
|
48 ((MessprogrammMmt)data).getMessprogrammId(), |
cf1eb19f896b
Authorize messprogramm - messmethode.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1070
diff
changeset
|
49 "land"); |
cf1eb19f896b
Authorize messprogramm - messmethode.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1070
diff
changeset
|
50 } |
1332
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
51 MessStelle mst = repository.getByIdPlain( |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
52 MessStelle.class, messprogramm.getMstId(), "stamm"); |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
53 if (userInfo.getFunktionenForNetzbetreiber( |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
54 mst.getNetzbetreiberId()).contains(4)) { |
1070
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
55 return true; |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
56 } |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
57 return false; |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
58 } |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
59 |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
60 @Override |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
61 public <T> Response filter( |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
62 Response data, |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
63 UserInfo userInfo, |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
64 Class<T> clazz |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
65 ) { |
1332
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
66 if (data.getData() instanceof List<?> && |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
67 !clazz.getSimpleName().equals("MessprogrammMmt")) { |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
68 List<Messprogramm> messprogramme = new ArrayList<Messprogramm>(); |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
69 for (Messprogramm messprogramm :(List<Messprogramm>)data.getData()) { |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
70 messprogramme.add(setAuthData(userInfo, messprogramm)); |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
71 } |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
72 data.setData(messprogramme); |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
73 } |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
74 else if (data.getData() instanceof Messprogramm) { |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
75 Messprogramm messprogramm = (Messprogramm)data.getData(); |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
76 data.setData(setAuthData(userInfo, messprogramm)); |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
77 } |
1070
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
78 return data; |
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
79 } |
1332
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
80 |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
81 /** |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
82 * Set authorization data for the current probe object. |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
83 * |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
84 * @param userInfo The user information. |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
85 * @param probe The probe object. |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
86 * @return The probe. |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
87 */ |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
88 private Messprogramm setAuthData(UserInfo userInfo, Messprogramm messprogramm) { |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
89 MessStelle mst = repository.getByIdPlain(MessStelle.class, messprogramm.getMstId(), "stamm"); |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
90 if (userInfo.getFunktionenForNetzbetreiber( |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
91 mst.getNetzbetreiberId()).contains(4)) { |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
92 messprogramm.setReadonly(false); |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
93 return messprogramm; |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
94 } |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
95 else { |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
96 messprogramm.setReadonly(true); |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
97 } |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
98 return messprogramm; |
65ed13ff9945
Changed authorization for Messprogramm.
Raimund Renkert <raimund.renkert@intevation.de>
parents:
1150
diff
changeset
|
99 } |
1070
f78f90446084
Add minimalistic authorization for Messprogramm.
Tom Gottfried <tom@intevation.de>
parents:
diff
changeset
|
100 } |