Subversion Repositories bacoAlunos

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package pt.estgp.estgweb.web.tags;

import org.apache.log4j.Logger;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.UserSessionImpl;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.BodyTagSupport;

public class HasRolePrefixTag extends BodyTagSupport
{

    private static final 1.5.0/docs/api/java/util/logging/Logger.html">Logger logger = 1.5.0/docs/api/java/util/logging/Logger.html">Logger.getLogger(HasRolePrefixTag.class);


    private 1.5.0/docs/api/java/lang/String.html">String role;
    private 1.5.0/docs/api/java/lang/String.html">String rolePrefix;

    public 1.5.0/docs/api/java/lang/String.html">String getRolePrefix() {
        return rolePrefix;
    }

    public void setRolePrefix(1.5.0/docs/api/java/lang/String.html">String rolePrefix) {
        this.rolePrefix = rolePrefix;
    }

    public 1.5.0/docs/api/java/lang/String.html">String getRole()
    {
        return role;
    }

    public void setRole(1.5.0/docs/api/java/lang/String.html">String role)
    {
        this.role = role;
    }

    public int doStartTag() throws JspException
    {
        if(go())
            return EVAL_BODY_TAG;
        else
            return SKIP_BODY;
    }

    public boolean go()
    {
        UserSessionImpl userSession = (UserSessionImpl) pageContext.getRequest().getAttribute(Globals.USER_SESSION_KEY);

        if(userSession != null && userSession.getUser() != null)
        {
            1.5.0/docs/api/java/lang/String.html">String[] roles = role.split(",");
            1.5.0/docs/api/java/lang/String.html">String[] rolesPrefix = rolePrefix.split(",");
            for(1.5.0/docs/api/java/lang/String.html">String role: roles)
            {
                if(userSession.getUser().hasRole(role))
                    return true;
            }
            for(1.5.0/docs/api/java/lang/String.html">String role: rolesPrefix)
            {
                if(userSession.getUser().hasRolePrefix(role))
                    return true;
            }
        }
        return false;
    }

    public int doEndTag() throws JspException
    {
        if (go())
        {
            1.5.0/docs/api/java/lang/String.html">String toPage = bodyContent.getString().trim();
            JspWriter writer = pageContext.getOut();
            try
            {
                writer.write(toPage);
            }
            catch (1.5.0/docs/api/java/lang/Exception.html">Exception e)
            {
                logger.error(e, e);
                throw new JspException(e);
            }
        }

        // Continue processing this page
        return EVAL_PAGE;
    }


}