Security

Package: machii_info_sample.filters
Inherits from: MachII.framework.EventFilter
I am an event filter that manages security of an application
Method Summary
public boolean filterEvent(Event event, EventContext eventContext, [struct paramArgs="#structNew()#"])

I am invoked by the Mach II framework.

Method Detail
filterEvent

public boolean filterEvent( Event event, EventContext eventContext, [struct paramArgs="#structNew()#"] )

I am invoked by the Mach II framework.

Parameters:
Event event
EventContext eventContext
[struct paramArgs="#structNew()#"]

Code:

	<cffunction name="filterEvent" access="public" returntype="boolean" displayname="filterEvent method" hint="I am invoked by the Mach II framework.">
		<cfargument name="event" type="MachII.framework.Event" required="true" displayname="event object" hint="I am the current event object created by the Mach II framework." />
		<cfargument name="eventContext" type="MachII.framework.EventContext" required="true" displayname="eventContext object" hint="I am the current event context object created by the Mach II framework." />
		<cfargument name="paramArgs" type="struct" required="false" default="#structNew()#" displayname="paramArgs structure" hint="I am the structure containing the parameters specified in the filter invocation in mach-ii.xml." />		
		<cfscript>		
			var pm = getAppManager().getPropertyManager();	
			var uf = pm.getProperty("userfacade");
			var invalidEvent = "";
			var clearEventQueue = true;			
			var isLoggedIn = false;
			
			if (uf.hasUser()){
				isLoggedIn = uf.getUser().getIsLoggedIn();
			}							
			if ( structKeyExists( arguments.paramArgs, "invalidEvent" ) ) {
				invalidEvent = arguments.paramArgs.invalidEvent;
			} else {
				invalidEvent = getParameter( "invalidEvent", "" );
			}
			if ( structKeyExists( arguments.paramArgs, "clearEventQueue" ) ) {
				clearEventQueue = arguments.paramArgs.clearEventQueue;
			} else {
				clearEventQueue = getParameter( "clearEventQueue", true );
			}
			
			/*
			convert to CFTAG syntax due to BD problems
			if ( isLoggedIn  ) {
				return true;	// allow processing to continue
			} else {
				if ( clearEventQueue ) {
					arguments.eventContext.clearEventQueue();
				}				
				arguments.eventContext.announceEvent( invalidEvent, arguments.event.getArgs() );
				return false;	// abort the current event handler
			}
			*/
		</cfscript>
		<cfif isLoggedIn >
			<cfreturn true />
		<cfelse>
			<cfif clearEventQueue >
				<cfset arguments.eventContext.clearEventQueue() />
			</cfif>
				<cfset arguments.eventContext.announceEvent( invalidEvent, arguments.event.getArgs() ) />
				<cfreturn false />	 
		</cfif>
	</cffunction>