Exemplo n.º 1
0
        private void Req_Login(LoginForm sourceForm, string loginRequest, Socket client)
        {
            //Log
            Console.WriteLine("req_login:Sending: " + loginRequest);

            // Send request to remote host
            Send(client, loginRequest);
            sendDone.WaitOne(10);

            //If send fails due to no connection, exit, error message will be shown by send operation
            if (!connectionOpen)
            {
                client.Shutdown(SocketShutdown.Both); client.Close(); return;
            }
            ;

            // Receive the response from the remote device.
            Receive(client);
            receiveDone.WaitOne(10);

            //If receive fails due to no connection, exit, error message will be shown by receive operation
            if (!connectionOpen)
            {
                client.Shutdown(SocketShutdown.Both); client.Close(); return;
            }
            ;

            //  Wait for response for up to 3sec, set cursor to wait while we do so, disable button and input boxes while we do so
            sourceForm.btn_Login.Enabled = false; sourceForm.tb_PasswordInput.Enabled = false; sourceForm.tb_UsernameInput.Enabled = false;
            sourceForm.btn_Login.Text    = "Wait...";
            sourceForm.Cursor            = Cursors.WaitCursor;
            DateTime ThreeSecsTime = DateTime.Now.AddSeconds(3);                   int waitTime = 0;

            while (response == "" && DateTime.Now < ThreeSecsTime)
            {
                Thread.Sleep(10); waitTime++;
            }
            ; waitTime = waitTime * 10;

            //Log with wait time
            Console.WriteLine("req_login:"******":Response: " + response);

            //Exit with error on non-response and re-enable buttons and text box and change cursor
            if (response == (""))
            {
                sourceForm.errorMessage("The connection timed out, please try again.");
                sourceForm.btn_Login.Enabled = true; sourceForm.tb_PasswordInput.Enabled = true; sourceForm.tb_UsernameInput.Enabled = true;
                sourceForm.btn_Login.Text    = "Login";
                sourceForm.Cursor            = Cursors.Default;
                return;
            }
            ;

            //Exit with error on failed login and re-enable buttons and text box and change cursor
            if (response.StartsWith("LOGIN_FAIL"))
            {
                sourceForm.errorMessage("Login failed, please check your username and password then try again.");
                sourceForm.btn_Login.Enabled = true; sourceForm.tb_PasswordInput.Enabled = true; sourceForm.tb_UsernameInput.Enabled = true;
                sourceForm.btn_Login.Text    = "Login";
                sourceForm.Cursor            = Cursors.Default;
                return;
            }
            ;

            //Exit with error on unknown response and re-enable buttons and text box and change cursor
            if (!response.StartsWith("LOGIN_SUCCESS"))
            {
                sourceForm.errorMessage("Unknown response received, login failed.");
                sourceForm.btn_Login.Enabled = true; sourceForm.tb_PasswordInput.Enabled = true; sourceForm.tb_UsernameInput.Enabled = true;
                sourceForm.btn_Login.Text    = "Login";
                sourceForm.Cursor            = Cursors.Default;
                return;
            }
            ;

            //  Logged in successfully
            //Change button text
            sourceForm.btn_Login.Text = "Loading";
            //Split response into array
            //Remove [ and ] from data
            response = response.TrimStart(new char[] { '[' });
            response = response.TrimEnd(new char[] { ']' });
            //Split data by : char
            string[] responseArray = response.Split(':');
            //Extract communication GUID from response
            UInt32 communicationGUID = Convert.ToUInt32(responseArray[1]);
            //Extract database id from response
            UInt32 databaseID = Convert.ToUInt32(responseArray[2]);
            //Extract privilege level from response
            string privilegeLevel = responseArray[3];
            //Extract personal info from response
            List <string> personalInfo = new List <string>();

            personalInfo.Add(responseArray[4]);
            personalInfo.Add(responseArray[6]);
            personalInfo.Add(responseArray[7]);
            personalInfo.Add(responseArray[8]);
            personalInfo.Add(responseArray[9]);
            personalInfo.Add(responseArray[10]);
            personalInfo.Add(responseArray[11]);
            personalInfo.Add(responseArray[12]);
            personalInfo.Add(responseArray[13]);
            personalInfo.Add(responseArray[14]);
            personalInfo.Add(responseArray[15]);
            personalInfo.Add(responseArray[16]);
            personalInfo.Add(responseArray[17]);
            personalInfo.Add(responseArray[18]);

            //Decide what to do next based on privilage level
            switch (privilegeLevel.ToUpper())
            {
            case "VENUEMANAGER":
            {
                Console.WriteLine("Setting up Venue Manager login...");
                //Create venue manager object, with data included

                //Load venue manager interface

                break;
            }

            case "AGENT":
            {
                Console.WriteLine("Setting up Agent login...");
                //Create agent object, with data included

                //Load customer interface for agent

                break;
            }

            case "CUSTOMER":
            {
                Console.WriteLine("Setting up Customer login...");
                //Create customer object, with data included

                //Load customer interface


                break;
            }

            default:
            {
                //Unknown user type, show error
                sourceForm.errorMessage("Unknown response received, login failed.");
                break;
            }
            }
        }
Exemplo n.º 2
0
        private void HandleDataRequest(Form sourceForm, string dataRequest, Socket client)
        {
            SByte typeNum = 0;

            //Get Form Type
            if (sourceForm.GetType().Name == "Form")
            {
                typeNum = 0;
            }
            ;
            if (sourceForm.GetType().Name == "LoginForm")
            {
                typeNum = 1;
            }
            ;
            if (sourceForm.GetType().Name == "RegistrationForm")
            {
                typeNum = 2;
            }
            ;

            //Use form type
            switch (typeNum)
            {
            //Login Form
            case 1: {
                //Parse form as it's own data type
                LoginForm srcFrm = (LoginForm)sourceForm;

                //Login
                if (dataRequest.Contains("LOGIN"))
                {
                    Req_Login(srcFrm, dataRequest, client);
                }
                ;

                //Exit Switch
                break;
            }

            //Registration Form
            case 2: {
                //Parse form as it's own data type
                RegistrationForm srcFrm = (RegistrationForm)sourceForm;

                //Register account
                if (dataRequest.Contains("ADD_USER"))
                {
                    Req_Register(srcFrm, dataRequest, client);
                }
                ;

                //Exit Switch
                break;
            }

            default: {
                //Wait for response, set cursor to wait
                sourceForm.Cursor = Cursors.WaitCursor;
                Thread.Sleep(1000);
                sourceForm.Cursor = Cursors.Default;

                //Exit switch
                break;
            }
            }
        }