Пример #1
0
        public String CalculateHash()
        {
            HashSha256 sha256         = new HashSha256();
            String     calculatedhash = sha256.Hash(
                previousHash +
                timeStamp.ToString() +
                nonce.ToString() +
                data);

            return(calculatedhash);
        }
Пример #2
0
 public int CrearUsuarioConValores(String username, String password)
 {
     query = "NET_A_CERO.pr_crear_usuario_con_valores";
     parametros.Clear();
     parametroOutput           = new SqlParameter("@usuario_id", SqlDbType.Int);
     parametroOutput.Direction = ParameterDirection.Output;
     parametros.Add(new SqlParameter("@username", username));
     parametros.Add(new SqlParameter("@password", HashSha256.getHash(password)));
     parametros.Add(new SqlParameter("@is_admin", "0"));
     parametros.Add(parametroOutput);
     command             = QueryBuilder.Instance.build(query, parametros);
     command.CommandType = CommandType.StoredProcedure;
     command.ExecuteNonQuery();
     return((int)parametroOutput.Value);
 }
Пример #3
0
        public async Task <UserResponse> RegisterUserAsync(RegisterUserModel model)
        {
            var eu = await db.tbUsers.FirstOrDefaultAsync(x => x.Username == model.Username);

            if (eu != null)
            {
                return new UserResponse()
                       {
                           Status = 0, StatusMessage = "User exits"
                       }
            }
            ;

            var role = db.spRoles.Find(1);

            if (role == null)
            {
                var r = new spRole();

                r.Name       = "Admin";
                r.UserAccess = ",999";
                await db.spRoles.AddAsync(r);

                await db.SaveChangesAsync();
            }


            var u = new tbUser();

            u.FirstName = model.FirstName;
            u.LastName  = model.LastName;
            u.Username  = model.Username;
            u.Password  = HashSha256.Get(model.Password);
            u.EMail     = model.EMail;
            u.RoleId    = 1;

            await db.tbUsers.AddAsync(u);

            await db.SaveChangesAsync();

            return(await AuthenticateAsync(new UserRequest()
            {
                Username = model.Username, Password = model.Password
            }));
        }
    }
Пример #4
0
        public async Task <UserResponse> AuthenticateAsync(UserRequest request)
        {
            UserResponse usr = new UserResponse();


            var res = await db.tbUsers.Include(x => x.Role)
                      .FirstOrDefaultAsync(x => x.Username == request.Username && x.Password == HashSha256.Get(request.Password));

            if (res == null)
            {
                return new UserResponse()
                       {
                           Status = 0, StatusMessage = "Not found user"
                       }
            }
            ;

            var SecretStr       = config.GetSection("JwtToken:SecretKey").Value;
            var key             = Encoding.ASCII.GetBytes(SecretStr);
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[]
                {
                    new Claim(ClaimTypes.Name, res.Id.ToString()),
                    new Claim(ClaimTypes.Role, res.Role.UserAccess)
                }),
                Expires            = DateTime.UtcNow.AddYears(10),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };

            var tokenHandler = new JwtSecurityTokenHandler();
            var token        = tokenHandler.CreateToken(tokenDescriptor);

            usr.Token     = tokenHandler.WriteToken(token);
            usr.FirstName = res.FirstName;
            usr.LastName  = res.LastName;
            usr.Username  = res.Username;
            usr.Access    = res.Role.UserAccess;
            usr.Status    = 1;
            usr.Id        = res.Id;

            return(usr);
        }
Пример #5
0
        private void botonIngresar_Click(object sender, EventArgs e)
        {
            //Validamos que ingrese usuario y contraseña
            if (this.textBoxUsuario.Text == "")
            {
                MessageBox.Show("Debe ingresar un usuario");
                return;
            }

            if (this.textBoxContaseña.Text == "")
            {
                MessageBox.Show("Debe ingresar una contraseña");
                return;
            }


            // Nos fijamos si el usuario y contraseña existen y esta habilitado
            String query = "SELECT * FROM NET_A_CERO.Usuarios WHERE usr_usuario = @username AND usr_password = @password AND usr_activo = 1";

            String usuario = this.textBoxUsuario.Text;
            // valida contraseña encriptada
            String contraseña = HashSha256.getHash(this.textBoxContaseña.Text);

            IList <SqlParameter> parametros = new List <SqlParameter>();

            parametros.Add(new SqlParameter("@username", usuario));
            parametros.Add(new SqlParameter("@password", contraseña));

            SqlDataReader reader = QueryHelper.Instance.exec(query, parametros);

            //Chequea el ingreso
            if (QueryHelper.Instance.readFrom(reader))
            {
                MessageBox.Show("Bienvenido " + reader["usr_usuario"] + "!");

                UsuarioSesion.Usuario.nombre = (String)reader["usr_usuario"];
                UsuarioSesion.Usuario.id     = (Int32)reader["usr_id"];

                // Usuario logueado correctamente (intentos fallidos = 0)
                parametros.Clear();
                parametros.Add(new SqlParameter("@username", usuario));
                String clearIntentosFallidos = "UPDATE NET_A_CERO.Usuarios SET usr_intentos = 0 WHERE usr_usuario = @username";
                QueryBuilder.Instance.build(clearIntentosFallidos, parametros).ExecuteNonQuery();

                // Se fija si es el primer inicio de sesion del usuario
                parametros.Clear();
                parametros.Add(new SqlParameter("@username", usuario));
                String sesion       = "SELECT usr_password FROM NET_A_CERO.Usuarios WHERE usr_usuario = @username";
                String primerInicio = (String)QueryBuilder.Instance.build(sesion, parametros).ExecuteScalar();
                //El primer inicio la contraseña es fija (OK)
                if (primerInicio == "565339bc4d33d72817b583024112eb7f5cdf3e5eef0252d6ec1b9c9a94e12bb3")
                {
                    this.Hide();
                    new CambiarContrasena().ShowDialog();
                    this.Close();
                }

                parametros.Clear();
                parametros.Add(new SqlParameter("@username", usuario));

                String consultaRoles   = "SELECT COUNT(rol_id) FROM NET_A_CERO.Usuarios_x_Rol WHERE (SELECT usr_id FROM NET_A_CERO.Usuarios WHERE usr_usuario = @username) = usr_id";
                int    cantidadDeRoles = (int)QueryBuilder.Instance.build(consultaRoles, parametros).ExecuteScalar();

                if (cantidadDeRoles > 1)
                {
                    this.Hide();
                    new ElegirRol().ShowDialog();
                    this.Close();
                }
                else
                {
                    parametros.Clear();
                    parametros.Add(new SqlParameter("@username", usuario));
                    String rolDeUsuario = "SELECT r.rol_nombre FROM NET_A_CERO.Roles r, NET_A_CERO.Usuarios_x_Rol ru, NET_A_CERO.Usuarios u WHERE r.rol_id = ru.rol_id AND ru.usr_id = u.usr_id AND u.usr_usuario = @username";
                    String rolUser      = (String)QueryBuilder.Instance.build(rolDeUsuario, parametros).ExecuteScalar();

                    UsuarioSesion.Usuario.rol = rolUser;
                    if (UsuarioSesion.Usuario.rol == null)
                    {
                        MessageBox.Show("No existen roles para iniciar sesion");
                        return;
                    }

                    // Para testear si elige bien el rol: MessageBox.Show("Rol: " + UsuarioSesion.Usuario.rol);

                    this.Hide();
                    new MenuPrincipal().ShowDialog();
                    this.Close();
                }
            }
            else
            {
                // Se fija si el usuario era correcto
                parametros.Clear();
                parametros.Add(new SqlParameter("@username", usuario));
                String        buscaUsuario = "SELECT * FROM NET_A_CERO.Usuarios WHERE usr_usuario = @username";
                SqlDataReader lector       = QueryBuilder.Instance.build(buscaUsuario, parametros).ExecuteReader();

                if (lector.Read())
                {
                    // Se fija si el usuario esta inhabilitado
                    parametros.Clear();
                    parametros.Add(new SqlParameter("@username", usuario));
                    parametros.Add(new SqlParameter("@password", contraseña));
                    String estaDeshabilitado = "SELECT * FROM NET_A_CERO.Usuarios WHERE usr_usuario = @username AND usr_activo = 0";

                    SqlDataReader userDeshabilitado = QueryBuilder.Instance.build(estaDeshabilitado, parametros).ExecuteReader();

                    if (userDeshabilitado.Read())
                    {
                        MessageBox.Show("El usuario esta deshabilitado");
                        return;
                    }

                    // Suma un fallido
                    parametros.Clear();
                    parametros.Add(new SqlParameter("@username", usuario));
                    String sumaFallido = "UPDATE NET_A_CERO.Usuarios SET usr_intentos = usr_intentos + 1 WHERE usr_usuario = @username";
                    QueryBuilder.Instance.build(sumaFallido, parametros).ExecuteNonQuery();


                    // Si es el tercer fallido se deshabilita al usuario
                    parametros.Clear();
                    parametros.Add(new SqlParameter("@username", usuario));
                    String cantidadFallidos = "SELECT usr_intentos FROM NET_A_CERO.Usuarios WHERE usr_usuario = @username";
                    int    intentosFallidos = Convert.ToInt32(QueryBuilder.Instance.build(cantidadFallidos, parametros).ExecuteScalar());

                    if (intentosFallidos == 3)
                    {
                        parametros.Clear();
                        parametros.Add(new SqlParameter("@username", usuario));
                        String deshabilitar = "UPDATE NET_A_CERO.Usuarios SET usr_activo = 0 WHERE usr_usuario = @username";
                        QueryBuilder.Instance.build(deshabilitar, parametros).ExecuteNonQuery();
                    }
                    MessageBox.Show("Contraseña incorrecta." + '\n' + '\n' + "La contraseña distingue mayusculas y minusculas." + '\n' + '\n' + "Fallidos del usuario: " + intentosFallidos);
                }
                else
                {
                    MessageBox.Show("El usuario no existe");
                }
            }
        }
Пример #6
0
        private void btnLogin_Click(object sender, EventArgs e)
        {
            if (this.username.Text == "")
            {
                MessageBox.Show("Debe ingresar un usuario", "Login Usuario");
                return;
            }

            if (this.password.Text == "")
            {
                MessageBox.Show("Debe ingresar una contraseña", "Login Usuario");
                return;
            }

            var con = new Conexion();

            con.query = "SELECT * FROM ONEFORALL.USUARIOS WHERE USER_USUARIO = '" + username.Text + "' AND USER_PASSWORD='******' AND USER_ACTIVO = 1 ;";

            con.leer();

            if (con.leerReader())
            {
                MessageBox.Show("Bienvenido " + con.lector.GetString(1) + "!");

                SesionUsuario.user.id       = con.lector.GetInt32(0);
                SesionUsuario.user.username = con.lector.GetString(1);

                con.cerrarConexion();
                con.query = "UPDATE ONEFORALL.USUARIOS SET USER_INTENTOS = 0 WHERE USER_ID =" + SesionUsuario.usuario.id;
                con.ejecutar();

                if (!SesionUsuario.usuario.tieneRolesActivos())
                {
                    MessageBox.Show("El usuario no posee Roles activos", "Login Usuario", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                //SesionUsuario.user.cargarFuncionalidadesRol();

                this.Hide();
                con.query = string.Format("SELECT COUNT(*) FROM ONEFORALL.USUARIO_X_ROL WHERE USERX_ID = {0}", SesionUsuario.user.id);
                con.leer();
                if (con.leerReader())
                {
                    if (con.lector.GetInt32(0) > 1)
                    {
                        new ElegirSucursalYRol().Show();
                    }
                    else
                    {
                        con.cerrarConexion();
                        con.query = string.Format("SELECT COUNT(*) FROM ONEFORALL.USUARIO_X_SUCURSAL WHERE USERX_ID = {0}", SesionUsuario.user.id);
                        con.leer();
                        if (con.leerReader())
                        {
                            if (con.lector.GetInt32(0) > 1)
                            {
                                new ElegirSucursalYRol().Show();
                                SesionUsuario.usuario.cargarFuncionalidadesRol();
                            }
                            else
                            {
                                SesionUsuario.CargarSucursalYRol();
                                new MenuPrincipal().ShowDialog();
                            }
                        }
                    }
                    con.cerrarConexion();
                }
            }
            else
            {
                con.query = "SELECT * FROM ONEFORALL.USUARIOS WHERE USER_USUARIO = '" + username.Text + "';";
                var intentosfallidos = 0;
                con.cerrarConexion();

                con.leer();

                if (con.leerReader())
                {
                    intentosfallidos = con.lector.GetByte(4);

                    if (!con.lector.GetBoolean(3))
                    {
                        MessageBox.Show("Su usuario se encuentra deshabilitado", "Login Usuario");
                        return;
                    }

                    con.cerrarConexion();
                    con.query = "UPDATE ONEFORALL.USUARIOS SET USER_INTENTOS = USER_INTENTOS + 1 WHERE USER_USUARIO='" + username.Text + "';";
                    con.ejecutar();

                    if (intentosfallidos >= 3)
                    {
                        con.query = "UPDATE ONEFORALL.USUARIOS SET USER_ACTIVO = 0 WHERE USER_USUARIO='" + username.Text + "';";
                        con.ejecutar();
                    }
                    MessageBox.Show("Ingrese nuevamente la contraseña", "Login Usuario");
                    con.cerrarConexion();
                    return;
                }
                else
                {
                    MessageBox.Show("El usuario no existe", "Login Usuario");
                    con.cerrarConexion();
                    return;
                }
            }
        }
Пример #7
0
        private void btnContinuar_Click(object sender, EventArgs e)
        {
            if (textBoxContraseña.Text == "")
            {
                MessageBox.Show("Debe ingresar una nueva contraseña");
                return;
            }

            if (textBoxRepetirContraseña.Text == "")
            {
                MessageBox.Show("Debe ingresar nuevamenta la contraseña");
                return;
            }
            if (textBoxContraseña.Text.Length < 8)
            {
                MessageBox.Show("La contraseña debe tener por lo menos 8 caracteres");
                return;
            }

            if (textBoxContraseña.Text != textBoxRepetirContraseña.Text)
            {
                MessageBox.Show("La contraseña no coincide, ingrese nuevamente");
                textBoxContraseña.Clear();
                textBoxRepetirContraseña.Clear();
                return;
            }


            // Actualiza contraseña
            IList <SqlParameter> parametros = new List <SqlParameter>();

            parametros.Add(new SqlParameter("@username", UsuarioSesion.Usuario.nombre));
            parametros.Add(new SqlParameter("@pass", HashSha256.getHash(textBoxContraseña.Text)));
            String nuevaPass = "******";

            QueryBuilder.Instance.build(nuevaPass, parametros).ExecuteNonQuery();

            // Asigna el rol
            parametros.Clear();
            parametros.Add(new SqlParameter("@username", UsuarioSesion.Usuario.nombre));

            String consultaRoles   = "SELECT COUNT(rol_id) from NET_A_CERO.Usuarios_x_Rol WHERE (SELECT usr_id FROM NET_A_CERO.Usuarios WHERE usr_usuario = @username) = usr_id";
            int    cantidadDeRoles = (int)QueryBuilder.Instance.build(consultaRoles, parametros).ExecuteScalar();

            if (cantidadDeRoles > 1)
            {
                this.Hide();
                new ElegirRol().ShowDialog();
                this.Close();
            }
            else
            {
                parametros.Clear();
                parametros.Add(new SqlParameter("@username", UsuarioSesion.Usuario.nombre));
                String rolDeUsuario = "SELECT r.rol_nombre FROM NET_A_CERO.Roles r, NET_A_CERO.Usuarios_x_Rol ru, NET_A_CERO.Usuarios u WHERE r.rol_id = ru.rol_id and ru.usr_id = u.usr_id and u.usr_usuario = @username";
                String rolUser      = (String)QueryBuilder.Instance.build(rolDeUsuario, parametros).ExecuteScalar();

                UsuarioSesion.Usuario.rol = rolUser;

                this.Hide();
                new MenuPrincipal().ShowDialog();
                this.Close();
            }
        }