/*
 * $Id: HasDedicatedUserAdminPrivilegesTag.java,v 1.1 2004/10/20 12:03:06 marbobo Exp $
 *
 * Copyright (c) Siemens AG 2008 
 *           (c) Universität Paderborn 2008 
 * Licensed under EUPL 1.1. 
 *
 * $Log: HasDedicatedUserAdminPrivilegesTag.java,v $
 * Revision 1.1  2004/10/20 12:03:06  marbobo
 * + Initiale Version
 *
 */
package vkc.view.tag;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.TagSupport;

import vkc.db.entities.VKCUser;
import vkc.util.ServletUtils;
import vkc.view.WebShare;


/**
 * Tag zur Überprüfung der Dedizierten Benutzer-Adminrechte eines Users
 *
 * @author marbobo
 */
public class HasDedicatedUserAdminPrivilegesTag extends TagSupport {
    private String userId = null;

	/**
	 * Konstruktor
	 */
    public HasDedicatedUserAdminPrivilegesTag() {
        super();
    }

	/**
	 * Diese Methode überprüft ob der eingeloggte Benutzer 
	 * Adminrecte besitzt oder nicht
	 */
    private boolean hasDedicatedUserAdminPrivileges() throws JspTagException {
        VKCUser user = null;

        if ( userId == null ) {
            user = ServletUtils.getUser((HttpServletRequest)pageContext.getRequest());

            if ( user == null ) {
                throw new JspTagException(
                        "VKCUser in session scope not found! (KEY=" +
                        WebShare.USER_KEY + ")");
            }

            userId = user.getUserId().toString();
        } else {
            user = ServletUtils.getUser((HttpServletRequest)pageContext.getRequest());
        }

		return user.hasAdminPrivileges() || user.isDedicatedUsersAdmin();
    }

    /**
     * Aufruf der Methode am Anfang des PermissionTags
     */
    public int doStartTag() throws JspException {
        if ( hasDedicatedUserAdminPrivileges() ) {
            return EVAL_BODY_INCLUDE;
        }
        
        return SKIP_BODY;
    }

    /**
     * Aufruf der Methode am Ende des PermissionTags
     */
    public int doEndTag() throws JspException {
        return EVAL_PAGE;
    }
}