Пример #1
0
        private void LblAceptar_Click(object sender, EventArgs e)
        {
            //Valido que las contraseñas coincidan
            if (TxtContrasena.Text != TxtContrasenaRepetida.Text)
            {
                MessageBox.Show("Las contrasenas informadas no coinciden.", "Atención");
            }
            else
            {
                //Encripto la nueva contraseña
                var hashedPassword = SHA256Helper.Encode(TxtContrasena.Text);

                //Impacto el cambio en la base de datos
                UsuarioPersistance.ChangePassword(this.currentUser, hashedPassword);
                //Vuelvo a traer el usuario porque cambió
                SessionManager.CurrentUser = UsuarioPersistance.GetByUsername(this.currentUser.Username);

                Close();
            }
        }
Пример #2
0
        private void DoLogin(string userName, string password)
        {
            try
            {
                //Realizo validaciones de datos ingresados
                if (string.IsNullOrEmpty(userName))
                {
                    throw new Exception("El usuario no puede ser vacío.");
                }

                if (string.IsNullOrEmpty(password))
                {
                    throw new Exception("La contraseña no puede ser vacía.");
                }

                //Valido que los datos del usuario ingresados sean correctos
                var user = UsuarioPersistance.Login(userName, password);

                //El usuario no se encuentra habilitado
                if (!user.Habilitado)
                {
                    throw new Exception("No puede loguearse. El usuario se encuentra inhabilitado debido a que acumula más de 10 compras sin rendir. Por favor, acérquese a la oficina de administración.");
                }

                //Pregunto si por lo menos tiene un rol asignado que se encuentre activo
                if (user.RolesActivos != null)
                {
                    //Seteo el usuario en sesion
                    SessionManager.CurrentUser = user;

                    //Mientras que el usuario posea una contraseña temporal, lo obligo a que la cambie
                    while (SessionManager.CurrentUser.PassTemporal)
                    {
                        MessageBox.Show("Posee una contraseña temporal. Debera cambiarla a continuacion.", "Atención");

                        //Muestro el formulario para el cambio de contraseña
                        var resetPassword = new FrmResetPassword();
                        resetPassword.ShowDialog();

                        //Refresco el currentUser por si ya lo modificó
                        SessionManager.CurrentUser = UsuarioPersistance.GetByUsername(SessionManager.CurrentUser.Username);
                    }

                    Hide();

                    if (user.RolesActivos.Count > 1)
                    {
                        //Posee mas de un rol activo asignado, debe seleccionar uno solo
                        var chooseRol = new FrmChooseRol();
                        chooseRol.ShowDialog();
                    }
                    else
                    {
                        //Posee un unico rol asignado activo. Lo seteo en sesion.
                        SessionManager.CurrentRol = user.RolesActivos.First();

                        //Muestro el formulario de home
                        var home = new FrmHome();
                        home.ShowDialog();
                    }

                    Close();
                }
                else
                {
                    throw new Exception("El usuario no cuenta con roles que se encuentren activos.");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Atención");
            }
        }
Пример #3
0
        private void LblGrabar_Click(object sender, EventArgs e)
        {
            try
            {
                #region Validaciones
                var exceptionMessage = string.Empty;

                if (string.IsNullOrEmpty(TxtUsuario.Text))
                {
                    throw new Exception("El usuario no puede ser vacío.");
                }

                if (string.IsNullOrEmpty(TxtContrasena.Text))
                {
                    throw new Exception("La contraseña no puede ser vacía.");
                }

                if (UsuarioPersistance.GetByUsername(TxtUsuario.Text) != null)
                {
                    exceptionMessage += Environment.NewLine + "Ya existe un usuario con el nombre ingresado.";
                }


                if (!string.IsNullOrEmpty(exceptionMessage))
                {
                    throw new Exception(exceptionMessage);
                }
                #endregion

                #region Inserto el nuevo usuario

                var user = new Usuario();
                user.Username = TxtUsuario.Text;
                user.Password = SHA256Helper.Encode(TxtContrasena.Text);

                var dialogAnswer = MessageBox.Show("Esta seguro que quiere insertar el nuevo usuario?", "Atencion", MessageBoxButtons.YesNo);
                if (dialogAnswer == DialogResult.Yes)
                {
                    using (var transaction = DataBaseManager.Instance().Connection.BeginTransaction(IsolationLevel.Serializable))
                    {
                        if (_abmEmpresa || _abmCliente)
                        {
                            user = UsuarioPersistance.InsertUserTemporal(user, transaction);
                        }
                        else
                        {
                            user = UsuarioPersistance.InsertUser(user, transaction);
                        }

                        Rol selectedRol = (Rol)CboRoles.SelectedItem;
                        RolPersistance.InsertUserRole(user, selectedRol, transaction);

                        if (!_abmEmpresa && !_abmCliente)
                        {
                            //Cargo los datos en sesion
                            SessionManager.CurrentUser = user;
                            SessionManager.CurrentRol  = selectedRol;
                            SessionManager.CurrentRol.Funcionalidades = FuncionalidadPersistance.GetByRole(SessionManager.CurrentRol, transaction);
                        }

                        switch (selectedRol.Descripcion)
                        {
                        case "Cliente":
                            this.Hide();
                            var frmABMInsertUpdateCliente = new FrmABMInsertUpdateCliente(transaction, _abmCliente, user);
                            frmABMInsertUpdateCliente.ShowDialog();
                            break;

                        case "Empresa":
                            this.Hide();
                            var frmABMInsertUpdateEmpresa = new FrmABMInsertUpdateEmpresa(transaction, _abmEmpresa, user);
                            frmABMInsertUpdateEmpresa.ShowDialog();
                            break;

                        default:
                            transaction.Commit();
                            this.Hide();
                            var frmHome = new FrmHome();
                            frmHome.ShowDialog();
                            break;
                        }
                    }
                }
                #endregion
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Atención");
            }
        }