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