# HG changeset patch # User Raimund Renkert # Date 1452763279 -3600 # Node ID 1ed347eb856bbda938cd551e9769290f5542f1d3 # Parent de3a26d3f66319f4b178ff7e9c2548906910dcce Use auth objects in user info to keep mst <-> function association. diff -r de3a26d3f663 -r 1ed347eb856b src/main/java/de/intevation/lada/util/auth/HeaderAuthorization.java --- a/src/main/java/de/intevation/lada/util/auth/HeaderAuthorization.java Mon Dec 14 15:47:10 2015 +0100 +++ b/src/main/java/de/intevation/lada/util/auth/HeaderAuthorization.java Thu Jan 14 10:21:19 2016 +0100 @@ -65,9 +65,7 @@ HttpServletRequest request = (HttpServletRequest)source; String roleString = request.getAttribute("lada.user.roles").toString(); - String[] roles = roleString.split(","); UserInfo info = getGroupsFromDB(roleString); - info.setRoles(new ArrayList(Arrays.asList(roles))); info.setName(request.getAttribute("lada.user.name").toString()); return info; } @@ -260,27 +258,8 @@ Response response = repository.filter(builder.getQuery(), "stamm"); @SuppressWarnings("unchecked") List auth = (List)response.getData(); - List netzbetreiber = new ArrayList(); - List messstellen = new ArrayList(); - List funktionen = new ArrayList(); - for (Auth a : auth) { - if (a.getNetzbetreiberId() != null) { - netzbetreiber.add(a.getNetzbetreiberId()); - } - if (a.getMstId() != null) { - messstellen.add(a.getMstId()); - } - if (a.getLaborMstId() != null) { - messstellen.add(a.getLaborMstId()); - } - if (a.getFunktionId() != null) { - funktionen.add(a.getFunktionId()); - } - } UserInfo userInfo = new UserInfo(); - userInfo.setNetzbetreiber(netzbetreiber); - userInfo.setMessstellen(messstellen); - userInfo.setFunktionen(funktionen); + userInfo.setAuth(auth); return userInfo; } diff -r de3a26d3f663 -r 1ed347eb856b src/main/java/de/intevation/lada/util/auth/TestAuthorization.java --- a/src/main/java/de/intevation/lada/util/auth/TestAuthorization.java Mon Dec 14 15:47:10 2015 +0100 +++ b/src/main/java/de/intevation/lada/util/auth/TestAuthorization.java Thu Jan 14 10:21:19 2016 +0100 @@ -10,6 +10,7 @@ import java.util.ArrayList; import java.util.List; +import de.intevation.lada.model.stamm.Auth; import de.intevation.lada.util.annotation.AuthorizationConfig; import de.intevation.lada.util.rest.RequestMethod; import de.intevation.lada.util.rest.Response; @@ -21,19 +22,28 @@ public UserInfo getInfo(Object source) { UserInfo info = new UserInfo(); info.setName("testeins"); + List auth = new ArrayList(); + Auth a1 = new Auth(); + a1.setFunktionId(0); + a1.setLdapGroup("mst_06010"); + a1.setMstId("06010"); + a1.setNetzbetreiberId("06"); + auth.add(a1); + Auth a2 = new Auth(); + a2.setFunktionId(0); + a2.setLdapGroup("mst_11010"); + a2.setNetzbetreiberId("11"); + a2.setMstId("11010"); + auth.add(a2); + Auth a3 = new Auth(); + a3.setLdapGroup("Imis_world"); + a3.setFunktionId(0); + auth.add(a3); List roles = new ArrayList(); roles.add("mst_06010"); roles.add("mst_11010"); roles.add("ImisWorld"); - info.setRoles(roles); - List netz = new ArrayList(); - netz.add("06"); - netz.add("11"); - info.setNetzbetreiber(netz); - List mess = new ArrayList(); - mess.add("06010"); - mess.add("11010"); - info.setMessstellen(mess); + info.setAuth(auth); return info; } diff -r de3a26d3f663 -r 1ed347eb856b src/main/java/de/intevation/lada/util/auth/UserInfo.java --- a/src/main/java/de/intevation/lada/util/auth/UserInfo.java Mon Dec 14 15:47:10 2015 +0100 +++ b/src/main/java/de/intevation/lada/util/auth/UserInfo.java Thu Jan 14 10:21:19 2016 +0100 @@ -10,6 +10,8 @@ import java.util.ArrayList; import java.util.List; +import de.intevation.lada.model.stamm.Auth; + /** * Container for user specific information. * @@ -21,6 +23,7 @@ private List netzbetreiber; private List roles; private List funktionen; + private List auth; private Integer statusRole; public UserInfo() { @@ -46,49 +49,63 @@ * @return the messstellen */ public List getMessstellen() { - return messstellen; - } - - /** - * @param messstellen the messstellen to set - */ - public void setMessstellen(List messstellen) { - this.messstellen = messstellen; + List ret = new ArrayList(); + for (Auth a : auth) { + if (a.getMstId() != null) { + ret.add(a.getMstId()); + } + } + return ret; } /** * @return the netzbetreiber */ public List getNetzbetreiber() { - return netzbetreiber; - } - - /** - * @param netzbetreiber the netzbetreiber to set - */ - public void setNetzbetreiber(List netzbetreiber) { - this.netzbetreiber = netzbetreiber; + List ret = new ArrayList(); + for (Auth a : auth) { + if (a.getNetzbetreiberId() != null) { + ret.add(a.getNetzbetreiberId()); + } + } + return ret; } - /** - * @return the roles - */ - public List getRoles() { - return roles; - } - - /** - * @param roles the roles to set - */ - public void setRoles(List roles) { - this.roles = roles; + public List getFunktionen() { + List ret = new ArrayList(); + for (Auth a : auth) { + if (a.getFunktionId() != null) { + ret.add(a.getFunktionId()); + } + } + return ret; } /** * @return the funktionen */ - public List getFunktionen() { - return this.funktionen; + public List getFunktionenForMst(String mstId) { + List ret = new ArrayList(); + for (Auth a : auth) { + if (a.getMstId() != null && a.getMstId().equals(mstId)) { + ret.add(a.getFunktionId()); + } + } + return ret; + } + + /** + * @return the funktionen + */ + public List getFunktionenForNetzbetreiber(String nId) { + List ret = new ArrayList(); + for (Auth a : auth) { + if (a.getNetzbetreiberId() != null && + a.getNetzbetreiberId().equals(nId)) { + ret.add(a.getFunktionId()); + } + } + return ret; } /** @@ -102,11 +119,14 @@ return retVal; } - /** - * @param funktionen the funktionen to set - */ - public void setFunktionen(List funktionen) { - this.funktionen = funktionen; + public List getRoles() { + List ret = new ArrayList(); + for (Auth a : auth) { + if (a.getLdapGroup() != null) { + ret.add(a.getLdapGroup()); + } + } + return ret; } /** @@ -122,4 +142,8 @@ public void setStatusRole(Integer statusRole) { this.statusRole = statusRole; } + + public void setAuth(List auth) { + this.auth = auth; + } }