hi guys i think am making progress. this is what i have so far. "login_example.mxml"
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:view="components.*"> <mx:states> <mx:State name="Log Out"> <mx:SetProperty target="{label1}" name="text" value="Log Out"/> </mx:State> </mx:states> <mx:Script> <![CDATA[ import components.*; import mx.containers.TitleWindow; import mx.controls.Alert; import mx.events.CloseEvent; import flash.events.Event; import mx.managers.PopUpManager; import mx.core.IFlexDisplayObject; public var loggedin:Boolean = false; public var pop:Login; private function showLogin():void { pop = Login(PopUpManager.createPopUp(this,Login,true)); pop.showCloseButton =true; PopUpManager.centerPopUp(pop); pop.addEventListener("close",removeMe); pop["cancelButton"].addEventListener("click", removeMe); pop["okButton"].addEventListener("click",processLogin); } private function removeMe(event:Event):void { PopUpManager.removePopUp(pop); } private function processLogin(event:Event):void { if(pop.username.text == "" || pop.password.text == "") { Alert.show("Login name and password are required fields.","WARNING::Login Alert"); } else { // log user in or something... lbl_intro.text = "Welcome " +pop.username.text; removeMe(event); viewstack1.selectedChild = admin; currentState = 'Log Out'; } } ]]> </mx:Script> <mx:Label x="0" y="0" text="Sign In" id="label1" buttonMode="true" useHandCursor="true" mouseChildren="false" click="showLogin()"/> <mx:ViewStack x="0" y="26" id="viewstack1" width="100%" height="100%"> <view:Home id="home"/> <view:Admin id="admin"/> </mx:ViewStack> <mx:Label x="700" y="0" id="lbl_intro"/> </mx:Application> "login_form.mxml" <?xml version="1.0" encoding="utf-8"?> <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" title="Login Form"> <mx:Form x="0" y="0"> <mx:FormItem label="User Name:"> <mx:TextInput id="username"/> </mx:FormItem> <mx:FormItem label="Password:"> <mx:TextInput id="password"/> </mx:FormItem> </mx:Form> <mx:ControlBar> <mx:HBox width="100%"> <mx:Button label="Login" id="okButton"/> <mx:Spacer width="100%"/> <mx:Button label="Cancel" id="cancelButton"/> </mx:HBox> </mx:ControlBar> </mx:TitleWindow> now i would like to connect that to this coldfusion script to have the cfc match login details from flex and database "memberservice.cfc" <!--- COMPONENT: MemberService AUTHOR: Bruce Phillips, [email protected] DATE: March 2007 PURPOSE: Provides service functions related to a Member CHANGE HISTORY: ---> <cfcomponent displayname="MemberService" output="false" hint="Member Service"> <!---document each instance variable---> <cfproperty name="dsn" displayname="Datasource Name" hint="Datasource name used to connect CF to the database" type="string"> <!---initilization area - acts like a constructor as its called automatically---> <cfscript> variables.dsn = 'usr_grp'; </cfscript> <cffunction name="init" access="public" output="false" returntype="MemberService" hint="Constructor for this CFC"> <!--- take in the datasource name as an argument and set it to the variables scope so it's available throughout the CFC ---> <cfargument name="dsn" type="string" required="true" /> <cfset variables.dsn = arguments.dsn /> <!--- return the object itself ---> <cfreturn this /> </cffunction> <cffunction name="getMemberByUserNameAndPassword" access="public" output="false" returntype="Member" hint="Tries to find a record with a matching username and password. If only 1 record is found creates a Member object using the record's column values."> <cfargument name="aUserName" type="string" required="true" /> <cfargument name="aPassword" type="string" required="true" /> <cfset var getMember = "" /> <cfscript> var aMember = createObject("Component","Member").init(); </cfscript> <cftry> <cfquery name="getMember" datasource="#variables.dsn#"> select memID, memUserName, memPassword, memFirstName, memLastName, memEmail from member where memUsername = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.aUserName#"> and memPassword = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.aPassword#"> </cfquery> <!---throw error if no records were found---> <cfif getMember.recordCount EQ 0> <cfthrow type="Member.NoRecordsFound" message="No members with with username of #arguments.aUserName# and password of #arguments.aPassword# were found"> </cfif> <!---throw error if more than one record was found, violates business rule---> <cfif getMember.recordCount GT 1> <cfthrow type="Member.TooManyFound" message="Too many members with username of #arguments.aUserName# and password of #arguments.aPassword# were found" /> </cfif> <cfcatch type="database"> <!---there was a problem with a query---> <cfthrow type="Member.select" message="#cfcatch.detail#" /> </cfcatch> </cftry> <!---update the aMember object with values found in the record's columns---> <cfscript> aMember.setMemberID( getMember.memID); aMember.setUsername( getMember.memUserName); aMember.setPassword( getMember.memPassword); aMember.setFirstName( getMember.memFirstName); aMember.setLastName( getMember.memLastName); aMember.setEmail( getMember.memEmail); </cfscript> <cfreturn aMember /> </cffunction><!---end function getMemberByUserNameAndPassword---> <cffunction name="createMemberService" access="public" output="false" returntype="void" hint="Pass Member object onto MemderDAO create function"> <cfargument name="aMember" type="Member" required="yes" /> <cfset var aMemberDAO = "" /> <cftry> <cfscript> aMemberDAO = createObject("component", "MemberDAO").init('fluid_login'); aMemberDAO.create(aMember); </cfscript> <cfcatch type="Member"> <cfthrow type="Member.create" message="#cfcatch.message#" /> </cfcatch> </cftry> </cffunction> </cfcomponent>

