package com.k_int.ciim.ui.resources;

import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.core.Context;
import javax.xml.bind.annotation.XmlTransient;

import com.k_int.ciim.ui.kernel.IdentServiceQueryCore;
import com.k_int.ciim.ui.ref.PermissionTypeEnum;
import com.k_int.ciim.ui.ref.RoleDefinitionEnum;

public abstract class AbstractResource 
{
	@XmlTransient
	@Context protected HttpServletRequest request;
	@XmlTransient
	private IdentServiceQueryCore isqc = null;
	/* App context setters */
	public void setIdentServiceQueryCore(IdentServiceQueryCore isqc){ this.isqc = isqc; }
	  
	public AbstractResource(){;}
	
	public boolean meetsRoleRequirement(String role_required)
	{
		boolean retval = false;
		
		if(request != null)
		{
			if(request.isUserInRole(role_required))
			{
				return true;
			}
			else if(request.isUserInRole(RoleDefinitionEnum.SUPER.toString()) || request.isUserInRole(RoleDefinitionEnum.GLOBAL.toString()))
			{
				return true;
			}
		}
		
		return retval;
	}
	
	public boolean hasPermissions(Long context_id, 
								  PermissionTypeEnum permission_type)
	{
		if(request.isUserInRole(RoleDefinitionEnum.SUPER.toString()) || request.isUserInRole(RoleDefinitionEnum.GLOBAL.toString()))
		{
			return true;
		}
		
		return isqc.hasPermission(request.getUserPrincipal().getName(), context_id.toString(), null, permission_type.toString());
	}
}
