📄 securityprofile.java
字号:
package net.java.workeffort.webapp.security;import java.io.Serializable;import java.util.HashMap;import java.util.Map;import net.java.workeffort.infrastructure.security.ISecurityProfile;import net.sf.navigator.menu.MenuComponent;import net.sf.navigator.menu.PermissionsAdapter;import org.apache.commons.lang.StringUtils;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;/** * The security profile implementation used by the application. * <p> * Stores the permissions for the user. Implements * <code>PermissionsAdapter</code> which is used by struts-menu for menu * security. * @author Antony Joseph */public class SecurityProfile implements ISecurityProfile, PermissionsAdapter, Serializable { protected static final Log logger = LogFactory.getLog(SecurityProfile.class); private static final String DELIM = "|"; private String partyCd; private String password; private Map permissions = new HashMap(); /** * Constructor * @param partyCd The party Code * @param password The password */ public SecurityProfile(String partyCd, String password) { this.partyCd = partyCd; this.password = password; } /** * Constructor * @param partyCd The party code * @param permissions The list of permissions (that is target, operation) */ public SecurityProfile(String partyCd, Map permissions) { if (partyCd == null || permissions == null) throw new IllegalArgumentException("partyCd=" + partyCd + " permissions=" + permissions); this.partyCd = partyCd; this.permissions = permissions; } public String getPartyCd() { return partyCd; } public void setPartyCd(String partyCd) { this.partyCd = partyCd; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public int getAccessDecision(String target, String operation) { //return ISecurityProfile.ALLOWED; StringBuffer key = new StringBuffer(100); key.append(target); key.append(DELIM); key.append(operation); if (permissions.containsKey(key.toString())) { if (permissions.get(key.toString()) == null) { if (logger.isInfoEnabled()) { logger.info("Access ALLOWED. partyCd=" + partyCd + " target=" + target + " operation=" + operation); } return ISecurityProfile.ALLOWED; } else { if (logger.isInfoEnabled()) { logger.info("Access CONDTIONAL. partyCd=" + partyCd + " target=" + target + " operation=" + operation); } return ISecurityProfile.CONDITIONAL; } } else { if (logger.isInfoEnabled()) logger.info("Authorization failed. partyCd=" + partyCd + " target=" + target + " operation=" + operation); return ISecurityProfile.DENIED; } } /** * Check whether user has access to the menu element. * @return whether or not the menu item is allowed. */ public boolean isAllowed(MenuComponent menu) { //Action menus boolean allowed = false; if (menu.getAction() == null) { // Is a parent menu. At least one child menu item should be // 'allowed' for the parent menu to be displayed. Use recursion. MenuComponent[] children = menu.getMenuComponents(); if (children != null) { for (int i = 0; i < children.length; i++) { if (isAllowed(children[i])) { allowed = true; break; } } } } else { int accessDecision = getAccessDecision(StringUtils.substringBefore( menu.getAction(), "?"), "ACCESS"); if (ISecurityProfile.DENIED == accessDecision) allowed = false; else allowed = true; } return allowed; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -