diff --git a/src/main/java/org/jlab/jam/business/session/AuthorizerFacade.java b/src/main/java/org/jlab/jam/business/session/AuthorizerFacade.java index eee281f..904c495 100644 --- a/src/main/java/org/jlab/jam/business/session/AuthorizerFacade.java +++ b/src/main/java/org/jlab/jam/business/session/AuthorizerFacade.java @@ -148,10 +148,23 @@ public void removeAuthorizer(BigInteger facilityId, OperationsType type, String @PermitAll public void isAuthorizer(Facility facility, OperationsType type, String username) throws UserFriendlyException { + boolean authorizer = isAuthorizerBool(facility, type, username); + + if (!authorizer) { + throw new UserFriendlyException("Not Authorized to Authorize!"); + } + } + + @PermitAll + public boolean isAuthorizerBool(Facility facility, OperationsType type, String username) { List authorizerList = filterList(facility, type, username); + boolean authorizer = true; + if (authorizerList == null || authorizerList.isEmpty()) { - throw new UserFriendlyException("Not Authorized to Authorize!"); + authorizer = false; } + + return authorizer; } } diff --git a/src/main/java/org/jlab/jam/presentation/controller/FacilityAuthorization.java b/src/main/java/org/jlab/jam/presentation/controller/FacilityAuthorization.java index 5b16a04..4872975 100644 --- a/src/main/java/org/jlab/jam/presentation/controller/FacilityAuthorization.java +++ b/src/main/java/org/jlab/jam/presentation/controller/FacilityAuthorization.java @@ -15,6 +15,7 @@ import javax.servlet.http.HttpServletResponse; import org.jlab.jam.business.session.*; import org.jlab.jam.persistence.entity.*; +import org.jlab.jam.persistence.enumeration.OperationsType; import org.jlab.jam.persistence.view.FacilityExpirationEvent; /** @@ -33,6 +34,7 @@ public class FacilityAuthorization extends HttpServlet { @EJB RFSegmentFacade rfSegmentFacade; @EJB ExpirationManager expirationManager; @EJB NotificationManager notificationManager; + @EJB AuthorizerFacade authorizerFacade; /** * Handles the HTTP GET method. @@ -143,7 +145,24 @@ private void handleFacility( Map segmentAuthorizationMap = rfAuthorizationFacade.createSegmentAuthorizationMap(rfAuthorization); + String username = request.getRemoteUser(); + + boolean isRfEditable = false; + boolean isBeamEditable = false; + + if (username != null) { + if (request.isUserInRole("jam-admin")) { + isRfEditable = true; + isBeamEditable = true; + } else { + isRfEditable = authorizerFacade.isAuthorizerBool(facility, OperationsType.RF, username); + isBeamEditable = authorizerFacade.isAuthorizerBool(facility, OperationsType.BEAM, username); + } + } + request.setAttribute("unitsMap", beamAuthorizationFacade.getUnitsMap()); + request.setAttribute("isRfEditable", isRfEditable); + request.setAttribute("isBeamEditable", isBeamEditable); request.setAttribute("rfAuthorization", rfAuthorization); request.setAttribute("beamAuthorization", beamAuthorization); request.setAttribute("rfList", rfList); diff --git a/src/main/webapp/WEB-INF/tags/authorizations-panel.tag b/src/main/webapp/WEB-INF/tags/authorizations-panel.tag index e2ed083..4bdf3ba 100644 --- a/src/main/webapp/WEB-INF/tags/authorizations-panel.tag +++ b/src/main/webapp/WEB-INF/tags/authorizations-panel.tag @@ -7,7 +7,8 @@ <%@taglib prefix="t" tagdir="/WEB-INF/tags"%> <%@attribute name="rfList" required="true" type="java.util.List"%> <%@attribute name="beamList" required="true" type="java.util.List"%> -<%@attribute name="isEditable" required="true" type="java.lang.Boolean"%> +<%@attribute name="isRfEditable" required="true" type="java.lang.Boolean"%> +<%@attribute name="isBeamEditable" required="true" type="java.lang.Boolean"%> <%@attribute name="isHistory" required="true" type="java.lang.Boolean"%>
@@ -19,7 +20,7 @@
- +
@@ -48,7 +49,7 @@
- +
diff --git a/src/main/webapp/WEB-INF/views/facility-authorization.jsp b/src/main/webapp/WEB-INF/views/facility-authorization.jsp index b4e1c21..bbdab85 100644 --- a/src/main/webapp/WEB-INF/views/facility-authorization.jsp +++ b/src/main/webapp/WEB-INF/views/facility-authorization.jsp @@ -14,7 +14,7 @@

- +
A new log entry was created: diff --git a/src/main/webapp/WEB-INF/views/inventory/authorizers.jsp b/src/main/webapp/WEB-INF/views/inventory/authorizers.jsp index 4f90950..bd8cdbd 100644 --- a/src/main/webapp/WEB-INF/views/inventory/authorizers.jsp +++ b/src/main/webapp/WEB-INF/views/inventory/authorizers.jsp @@ -82,7 +82,7 @@ - +