@Override protected void doWriteBehavior(ResponseWriter writer, Widget widget) throws UnifyException { RemoteDocViewPanel remoteDocViewPanel = (RemoteDocViewPanel) widget; writer.write("ux.loadRemoteDocViewPanel({"); writer.write("\"pId\":\"").write(remoteDocViewPanel.getId()).write('"'); writer.write(",\"pWinPgNm\":\"").write(getResponseControllerWinId()).write("\""); writer.write(",\"pRemoteURL\":\"").write(remoteDocViewPanel.getRemoteDocViewInfo().getRemoteDocUrl()) .write("\""); UserToken userToken = getUserToken(); writer.write(",\"pRemoteLoginId\":\"").write(userToken.getUserLoginId()).write("\""); writer.write(",\"pRemoteUserName\":\"").write(userToken.getUserName()).write("\""); if (userToken.getRoleCode() != null) { writer.write(",\"pRemoteRoleCode\":\"").write(userToken.getRoleCode()).write("\""); } if (userToken.getBranchCode() != null) { writer.write(",\"pRemoteBranchCode\":\"").write(userToken.getBranchCode()).write("\""); } writer.write(",\"pRemoteGlobalFlag\":").write(userToken.isGlobalAccess()); writer.write("});"); }
boolean globalAccess = Boolean.valueOf(request.getParameter(RequestParameterConstants.REMOTE_GLOBAL_ACCESS)); UserToken userToken = new UserToken(userLoginId, userName, userSession.getRemoteAddress(), null, branchCode, globalAccess, true, true, true); userToken.setRoleCode(roleCode); userSession.getSessionContext().setUserToken(userToken);
@Override public String expandThemeTag(String resouceName) throws UnifyException { String themePath = null; if (getSessionContext().isUserLoggedIn()) { themePath = getSessionContext().getUserToken().getThemePath(); } return WebUtils.expandThemeTag(resouceName, themePath); }
private WfStepDef accessCurrentUserStep(String globalName) throws UnifyException { WfStepDef wfStepDef = getWfStepDef(globalName); if (!getUserToken().isReservedUser()) { Set<String> stepNames = getCurrentUserRoleStepCodes(); if (!stepNames.contains(globalName)) { throw new UnifyException(WorkflowModuleErrorConstants.WORKFLOW_CURRENT_USER_NOT_PARTICIPANT, getUserToken().getUserName(), wfStepDef.getDescription()); } } return wfStepDef; }
@Override public void logIn(UserToken userToken) throws UnifyException { SessionContext sessionContext = getRequestContext().getSessionContext(); // Add user session if not existing if (getUserSession(sessionContext.getId()) == null) { addUserSession(new LocalUserSession(sessionContext)); } // Update user session database record String userLoginId = userToken.getUserLoginId(); String sessionId = sessionContext.getId(); db().updateAll(new UserSessionTrackingQuery().id(sessionId), new Update().add("userLoginId", userLoginId) .add("userLoginId", userToken.getUserLoginId()).add("userName", userToken.getUserName())); if (!userToken.isAllowMultipleLogin()) { List<String> sessionIdList = db().valueList(String.class, "sessionId", new UserSessionTrackingQuery().userLoginId(userLoginId).idNot(sessionId)); if (!sessionIdList.isEmpty()) { // Log other user sessions out db().updateAll(new UserSessionTrackingQuery().idAmongst(sessionIdList), new Update().add("userLoginId", null).add("userLoginId", null).add("userName", null)); forceLogOut(sessionIdList.toArray(new String[sessionIdList.size()])); } } // Update session context sessionContext.setUserToken(userToken); }
@Override public int releaseCurrentUserWorkItems(String globalStepName, List<Long> wfItemIds) throws UnifyException { WfStepDef wfStepDef = accessCurrentUserStep(globalStepName); WfItemQuery wfItemQuery = getCurrentUserParticipationWfItemQuery(wfStepDef); wfItemQuery.idIn(wfItemIds); wfItemQuery.heldBy(getUserToken().getUserLoginId()); return db().updateAll(wfItemQuery, new Update().add("heldBy", null)); }
if (!userToken.isReservedUser()) { forwardedBy = userToken.getUserLoginId();
/** * Returns workflow step codes that are associated with role of current user. * * @return a set of workflow step codes * @throws UnifyException * if an error occurs */ public Set<String> getCurrentUserRoleStepCodes() throws UnifyException { UserToken userToken = getSessionContext().getUserToken(); if (userToken != null) { return getRoleStepCodes(userToken.getRoleCode()); } return Collections.emptySet(); }
private UserToken createUserToken(String loginId, Long id) throws UnifyException { return new UserToken(loginId, "System", getSessionContext().getRemoteAddress(), id, null, true, true, true, false); }
@Override public List<WfTemplate> findUserRoleManualInitWfTemplates() throws UnifyException { WfTemplateQuery query = new WfTemplateQuery(); if (!getUserToken().isReservedUser()) { Set<String> steps = getCurrentUserRoleStepCodes(); if (steps.isEmpty()) { return Collections.emptyList(); } Set<String> categoryNames = new HashSet<String>(); Set<String> templateNames = new HashSet<String>(); for (String globalStepName : steps) { StepNameParts stepNameParts = WfNameUtils.getStepNameParts(globalStepName); categoryNames.add(stepNameParts.getCategoryName()); templateNames.add(stepNameParts.getTemplateName()); } query.wfCategoryNameIn(categoryNames); query.nameIn(templateNames); } query.select("id", "name", "description", "wfCategoryName", "wfCategoryDesc"); query.wfCategoryStatus(RecordStatus.ACTIVE); query.manualOption(Boolean.TRUE); query.order("wfCategoryDesc", "description"); return db().listAll(query); }
@Override public WfItemObjects getCurrentUserWorkItems(String globalStepName) throws UnifyException { WfStepDef wfStepDef = accessCurrentUserStep(globalStepName); String useLoginID = getUserToken().getUserLoginId(); List<WfItem> wfItemList = db().listAll(new WfItemQuery().globalTemplateName(wfStepDef.getGlobalTemplateName()) .wfStepName(wfStepDef.getName()).heldBy(useLoginID)); List<WfAction> actions = new ArrayList<WfAction>(); for (WfUserActionDef wfUserActionDef : wfStepDef.getUserActionList()) { actions.add(new WfAction(wfUserActionDef.getName(), resolveSessionMessage(wfUserActionDef.getLabel()), wfUserActionDef.getNoteReqType(), wfUserActionDef.isValidatePage())); } return new WfItemObjects(globalStepName, wfItemList, actions); }
/** * Checks if current session role has privilege. * * @param privilegeCategoryCode * the privilege category code * @param privilegeCode * the privilege code * @return a true value is current session role has privilege otherwise false * @throws UnifyException * if an error occurs */ public boolean isRolePrivilege(String privilegeCategoryCode, String privilegeCode) throws UnifyException { UserToken userToken = getSessionContext().getUserToken(); if (userToken != null && userToken.getRoleCode() != null) { Set<String> privileges = getRolePrivilegeCodes(privilegeCategoryCode); if (privileges != null) { return privileges.contains(privilegeCode); } return false; } return true; }
private WfItemQuery getCurrentUserParticipationWfItemQuery(WfStepDef wfStepDef) throws UnifyException { WfItemQuery wfItemQuery = new WfItemQuery().globalTemplateName(wfStepDef.getGlobalTemplateName()) .wfStepName(wfStepDef.getName()); if (!getUserToken().isReservedUser()) { Boolean supervisor = (Boolean) this.getSessionAttribute(JacklynSessionAttributeConstants.SUPERVISORFLAG); if (Boolean.TRUE.equals(supervisor)) { wfItemQuery.allOrParticipantType(WorkflowParticipantType.SUPERVISOR); } else { wfItemQuery.allOrParticipantType(WorkflowParticipantType.PERSONNEL); } if (wfStepDef.isBranchOnly()) { wfItemQuery.ownerId(getUserBranchId()); } } return wfItemQuery; }
@Override public List<Long> grabCurrentUserWorkItems(String globalStepName) throws UnifyException { WfStepDef wfStepDef = accessCurrentUserStep(globalStepName); WfItemQuery wfItemQuery = getCurrentUserParticipationWfItemQuery(wfStepDef); String userLoginID = getUserToken().getUserLoginId(); if (!wfStepDef.isIncludeForwarder()) { wfItemQuery.notForwardedBy(userLoginID); } wfItemQuery.isUnheldOrHeldBy(userLoginID); if (wfStepDef.getItemsPerSession() > 0) { wfItemQuery.limit(wfStepDef.getItemsPerSession()); } db().updateAll(wfItemQuery, new Update().add("heldBy", userLoginID)); wfItemQuery.clear(); wfItemQuery.globalTemplateName(wfStepDef.getGlobalTemplateName()); wfItemQuery.wfStepName(wfStepDef.getName()); wfItemQuery.heldBy(userLoginID); return db().valueList(Long.class, "id", wfItemQuery); }
/** * Returns privilege codes for supplied privilege category and current session * role. * * @param privilegeCategoryCode * the privilege category code * @return set of privilege codes * @throws UnifyException * if an error occurs */ public Set<String> getRolePrivilegeCodes(String privilegeCategoryCode) throws UnifyException { return applicationContext.getPrivilegeCodes(getSessionContext().getUserToken().getRoleCode(), privilegeCategoryCode); }
@Override public void applyWorkflowAction(WfItemObject workflowItem, String actionName) throws UnifyException { WfUserActionDef wfUserActionDef = workflowItem.getWfStepDef().getWfUserActionDef(actionName); WfStepDef trgWfStep = getWfStepDef(wfUserActionDef.getTargetGlobalName()); // Check if current user holds workflow item Long wfItemId = workflowItem.getWfItemId(); String userLoginId = getUserToken().getUserLoginId(); WfItemQuery wfItemQuery = ((WfItemQuery) new WfItemQuery().id(wfItemId)).heldBy(userLoginId); if (db().countAll(wfItemQuery) > 0) { // Log history Date actionDt = db().getNow(); db().updateById(WfItemEvent.class, workflowItem.getWfHistEventId(), new Update().add("actionDt", actionDt) .add("actor", userLoginId).add("wfAction", actionName).add("notes", workflowItem.getNotes())); // Route to target step WfStepDef settleQ = pushIntoStep(trgWfStep, workflowItem); if (!settleQ.isEnd()) { // Release workflow item db().updateAll(wfItemQuery, new Update().add("heldBy", null)); } } else { throw new UnifyException(WorkflowModuleErrorConstants.WORKFLOW_APPLY_ACTION_UNHELD, actionName, workflowItem.getDescription()); } }
/** * Returns privilege settings for supplied privilege code and current session * role. * * @param privilege * the privilege to test * @return the privilege settings * @throws UnifyException * if an error occurs */ public PrivilegeSettings getRolePrivilegeSettings(String privilege) throws UnifyException { UserToken userToken = getSessionContext().getUserToken(); if (userToken != null) { return applicationContext.getPrivilegeSettings(userToken.getRoleCode(), privilege); } return applicationContext.getPrivilegeSettings(null, privilege); }