Esempio n. 1
0
        public async Task <string> Actualizar(Usuario objActualizar)
        {
            string respuesta = string.Empty;

            try
            {
                var usuarioDb = await context.Usuarios.FirstOrDefaultAsync(x => x.UsuarioId == objActualizar.UsuarioId);

                if (usuarioDb == null)
                {
                    return("No se encontró el usuario a actualizar");
                }

                var entrada = mapper.Map(objActualizar, usuarioDb);

                if (objActualizar.Clave != "")
                {
                    //gerar un salt random
                    var rng       = RandomNumberGenerator.Create();
                    var saltBytes = new byte[32];
                    rng.GetBytes(saltBytes);
                    var saltText = Convert.ToBase64String(saltBytes);

                    //generar el password salteado y hasheado
                    var saltedAndHashedPassword = protector.SaltAndHashPassword(objActualizar.Clave, saltText);

                    entrada.Clave = saltedAndHashedPassword;
                    entrada.Salt  = saltText;
                }

                context.Entry(entrada).State = EntityState.Modified;

                respuesta = await context.SaveChangesAsync() > 0 ? "OK" : "No se pudo actualizar el registro";
            }
            catch (Exception ex)
            {
                respuesta = ex.InnerException != null ? ex.InnerException.Message : ex.Message;
            }
            return(respuesta);
        }