Ejemplo n.º 1
0
        //Start Application or Change User
        private void ProcessLogin(SYS_UserDetail pUserDetail)
        {
            GlobalFramework.LoggedUser            = pUserDetail;
            GlobalFramework.LoggedUserPermissions = FrameworkUtils.GetUserPermissions();
            FrameworkUtils.Audit("USER_LOGIN", string.Format(Resx.audit_message_user_login, pUserDetail.Name));

            //SessionApp Add LoggedUser
            if (!GlobalFramework.SessionApp.LoggedUsers.ContainsKey(GlobalFramework.LoggedUser.Oid))
            {
                GlobalFramework.SessionApp.LoggedUsers.Add(pUserDetail.Oid, FrameworkUtils.CurrentDateTimeAtomic());
            }
            else
            {
                GlobalFramework.SessionApp.LoggedUsers[GlobalFramework.LoggedUser.Oid] = FrameworkUtils.CurrentDateTimeAtomic();
            }
            GlobalFramework.SessionApp.Write();

            //Returns to default mode
            _mode = NumberPadPinMode.Password;
            UpdateStatusLabels();

            //Process Notifications After Login/Create First Time PosWindow
            //Disabled SystemNotification and ShowNotifications. Moved to Startup Window
            //FrameworkUtils.SystemNotification();
            //Utils.ShowNotifications(_sourceWindow, pUserDetail.Oid);
            Utils.ShowFrontOffice(_sourceWindow);
        }
Ejemplo n.º 2
0
        //:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
        //Logic

        public bool ProcessPassword(Window pSourceWindow, sys_userdetail pUserDetail)
        {
            bool result = false;

            try
            {
                switch (_mode)
                {
                case NumberPadPinMode.Password:
                    //Valid User
                    if (ValidatePassword(pUserDetail))
                    {
                        //Start Application
                        ProcessLogin(pUserDetail);
                        //Finish Job usefull to PosPinDialog send Respond(ResponseType.Ok) when Done
                        result = true;
                    }
                    break;

                case NumberPadPinMode.PasswordOld:
                    //Valid User
                    if (ValidatePassword(pUserDetail))
                    {
                        _mode = NumberPadPinMode.PasswordNew;
                        UpdateStatusLabels();
                    }
                    break;

                case NumberPadPinMode.PasswordNew:
                    //Check If New Password is Equal to Old Password using ValidatePassword
                    if (CryptographyUtils.SaltedString.ValidateSaltedString(pUserDetail.AccessPin, _entryPin.Text))
                    {
                        //Show Error Message
                        ResponseType responseType = Utils.ShowMessageTouch(pSourceWindow, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, resources.CustomResources.GetCustomResources(GlobalFramework.Settings["customCultureResourceDefinition"], "window_title_dialog_change_password"), resources.CustomResources.GetCustomResources(GlobalFramework.Settings["customCultureResourceDefinition"], "pos_pinpad_message_password_equal_error"));
                        ClearEntryPinStatusMessage(true);
                    }
                    else
                    {
                        _passwordNew = _entryPin.Text;
                        _mode        = NumberPadPinMode.PasswordNewConfirm;
                        UpdateStatusLabels();
                    }
                    break;

                case NumberPadPinMode.PasswordNewConfirm:
                    if (_passwordNew == _entryPin.Text)
                    {
                        //Commit Changes
                        pUserDetail.AccessPin         = CryptographyUtils.SaltedString.GenerateSaltedString(_passwordNew);
                        pUserDetail.PasswordReset     = false;
                        pUserDetail.PasswordResetDate = FrameworkUtils.CurrentDateTimeAtomic();
                        pUserDetail.Save();
                        FrameworkUtils.Audit("USER_CHANGE_PASSWORD", string.Format(resources.CustomResources.GetCustomResources(GlobalFramework.Settings["customCultureResourceDefinition"], "audit_message_user_change_password"), pUserDetail.Name));
                        ResponseType responseType = Utils.ShowMessageTouch(pSourceWindow, DialogFlags.Modal, MessageType.Info, ButtonsType.Ok, resources.CustomResources.GetCustomResources(GlobalFramework.Settings["customCultureResourceDefinition"], "window_title_dialog_change_password"), resources.CustomResources.GetCustomResources(GlobalFramework.Settings["customCultureResourceDefinition"], "pos_pinpad_message_password_changed"));
                        //Start Application
                        ProcessLogin(pUserDetail);
                        //Finish Job usefull to PosPinDialog send Respond(ResponseType.Ok) when Done
                        result = true;
                    }
                    else
                    {
                        //Show Error Message
                        ResponseType responseType = Utils.ShowMessageTouch(pSourceWindow, DialogFlags.Modal, MessageType.Error, ButtonsType.Ok, resources.CustomResources.GetCustomResources(GlobalFramework.Settings["customCultureResourceDefinition"], "window_title_dialog_change_password"), resources.CustomResources.GetCustomResources(GlobalFramework.Settings["customCultureResourceDefinition"], "pos_pinpad_message_password_confirmation_error"));
                        ClearEntryPinStatusMessage(true);
                        //Return to
                        _mode = NumberPadPinMode.PasswordNew;
                        UpdateStatusLabels();
                        //Reset passwordNew
                        _passwordNew = string.Empty;
                    }
                    break;

                case NumberPadPinMode.PasswordReset:
                    //Valid User
                    if (ValidatePassword(pUserDetail))
                    {
                        _mode = NumberPadPinMode.PasswordNew;
                        UpdateStatusLabels();
                    }
                    //Return to default request password mode
                    else
                    {
                        _mode = NumberPadPinMode.Password;
                    }
                    break;

                default:
                    break;
                }

                //Always focus Entry
                _entryPin.GrabFocus();
            }
            catch (Exception ex)
            {
                _log.Error(ex.Message, ex);
            }

            return(result);
        }