# HG changeset patch # User Raimund Renkert # Date 1447418496 -3600 # Node ID 64adf06df02f21592c4ceaf6165c379374375c21 # Parent 574391f1d88f355d9b32a4509263222f9856cfba Use status to get readonly flag for messungen. diff -r 574391f1d88f -r 64adf06df02f src/main/java/de/intevation/lada/util/auth/HeaderAuthorization.java --- a/src/main/java/de/intevation/lada/util/auth/HeaderAuthorization.java Fri Nov 13 13:40:25 2015 +0100 +++ b/src/main/java/de/intevation/lada/util/auth/HeaderAuthorization.java Fri Nov 13 13:41:36 2015 +0100 @@ -150,12 +150,7 @@ } else if (method == RequestMethod.PUT || method == RequestMethod.DELETE) { - Response messResponse = - repository.getById(LMessung.class, messung.getId(), "land"); - LMessung messungDb = (LMessung)messResponse.getData(); - boolean fertigChanged = - !messung.getFertig().equals(messungDb.getFertig()); - return (!messung.getFertig() || fertigChanged) && + return !this.isMessungReadOnly(messung) && getAuthorization(userInfo, probe); } } @@ -195,7 +190,7 @@ messung.getProbeId(), "land"); LProbe probe = (LProbe)pResponse.getData(); - return !messung.getFertig() && + return !this.isMessungReadOnly(messung) && getAuthorization(userInfo, probe); } } @@ -356,7 +351,7 @@ else { owner = false; } - readOnly = messung.getFertig(); + readOnly = this.isMessungReadOnly(messung); } Method setOwner = clazz.getMethod("setOwner", boolean.class); @@ -602,4 +597,15 @@ } return false; } + + private boolean isMessungReadOnly(LMessung messung) { + if (messung.getStatus() == null) { + return false; + } + LStatusProtokoll status = repository.getByIdPlain( + LStatusProtokoll.class, + messung.getStatus(), + "land"); + return (status.getStatusWert() != 0 && status.getStatusWert() != 4); + } }