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

Reply via email to