Author: degenaro Date: Thu Mar 7 21:16:10 2013 New Revision: 1454104 URL: http://svn.apache.org/r1454104 Log: UIMA-2722 DUCC webserver (WS) should give hints for Login/Preferences - when hovering over greyed-out Terminate/Start/Stop buttons
Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerLegacy.java Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java?rev=1454104&r1=1454103&r2=1454104&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccAbstractHandler.java Thu Mar 7 21:16:10 2013 @@ -206,6 +206,80 @@ public abstract class DuccAbstractHandle return retVal; } + public enum AuthorizationStatus { LoggedInOwner, LoggedInAdministrator, LoggedInNotOwner, LoggedInNotAdministrator, NotLoggedIn }; + + public AuthorizationStatus getAuthorizationStatus(HttpServletRequest request, String resourceOwnerUserid) { + String methodName = "getAuthorizationStatus"; + duccLogger.trace(methodName, null, messages.fetch("enter")); + AuthorizationStatus retVal = AuthorizationStatus.NotLoggedIn; + try { + String text = ""; + boolean authenticated = duccWebSessionManager.isAuthentic(request); + String userId = duccWebSessionManager.getUserId(request); + if(authenticated) { + if(match(resourceOwnerUserid,userId)) { + text = "user "+userId+" is resource owner"; + retVal = AuthorizationStatus.LoggedInOwner; + } + else { + RequestRole requestRole = getRole(request); + switch(requestRole) { + case User: + text = "user "+userId+" is not resource owner "+resourceOwnerUserid; + retVal = AuthorizationStatus.LoggedInNotOwner; + break; + case Administrator: + if(duccWebAdministrators.isAdministrator(userId)) { + text = "user "+userId+" is administrator"; + retVal = AuthorizationStatus.LoggedInAdministrator; + } + else { + text = "user "+userId+" is not administrator "; + retVal = AuthorizationStatus.LoggedInNotAdministrator; + } + break; + } + } + } + else { + text = "user "+userId+" is not authenticated"; + retVal = AuthorizationStatus.NotLoggedIn; + } + duccLogger.debug(methodName, null, messages.fetch(text)); + } + catch(Exception e) { + duccLogger.error(methodName, null, e); + } + duccLogger.trace(methodName, null, messages.fetch("exit")); + return retVal; + } + + public boolean isUserAuthorized(HttpServletRequest request, String resourceOwnerUserid) { + String methodName = "isUserAuthorized"; + duccLogger.trace(methodName, null, messages.fetch("enter")); + boolean retVal = false; + try { + AuthorizationStatus authorizationStatus = getAuthorizationStatus(request, resourceOwnerUserid); + switch(authorizationStatus) { + case LoggedInOwner: + case LoggedInAdministrator: + break; + case LoggedInNotOwner: + case LoggedInNotAdministrator: + case NotLoggedIn: + break; + default: + break; + } + } + catch(Exception e) { + duccLogger.error(methodName, null, e); + } + duccLogger.trace(methodName, null, messages.fetch("exit")); + return retVal; + } + + @Deprecated public boolean isAuthorized(HttpServletRequest request, String resourceOwnerUserid) { String methodName = "isAuthorized"; duccLogger.trace(methodName, null, messages.fetch("enter")); @@ -713,11 +787,13 @@ public abstract class DuccAbstractHandle return retVal; } + @Deprecated public String getDisabled(HttpServletRequest request, IDuccWork duccWork) { String resourceOwnerUserId = duccWork.getStandardInfo().getUser(); return getDisabled(request, resourceOwnerUserId); } + @Deprecated public String getDisabled(HttpServletRequest request, String resourceOwnerUserId) { String disabled = "disabled=\"disabled\""; if(isAuthorized(request, resourceOwnerUserId)) { @@ -725,7 +801,37 @@ public abstract class DuccAbstractHandle } return disabled; } - + + public String getDisabledWithHover(HttpServletRequest request, IDuccWork duccWork) { + String resourceOwnerUserId = duccWork.getStandardInfo().getUser(); + return getDisabledWithHover(request, resourceOwnerUserId); + } + + public String getDisabledWithHover(HttpServletRequest request, String resourceOwnerUserId) { + String disabled = "disabled=\"disabled\""; + String hover = ""; + AuthorizationStatus authorizationStatus = getAuthorizationStatus(request, resourceOwnerUserId); + switch(authorizationStatus) { + case LoggedInOwner: + disabled = ""; + break; + case LoggedInAdministrator: + disabled = ""; + break; + case LoggedInNotOwner: + hover = " title=\"Hint: Preferences can be used to change role to Administrator\""; + break; + case LoggedInNotAdministrator: + break; + case NotLoggedIn: + hover = " title=\"Hint: Login\""; + break; + default: + break; + } + return disabled+hover; + } + public String buildjConsoleLink(String service) { String location = "buildjConsoleLink"; String href = "<a href=\""+duccjConsoleLink+"?"+"service="+service+"\" onclick=\"var newWin = window.open(this.href,'child','height=800,width=1200,scrollbars'); newWin.focus(); return false;\">"+service+"</a>"; Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java?rev=1454104&r1=1454103&r2=1454104&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandler.java Thu Mar 7 21:16:10 2013 @@ -1801,7 +1801,7 @@ public class DuccHandler extends DuccAbs String methodName = "handleDuccServletSystemAdminControlData"; duccLogger.trace(methodName, null, messages.fetch("enter")); StringBuffer sb = new StringBuffer(); - boolean authorized = isAuthorized(request,null); + boolean authorized = isUserAuthorized(request,null); boolean accept = SystemState.getInstance().isAcceptJobs(); String acceptMode = "disabled=disabled"; String blockMode = "disabled=disabled"; @@ -1845,7 +1845,7 @@ public class DuccHandler extends DuccAbs String methodName = "handleDuccServletSystemJobsControl"; duccLogger.trace(methodName, null, messages.fetch("enter")); StringBuffer sb = new StringBuffer(); - boolean authorized = isAuthorized(request,null); + boolean authorized = isUserAuthorized(request,null); if(authorized) { String userId = duccWebSessionManager.getUserId(request); String name = "type"; @@ -2446,7 +2446,7 @@ public class DuccHandler extends DuccAbs IDuccWorkJob duccWorkJob = (IDuccWorkJob) duccWorkMap.findDuccWork(DuccType.Job, value); if(duccWorkJob != null) { String resourceOwnerUserId = duccWorkJob.getStandardInfo().getUser().trim(); - if(isAuthorized(request,resourceOwnerUserId)) { + if(isUserAuthorized(request,resourceOwnerUserId)) { String arg1 = "-"+name; String arg2 = value; String userId = duccWebSessionManager.getUserId(request); @@ -2562,7 +2562,7 @@ public class DuccHandler extends DuccAbs IDuccWorkReservation duccWorkReservation = (IDuccWorkReservation) duccWorkMap.findDuccWork(DuccType.Reservation, value); if(duccWorkReservation != null) { String resourceOwnerUserId = duccWorkReservation.getStandardInfo().getUser().trim(); - if(isAuthorized(request,resourceOwnerUserId)) { + if(isUserAuthorized(request,resourceOwnerUserId)) { String arg1 = "-"+name; String arg2 = value; String userId = duccWebSessionManager.getUserId(request); @@ -2629,7 +2629,7 @@ public class DuccHandler extends DuccAbs IDuccWorkJob duccWorkJob = (IDuccWorkJob) duccWorkMap.findDuccWork(DuccType.Service, value); if(duccWorkJob != null) { String resourceOwnerUserId = duccWorkJob.getStandardInfo().getUser().trim(); - if(isAuthorized(request,resourceOwnerUserId)) { + if(isUserAuthorized(request,resourceOwnerUserId)) { String arg1 = "-"+name; String arg2 = value; String userId = duccWebSessionManager.getUserId(request); @@ -2683,7 +2683,7 @@ public class DuccHandler extends DuccAbs ServicesRegistry servicesRegistry = new ServicesRegistry(); String resourceOwnerUserId = servicesRegistry.findServiceUser(id); if(resourceOwnerUserId != null) { - if(isAuthorized(request,resourceOwnerUserId)) { + if(isUserAuthorized(request,resourceOwnerUserId)) { String arg1 = "--"+command; String arg2 = id; String userId = duccWebSessionManager.getUserId(request); Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java?rev=1454104&r1=1454103&r2=1454104&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerJsonFormat.java Thu Mar 7 21:16:10 2013 @@ -121,7 +121,7 @@ public class DuccHandlerJsonFormat exten sb.append("<span class=\"ducc-col-terminate\">"); if(terminateEnabled) { if(!job.isFinished()) { - sb.append("<input type=\"button\" onclick=\"ducc_confirm_terminate_job("+id+")\" value=\"Terminate\" "+getDisabled(request,job)+"/>"); + sb.append("<input type=\"button\" onclick=\"ducc_confirm_terminate_job("+id+")\" value=\"Terminate\" "+getDisabledWithHover(request,job)+"/>"); } } sb.append("</span>"); @@ -507,7 +507,7 @@ public class DuccHandlerJsonFormat exten sb.append("<span class=\"ducc-col-terminate\">"); if(terminateEnabled) { if(!duccwork.isCompleted()) { - String disabled = getDisabled(request,duccwork); + String disabled = getDisabledWithHover(request,duccwork); String user = duccwork.getStandardInfo().getUser(); if(user != null) { if(user.equals(JdConstants.reserveUser)) { @@ -1012,7 +1012,7 @@ public class DuccHandlerJsonFormat exten col.append("<span class=\"ducc-col-start\">"); if(buttonsEnabled) { if(!deployments.equals(instances)) { - col.append("<input type=\"button\" onclick=\"ducc_confirm_service_start("+sid+")\" value=\"Start\" "+getDisabled(request,user)+"/>"); + col.append("<input type=\"button\" onclick=\"ducc_confirm_service_start("+sid+")\" value=\"Start\" "+getDisabledWithHover(request,user)+"/>"); } } col.append("</span>"); @@ -1024,7 +1024,7 @@ public class DuccHandlerJsonFormat exten col.append("<span class=\"ducc-col-stop\">"); if(buttonsEnabled) { if(!deployments.equals("0")) { - col.append("<input type=\"button\" onclick=\"ducc_confirm_service_stop("+sid+")\" value=\"Stop\" "+getDisabled(request,user)+"/>"); + col.append("<input type=\"button\" onclick=\"ducc_confirm_service_stop("+sid+")\" value=\"Stop\" "+getDisabledWithHover(request,user)+"/>"); } } col.append("</span>"); Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerLegacy.java URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerLegacy.java?rev=1454104&r1=1454103&r2=1454104&view=diff ============================================================================== --- uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerLegacy.java (original) +++ uima/sandbox/uima-ducc/trunk/uima-ducc-web/src/main/java/org/apache/uima/ducc/ws/server/DuccHandlerLegacy.java Thu Mar 7 21:16:10 2013 @@ -102,7 +102,7 @@ public class DuccHandlerLegacy extends D sb.append("<td valign=\"bottom\" class=\"ducc-col-terminate\">"); if(terminateEnabled) { if(!job.isFinished()) { - sb.append("<input type=\"button\" onclick=\"ducc_confirm_terminate_job("+id+")\" value=\"Terminate\" "+getDisabled(request,job)+"/>"); + sb.append("<input type=\"button\" onclick=\"ducc_confirm_terminate_job("+id+")\" value=\"Terminate\" "+getDisabledWithHover(request,job)+"/>"); } } sb.append("</td>"); @@ -417,7 +417,7 @@ public class DuccHandlerLegacy extends D sb.append("<td class=\"ducc-col-terminate\">"); if(terminateEnabled) { if(!duccwork.isCompleted()) { - String disabled = getDisabled(request,duccwork); + String disabled = getDisabledWithHover(request,duccwork); String user = duccwork.getStandardInfo().getUser(); if(user != null) { if(user.equals(JdConstants.reserveUser)) { @@ -884,7 +884,7 @@ public class DuccHandlerLegacy extends D if(type.equals(typeRegistered)) { if(buttonsEnabled) { if(!deployments.equals(instances)) { - sb.append("<input type=\"button\" onclick=\"ducc_confirm_service_start("+sid+")\" value=\"Start\" "+getDisabled(request,user)+"/>"); + sb.append("<input type=\"button\" onclick=\"ducc_confirm_service_start("+sid+")\" value=\"Start\" "+getDisabledWithHover(request,user)+"/>"); } } } @@ -894,7 +894,7 @@ public class DuccHandlerLegacy extends D if(type.equals(typeRegistered)) { if(buttonsEnabled) { if(!deployments.equals("0")) { - sb.append("<input type=\"button\" onclick=\"ducc_confirm_service_stop("+sid+")\" value=\"Stop\" "+getDisabled(request,user)+"/>"); + sb.append("<input type=\"button\" onclick=\"ducc_confirm_service_stop("+sid+")\" value=\"Stop\" "+getDisabledWithHover(request,user)+"/>"); } } }