| Package: MachII.filters |
| Inherits from: framework.BaseComponent < framework.EventFilter |
| A robust EventFilter for testing that a user has the proper permissions to execute and event. |
| Method Summary | |
|---|---|
| public void | configure() |
| public boolean | filterEvent(Event event, EventContext eventContext, [struct paramArgs="#StructNew()#"]) |
| public any | getUserPermissions() |
| private void | throwUsageException() |
| public boolean | validatePermissions(string requiredPermissions, string userPermissions) |
| Methods inherited from framework.EventFilter: init |
|---|
| Methods inherited from framework.BaseComponent: isParameterDefined , hasParameter , setProperty , announceEvent , getAppManager , setAppManager , setParameters , getParameters , getProperty , getParameter , setParameter |
|---|
| Method Detail |
|---|
| configure |
|---|
public void configure( )
Parameters:
Code:
<cffunction name="configure" access="public" returntype="void" output="false"> </cffunction>
| filterEvent |
|---|
public boolean filterEvent( Event event, EventContext eventContext, [struct paramArgs="#StructNew()#"] )
Parameters:
| Event event |
| EventContext eventContext |
| [struct paramArgs="#StructNew()#"] |
Code:
<cffunction name="filterEvent" access="public" returntype="boolean" output="true"> <cfargument name="event" type="MachII.framework.Event" required="true" /> <cfargument name="eventContext" type="MachII.framework.EventContext" required="true" /> <cfargument name="paramArgs" type="struct" required="false" default="#StructNew()#" /> <cfset var isContinue = true /> <cfset var requiredPermissions = '' /> <cfset var invalidEvent = '' /> <cfset var invalidMessage = '' /> <cfset var clearEventQueue = '' /> <cfset var userPermissions = '' /> <cfset var newEventArgs = 0 /> <cfif StructKeyExists(arguments.paramArgs,this.REQUIRED_PERMISSIONS_PARAM)> <cfset requiredPermissions = paramArgs[this.REQUIRED_PERMISSIONS_PARAM] /> <cfelse> <cfset requiredPermissions = getParameter(this.REQUIRED_PERMISSIONS_PARAM,'') /> </cfif> <cfif StructKeyExists(arguments.paramArgs,this.INVALID_EVENT_PARAM)> <cfset invalidEvent = paramArgs[this.INVALID_EVENT_PARAM] /> <cfelse> <cfset invalidEvent = getParameter(this.INVALID_EVENT_PARAM,'') /> </cfif> <cfif StructKeyExists(arguments.paramArgs,this.INVALID_MESSAGE_PARAM)> <cfset invalidMessage = paramArgs[this.INVALID_MESSAGE_PARAM] /> <cfelse> <cfset invalidMessage = getParameter(this.INVALID_MESSAGE_PARAM,'') /> </cfif> <cfif StructKeyExists(arguments.paramArgs,this.CLEAR_EVENT_QUEUE_PARAM)> <cfset clearEventQueue = paramArgs[this.CLEAR_EVENT_QUEUE_PARAM] /> <cfelse> <cfset clearEventQueue = getParameter(this.CLEAR_EVENT_QUEUE_PARAM,true) /> </cfif> <cfif NOT (requiredPermissions EQ '' OR invalidEvent EQ '')> <cfset userPermissions = getUserPermissions() /> <cfset isContinue = validatePermissions(requiredPermissions, userPermissions) /> <cfelse> <cfset throwUsageException() /> </cfif> <cfif isContinue> <cfreturn true /> <cfelse> <cfif clearEventQueue> <cfset arguments.eventContext.clearEventQueue() /> </cfif> <cfset newEventArgs = arguments.event.getArgs() /> <cfset newEventArgs[this.INVALID_MESSAGE_PARAM] = invalidMessage /> <cfset arguments.eventContext.announceEvent(invalidEvent, newEventArgs) /> <cfreturn false /> </cfif> </cffunction>
| getUserPermissions |
|---|
public any getUserPermissions( )
Parameters:
Code:
<cffunction name="getUserPermissions" access="public" returntype="any">
<cfif IsDefined('session.permissions')>
<cfreturn session.permissions />
<cfelse>
<cfreturn '' />
</cfif>
</cffunction>
| throwUsageException |
|---|
private void throwUsageException( )
Parameters:
Code:
<cffunction name="throwUsageException" access="private" returntype="void" output="false"> <cfset var throwMsg = "PermissionsFilter requires the following usage parameters: " & this.REQUIRED_PERMISSIONS_PARAM & ", " & this.INVALID_EVENT_PARAM & "." /> <cfthrow message="#throwMsg#" /> </cffunction>
| validatePermissions |
|---|
public boolean validatePermissions( string requiredPermissions, string userPermissions )
Parameters:
| string requiredPermissions |
| string userPermissions |
Code:
<cffunction name="validatePermissions" access="public" returntype="boolean"> <cfargument name="requiredPermissions" type="string" required="true" /> <cfargument name="userPermissions" type="string" required="true" /> <cfset var isValidated = true /> <cfset var permission = 0 /> <cfloop index="permission" list="#requiredPermissions#" delimiters=","> <cfif NOT ListContainsNoCase(arguments.userPermissions,permission)> <cfset isValidated = false /> </cfif> </cfloop> <cfreturn isValidated /> </cffunction>