Thanks Dan,

I'll give it a try first thing in the morning.. 

Appreciate the help..

Cliff



Sent from my iPad

On Jul 29, 2010, at 3:57 PM, Dan Skaggs <[email protected]> wrote:

> Cliff...
> 
> I think I see what's going on.
> 
> In your controller checkAuthentication() method, if username is 1 and
> password is 2, the session.adminLoggedIn is set to true. The
> controller code ends there without doing anything else.
> 
> Looking back at your event-handler block for the checkAuthentication
> event, there are no views defined to be rendered after the message is
> broadcast to the controller so ModelGlue just ends processing because
> it thinks it's finished (and it is because that's all it's been told
> to do).
> 
> What I'd suggest is capturing the original event name that caused the
> redirect to the login form and including that event in a hidden
> variable in the form (for example : originalEvent).  Then, if the
> login is successful, you can redirect them back to the original event
> they asked for similar to this:
> 
> <cffunction name="checkAuthentication" access="public"
>   returntype="void" output="true" hint="???">
> 
>      <cfargument name="event" type="ModelGlue.Core.Event"
>          required="true">
> 
>      <cfset username=arguments.event.getValue("user") />
>      <cfset password=arguments.event.getValue("pass") />
> 
>       <!--- Super Simple test for a username/password pair --->
>       <cfif username is "1" and password is "2">
>              <cfset session.adminLoggedIn = true />
>              <cfset
> arguments.event.forward( arguments.event.getValue("originalEvent") ) /
>> 
>       <cfelse>
>              <cfset arguments.event.forward("login") />
>       </cfif>
> </cffunction>
> 
> That will give you an exit path to an event-handler that displays
> something in the case where the login is valid.
> 
> Please let us know if you have any other questions or issues.
> 
> Dan
> 
> 
> On Jul 28, 7:09 pm, Clifford Moon <[email protected]> wrote:
>> Greetings,
>> 
>> I'm new to Model Glue, have been working with it for a month or
>> so,have generally been lost but can appreciate it's strengths.  We are
>> currently trying to setup Authentication by using Event Types.  Dan
>> Wilson gave me some hints, and directed me to this group for some
>> additional help with my problem.   Here's a quick run-down that I sent
>> to him that explains where I'm trying to go with this, and what is
>> happening.  If anyone could help me to figure this out, I'd greatly
>> appreciate it..
>> 
>> I've further included my modelglue.xml, controller.cfc and login.cfm
>> that I'm using to make this work.
>> 
>> Thanks in Advance,
>> 
>> Clifford Moon
>> 
>> I've setup the secure event type, with it broadcasting the message
>> needsAuthenticatedUser, which tests for a session variable being set
>> to true.  If it's not set to true, I used the event.forward and send
>> it to the "login" event handler which dumps the login.cfm form.  I've
>> set the submit on that form to be checkAuthentication which is another
>> event, which broadcasts checkAuthentication which executes
>> checkAuthentication inside the controller.cfc.  That then tests
>> against a temporary username and password "1" and "2" and if they are
>> true, I set the session variable to true, otherwise, use the
>> event.forward to again send them to the login page.
>> 
>> I know this is partially working because I can do a run through, and
>> it's correctly setting the session variable to true as it's supposed
>> to, and when I call my "secure" event (security is what I called it),
>> it doesn't display the login form, but rather goes ahead and dumps my
>> form that I want to make secure.
>> 
>> My quandary is this:  When I call my app, passing in the
>> "event=security" to use the "secure" event-type, and I authenticate
>> correctly, I'm winding back up at my checkAuthentication event (and
>> subsequently a blank page), rather than it passing it back to the
>> "event=security" and me seeing my form.  Somewhere, I'm missing a
>> step.
>> 
>> Any help would be greatly appreciated.
>> 
>> Thanks,
>> 
>> Cliff
>> 
>> *************************************************************************** 
>> ********
>> LOGIN.CFM
>> 
>> <cfset event.copyToScope(variables,"xe_login") />
>> <cfset session.adminLoggedIn = false />
>> <cfset submit = event.linkTo(xe_login) />
>> 
>> <cfoutput>
>> <cfform name="" action="#submit#">
>>  <cfinput name="user" type="text">
>>  <cfinput name="pass" type="password">
>>  <cfinput name="submit" type="submit" value="submit">
>> </cfform>
>> </cfoutput>
>> 
>> *************************************************************************** 
>> ********
>> MODELGLUE.XML
>> 
>> <?xml version="1.0" encoding="UTF-8"?>
>> <modelglue>
>> 
>> <config>
>>         <setting name="dsn" value="tstapx" />
>> </config>
>> 
>> <controllers>
>>         <controller id="Controller"
>> type="developers.cliff.honors.controller.Controller">
>>         <!--
>>         <message-listener message="message" function="controllerFunction" />
>>         -->
>>           <message-listener message="submitFormData" />
>>           <message-listener message="submitStudentFormData" />
>>           <message-listener message="submitTransferFormData" />
>>           <message-listener message="submitHighSchoolFormData" />
>>           <message-listener message="needsAuthenticatedUser" />
>>           <message-listener message="checkAuthentication" />
>>         </controller>
>> </controllers>
>> 
>>         <event-types>
>>         <!-- Sample Event Type:
>>                 You can use before, after or both.
>>                 <event-type name="templatedPage">
>>                         <before>
>>                                 <results>
>>                                         <result 
>> do="SomethingThatShouldRunBefore"/>
>>                                 </results>
>>                         </before>
>>                         <after>
>>                                 <results>
>>                                         <result 
>> do="SomethingThatShouldRunAfter"/>
>>                                 </results>
>>                         </after>
>>                 </event-type>
>>         -->
>> 
>>            <event-type name="templatedPage">
>>                   <after>
>>                           <views>
>>                                   <include name="main" 
>> template="layout/Master.Layout.cfm" />
>>                           </views>
>>                   </after>
>>            </event-type>
>> 
>>            <event-type name="secure">
>>                   <before>
>>                                 <broadcasts>
>>                                         <message 
>> name="needsAuthenticatedUser" />
>>                                 </broadcasts>
>>                   </before>
>>            </event-type>
>>         </event-types>
>> 
>> <event-handlers>
>> 
>>         <event-handler name="default" type="templatedPage">
>>                         <views>
>>                                 <include name="primary" 
>> template="frmMainStudent.cfm">
>>                                         <value name="xe_receiveformat" 
>> value="handleStudentFormAction" />
>>                                 </include>
>>                         </views>
>>         </event-handler>
>> 
>>         <event-handler name="transfer" type="templatedPage">
>>                         <views>
>>                                 <include name="primary" 
>> template="frmMainTransfer.cfm">
>>                                         <value name="xe_receiveformat" 
>> value="handleTransferFormAction" /
>> 
>>                                 </include>
>>                         </views>
>>         </event-handler>
>> 
>>         <event-handler name="student" type="templatedPage">
>>                         <views>
>>                                 <include name="primary" 
>> template="frmMainStudent.cfm">
>>                                         <value name="xe_receiveformat" 
>> value="handleStudentFormAction" />
>>                                 </include>
>>                         </views>
>>         </event-handler>
>> 
>>         <event-handler name="highschool" type="templatedPage">
>>                         <views>
>>                                 <include name="primary" 
>> template="frmMainHighSchool.cfm">
>>                                         <value name="xe_receiveformat"
>> value="handleHighSchoolFormAction" />
>>                                 </include>
>>                         </views>
>>         </event-handler>
>> 
>>         <event-handler name="security" type="secure,templatedPage">
>>                         <views>
>>                                 <include name="primary" 
>> template="frmMainHighSchool2.cfm">
>>                                         <value name="xe_receiveformat"
>> value="handleHighSchoolFormAction" />
>>                                 </include>
>>                         </views>
>>         </event-handler>
>> 
>>         <event-handler name="handleStudentFormAction" type="templatedPage">
>>                         <broadcasts>
>>                <message name= "submitStudentFormData" />
>>                         </broadcasts>
>>                         <views>
>>                                 <include name="primary" template="pages/
>> dspDisplayStudentForm.cfm" />
>>                         </views>
>>         </event-handler>
>> 
>>         <event-handler name="handleTransferFormAction" type="templatedPage">
>>                         <broadcasts>
>>                <message name= "submitTransferFormData" />
>>                         </broadcasts>
>>                         <views>
>>                                 <include name="primary" template="pages/
>> dspDisplayTransferForm.cfm" />
>>                         </views>
>>         </event-handler>
>> 
>>         <event-handler name="handleHighSchoolFormAction"
>> type="templatedPage">
>>                         <broadcasts>
>>                <message name= "submitHighSchoolFormData" />
>>                         </broadcasts>
>>                         <views>
>>                                 <include name="primary" template="pages/
>> dspDisplayHighSchoolForm.cfm" />
>>                         </views>
>>         </event-handler>
>> 
>>         <event-handler name="login" type="templatedPage">
>>                         <views>
>>                                 <include name="primary" 
>> template="pages/login.cfm">
>>                                         <value name="xe_login" 
>> value="checkAuthentication" />
>>                                 </include>
>>                         </views>
>>         </event-handler>
>> 
>>         <event-handler name="checkAuthentication" type="templatedPage">
>>                         <broadcasts>
>>                <message name= "checkAuthentication" />
>>                         </broadcasts>
>>         </event-handler>
>> 
>>         <!--
>>         Sample Event Handler:
>>         <event-handler name="eventname">
>>                 <broadcasts>
>>                         <message name="message" />
>>                 </broadcasts>
>>                 <results>
>>                         <result name="resultName" do="otherEvent" />
>>                 </results>
>>                 <views>
>>                         <include name="body" template="content.cfm" />
>>                 </views>
>>         </event-handler>
>>         -->
>> 
>>         <!-- A homepage for your application. -->
>>         <event-handler name="page.index">
>>                 <broadcasts />
>>                 <results>
>>                         <result do="template.main" />
>>                 </results>
>>                 <views>
>>                         <include name="body" template="pages/index.cfm" />
>>                 </views>
>>         </event-handler>
>> 
>>         <!-- An error event to show when an error occurs, much like
>> <cferror>. -->
>>         <event-handler name="page.error">
>>                 <broadcasts />
>>                 <results>
>>                         <result do="template.main" />
>>                 </results>
>>                 <views>
>>                         <include name="body" template="pages/exception.cfm" 
>> />
>>                 </views>
>>         </event-handler>
>> 
>>         <!-- A "404" event to show when the requested event isn't defined. --
>> 
>>         <event-handler name="page.missing">
>>                 <broadcasts />
>>                 <results>
>>                         <result do="template.main" />
>>                 </results>
>>                 <views>
>>                         <include name="body" 
>> template="pages/missingEvent.cfm" />
>>                 </views>
>>         </event-handler>
>> 
>>         <!-- Private events:  can't be accessed through a URL -->
>>         <event-handler access="private" name="template.main">
>>                 <views>
>>                         <include name="main" template="templates/main.cfm" />
>>                 </views>
>>         </event-handler>
>> </event-handlers>
>> 
>> </modelglue>
>> 
>> *************************************************************************** 
>> ********
>> CONTROLLER.CFC
>> 
>> <cfcomponent output="false" hint="I am a Model-Glue controller."
>> extends="ModelGlue.gesture.controller.Controller" beans="FormHandler"
>> 
>> 
>> 
>>         <cffunction name="init" access="public" output="false"
>> hint="Constructor">
>>                 <cfargument name="framework" />
>> 
>>                 <cfset super.init(framework) />
>> 
>>                 <cfreturn this />
>>         </cffunction>
>> 
>>         <cffunction name="submitFormData" access="public" returntype="void"
>> output="false" hint="???">
>>                 <cfargument name="event" type="any" >
>>                 <cfset var fullname = 
>> arguments.event.getValue("formfullname") />
>>                 <cfset arguments.event.setValue("User", fullname) />
>>                 <cfset arguments.event.setValue("myFullName", fullname) />
>>                 <cfset arguments.event.setValue("UtpaTitle",formUTPATitle) />
>>                 <cfset arguments.event.setValue("UtpaPhone",formUTPAPhone) />
>>                 <cfset
>> arguments.event.setValue("dsn",getModelGlue().getConfigSetting("dsn")) /
>> 
>> 
>> 
>>                 <cfset da = beans.FormHandler.one() />
>> 
>>                 <cfset otr = beans.FormHandler.set('ITESM','') />
>>                 <cfset qr = beans.FormHandler.get() />
>> 
>>                 <cfset arguments.event.setValue("bed",da) />
>>                 <cfset arguments.event.setValue("qry",qr) />
>> 
>>         </cffunction>
>> 
>>         <cffunction name="needsAuthenticatedUser" access="public"
>> returntype="void" output="false" hint="???">
>>                 <cfargument name="event" type="ModelGlue.Core.Event"
>> required="true">
>>                 <cfif not structKeyExists(session, "adminloggedin") OR NOT
>> session.adminLoggedIn>
>>                     <cfset arguments.event.forward("login") />
>>                     <!---  <cfset 
>> arguments.event.addResult("notAuthenticated")> ---
>> 
>>             </cfif>
>>         </cffunction>
>> 
>>         <cffunction name="checkAuthentication" access="public"
>> returntype="void" output="true" hint="???">
>>                 <cfargument name="event" type="ModelGlue.Core.Event"
>> required="true">
>>                 <cfset username=arguments.event.getValue("user") />
>>                 <cfset password=arguments.event.getValue("pass") />
>> 
>>        <!--- Super Simple test for a username/password pair --->
>>                 <cfif username is "1" and password is "2">
>>                         <cfset session.adminLoggedIn = true />
>>                 <cfelse>
>>                     <cfset arguments.event.forward("login") />
>>                 </cfif>
>>         </cffunction>
>> 
>> </cfcomponent>
> 
> -- 
> Model-Glue Sites:
> Home Page: http://www.model-glue.com
> Documentation: http://docs.model-glue.com
> Bug Tracker: http://bugs.model-glue.com
> Blog: http://www.model-glue.com/blog
> 
> You received this message because you are subscribed to the Google
> Groups "model-glue" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/model-glue?hl=en

-- 
Model-Glue Sites:
Home Page: http://www.model-glue.com
Documentation: http://docs.model-glue.com
Bug Tracker: http://bugs.model-glue.com
Blog: http://www.model-glue.com/blog

You received this message because you are subscribed to the Google
Groups "model-glue" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/model-glue?hl=en

Reply via email to