hi i created a storage class that i was using and it works perfectly but i dont know how to use it to get data from a cfc through remote object call. here is my code it works with username and password but when it comes to geting the email address associated with the username and password from the db i dont know how to do that and thats my biggest problem.
"mainApp.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.*; //Flash Classes import flash.events.Event; import flash.events.MouseEvent; //Flex Classes import mx.containers.TitleWindow; import mx.controls.Alert; import mx.events.CloseEvent; import mx.managers.PopUpManager; import mx.core.IFlexDisplayObject; import mx.utils.ObjectUtil; //static class import classes.UserInfo; public var loggedin:Boolean = false; public var pop:Login; private function showLogin():void { pop = Login(PopUpManager.createPopUp(Application.application as DisplayObject,Login,true)); pop.showCloseButton =true; PopUpManager.centerPopUp(pop); pop.addEventListener("close",removeMe); pop["cancelButton"].addEventListener("click", removeMe); pop.addEventListener( "loginSuccessful", handleLoginSucess); //UserInfo.Email = pop.authManager.email; } private function removeMe(event:Event):void { PopUpManager.removePopUp(pop); } private function handleLoginSucess(event:Event):void{ viewstack1.selectedChild = admin; lbl_intro.text = "Welcome " +pop.username_txt.text; removeMe(event); currentState = 'Log Out'; UserInfo.UserName = pop.username_txt.text; UserInfo.Email = pop.authManager.email; //mx.controls.Alert.show(mx.utils.ObjectUtil.toString(pop.authManager)); //trace (UserInfo.Email); } ]]> </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.mxml" <?xml version="1.0" encoding="utf-8"?> <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" title="Login Form"> <mx:Metadata> [Event(name="loginSuccessful", type="flash.events.Event")] </mx:Metadata> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.rpc.events.ResultEvent; import mx.rpc.events.FaultEvent; import mx.utils.ObjectUtil; import mx.controls.Alert; import mx.events.ValidationResultEvent; import mx.core.Application; import classes.UserInfo; private function isValid():Boolean { var emailValidResult:ValidationResultEvent = this.emailValidate.validate(this.username_txt.text); var pswdValidResult:ValidationResultEvent = this.pswdValidate.validate(this.password_txt.text); if (emailValidResult.type==ValidationResultEvent.VALID && pswdValidResult.type==ValidationResultEvent.VALID) { return true; } else { return false; } } private function authenticateUser():void { if( isValid() ) { authManager.loginUser( this.username_txt.text, this.password_txt.text/* , userCredentials */); UserInfo.isLogged = true; } } private function errorMessage(msg:String):void { //Alert.show( ObjectUtil.toString(event.message) ); this.errorMsg.text = msg; this.errorMsg.height = 15; this.errorMsg.visible = true; } private function serverFault(event:FaultEvent):void { errorMessage(event.message['message']); } //[Bindable] //private var profileAr:ArrayCollection = new ArrayCollection; private function login_result(event:ResultEvent):void { // login successful, remember the user. if( event.result == "true" || event.result == "TRUE" || event.result == "1" || event.result == 1 ) { //profileAr = new ArrayCollection((event.result as ArrayCollection).source); /* Application.application.authenticateUser(userCredentials); */ this.dispatchEvent( new Event('loginSuccessful') ); } else { // login didn't work. show message errorMessage("Login unsuccessful"); } } ]]> </mx:Script> <mx:RemoteObject id="authManager" destination="ColdFusion" source="login_example.cfc.login" showBusyCursor="true"> <mx:method name="loginUser" result="login_result(event)" fault="serverFault(event)" /> </mx:RemoteObject> <mx:StringValidator id="emailValidate" source="{this.username_txt}" property="text" required="true" /> <mx:StringValidator id="pswdValidate" source="{this.password_txt}" property="text" required="true" /> <mx:Form x="0" y="0"> <mx:FormItem label="User Name:"> <mx:TextInput id="username_txt"/> </mx:FormItem> <mx:FormItem label="Password:"> <mx:TextInput id="password_txt"/> </mx:FormItem> </mx:Form> <mx:Text x="0" y="90" id="errorMsg" visible="true" color="red" width="100%" height="0" /> <mx:ControlBar> <mx:HBox width="100%"> <mx:Button label="Login" id="okButton" click="authenticateUser();"/> <mx:Spacer width="100%"/> <mx:Button label="Cancel" id="cancelButton"/> </mx:HBox> </mx:ControlBar> </mx:TitleWindow> "login.cfc" <cfcomponent> <cffunction name="loginUser" access="remote" returntype="boolean"> <cfargument name="username" type="string" required="true"/> <cfargument name="password" type="string" required="true"/> <cfquery name="checkAuthentication" datasource="authentication"> SELECT * FROM profile where username = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.username#"> and Password = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.password#"> </cfquery> <cfif checkAuthentication.recordCount EQ 1> <cfreturn true/> <!---<cfreturn checkAuthentication>---> <cfelse> <cfreturn false/> </cfif> </cffunction> </cfcomponent> "storage class(UserInfo.as)" package classes { public class UserInfo { private static var _UserName:String = ""; private static var _Password:String = ""; private static var _Email:String = ""; private static var _isLogged:Boolean = false; public static function get UserName():String { return UserInfo._UserName; } public static function set UserName(param:String):void { UserInfo._UserName = param; } public static function get Password():String { return UserInfo._Password; } public static function set Password(param:String):void { UserInfo._Password = param; } public static function get Email():String { return UserInfo._Email; } public static function set Email(param:String):void { UserInfo._Email = param; } public static function get isLogged():Boolean { return UserInfo._isLogged; } public static function set isLogged(param:Boolean):void { UserInfo._isLogged = param; } } }