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 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)