Non xml Security rules

I have been working on implementing the security interceptor features
of coldbox and wanted to define my rule in a simple programatic way .
The base coldbox.system.interceptor.Security.cfc is looking for a
query object from either the ioc,model,cache, or actually db call. So
what i did was this first was this

COLDBOX.cfc

interceptors = [
        //Security
  {class="coldbox.system.interceptors.Security", properties={
    rulesSource="model",
    rulesModel="faaemployees.mobile.model.services.securityService",
    rulesModelMethod="getRules",
    validator="faaemployees.mobile.model.services.securityService",
    preEventSecurity=true,
    debugMode=true}
  }
];

faaemployees.mobile.model.services.securityService.getRules()

<cfset local.qRules =
QueryNew("whitelist,securelist,roles,permissions,redirect","varchar,varchar,varchar,varchar,varchar") /

<cfset QueryAddRow(local.qRules) />
<cfset QuerySetCell(local.qRules,"whitelist","main\.login") />
<cfset QuerySetCell(local.qRules,"securelist",".*") />
<cfset QuerySetCell(local.qRules,"roles","") />
<cfset QuerySetCell(local.qRules,"permissions","") />
<cfset QuerySetCell(local.qRules,"redirect","main.login") />

This was just a little to kludgey for my liking. I really hate
building queries by hand.

So i dug a little further into the coldbox framework and overrode the
coldbox.system.interceptor.Security.loadModelRules() with this

<cffunction name="loadModelRules" access="private" returntype="void"
output="false" hint="Load rules from a model object">
    <cfset var qRules = "">
    <cfset var oModel = "">

    <!--- Get rules from a Model Object --->
    <cfset oModel = getModel(getproperty('rulesModel'))>

    <cfif propertyExists('rulesModelArgs') and
len(getProperty('rulesModelArgs'))>
      <cfset qRules =
evaluate("oModel.#getproperty('rulesModelMethod')#( #getProperty('rulesModelArgs')# )")>
    <cfelse>
      <!--- Now call method on it --->
        <cfinvoke component="#oModel#"
method="#getProperty('rulesModelMethod')#" returnvariable="rules" />
    </cfif>

    <!--- validate query --->
    <cfif isValid("query",rules)>
      <cfset validateRulesQuery(qRules)>
      <!--- let's setup the array of struct Rules now --->
      <cfset setProperty('rules', queryToArray(rules))>
      <cfset setProperty('rulesLoaded',true)>
    <cfelseif isValid("array",rules)>
      <cfset setProperty('rules', rules)>
      <cfset setProperty('rulesLoaded',true)>
    <cfelseif isValid("struct",rules)>
      <cfset aRules = arrayNew(1) />
      <cfset arrayAppend(aRules,rules) />
      <cfset setProperty('rules', rules)>
      <cfset setProperty('rulesLoaded',true)>
    </cfif>
  </cffunction>

so now my model call can return a single struct or an array of
structs. so now my coldbox.cfc looks like this

COLDBOX.cfc

interceptors = [
        //Security
  {class="faaemployees.mobile.model.interceptors.Security",
properties={
    rulesSource="model",
    rulesModel="faaemployees.mobile.model.services.securityService",
    rulesModelMethod="getRules",
    validator="faaemployees.mobile.model.services.securityService",
    preEventSecurity=true,
    debugMode=true}
  }
];

and my getRules method looks like this

<cffunction name="getRules" returntype="array">
    <cfset var local = structNew() />

    <cfset local.rules = [
      {whitelist = "main\.login", securelist = ".*", roles = "" ,
permissions = "", redirect = "main.login"}
    ] />

    <cfreturn local.rules />
  </cffunction>