⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 securityprofile.java

📁 一个很好的开源项目管理系统源代码
💻 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 + -