public async Task<ActionResult> Perfil()
        {

            EditarUsuario editar = new EditarUsuario();

            var user = await UserManager.FindByNameAsync(User.Identity.Name);
            StringHash  texto = new StringHash();
            editar.id = user.Id;
            editar.apellido1 = user.apellido1;
            editar.apellido2 = user.apellido2;
            editar.nombre = user.nombre;
            editar.perfil = user.perfil;
            editar.telefono = user.telefono;
            editar.email = user.email;
            editar.UserName = user.UserName;
            editar.cod_secreto = texto.Decrypt(user.cod_secreto,true,editar.UserName);

            return View(editar);
        }
        public async Task<ActionResult> Nuevo(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {

                StringHash cod_secreto = new StringHash();
                TextoAleatorio text = new TextoAleatorio();

                var user = new ApplicationUser() { UserName = model.UserName,
                                                   nombre = model.nombre,
                                                   apellido1= model.apellido1,
                                                   apellido2 = model.apellido2,
                                                   telefono = model.telefono,
                                                   email= model.email,
                                                   fecha_creado = DateTime.Now,
                                                   cod_secreto = cod_secreto.Encrypt(text.Texto(), true, model.UserName)                                           
                };
                var result = await UserManager.CreateAsync(user, model.Password);
                if (result.Succeeded)
                {
                    //Crea Rol por defecto
                    var rol = await UserManager.AddToRoleAsync(user.Id,"Lector");

                    UsuariosGrupo inGrupo = new UsuariosGrupo();
                    inGrupo.idgrupousuario = "8127f8b1-ff6e-4b21-bdd1-c3c9d1f9e440";
                    inGrupo.idusuario = user.Id;

                    Conexion db = new Conexion();
                    db.UsuariosGrupo.Add(inGrupo);
                    db.SaveChanges();

                    Historial nuevo = new Historial("Creó", User.Identity.GetUserId(), "usuario", user.Id, user.UserName, Request.UserHostAddress);

                    //Para Crearlo y automaticamente longuearlo
                    //await SignInAsync(user, isPersistent: false);
                    return RedirectToAction("Editar", "Acceso", new {id=user.Id });
                }
                else
                {
                    AddErrors(result);
                }
            }

            // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario
            return View(model);
        }
        public async Task<ActionResult> Editar(EditarPerfilUsuario model)
        {
            if (ModelState.IsValid)
            {
                StringHash text = new StringHash();

                var user = await UserManager.FindByNameAsync(User.Identity.Name);
                user.nombre = model.nombre;
                user.apellido1 = model.apellido1;
                user.apellido2 = model.apellido2;
                user.telefono = model.telefono;
                user.email = model.email;
                user.cod_secreto = text.Encrypt(model.cod_secreto,true,user.UserName);

                var result = await UserManager.UpdateAsync(user);

                if (result.Succeeded)
                {
                    Historial nuevo = new Historial("Modificó su Perfil", User.Identity.GetUserId(), "usuario",Request.UserHostAddress);

                    TempData["Mensaje"] = "Datos del Usuario modificados correctamente.";

                    //Para Crearlo y automaticamente longuearlo
                    //await SignInAsync(user, isPersistent: false);
                    return RedirectToAction("Perfil", "Usuarios");
                }
                else
                {
                    AddErrors(result);
                }
            }


            // Si llegamos a este punto, es que se ha producido un error y volvemos a mostrar el formulario
            TempData["Mensaje"] = "Error al modificar los datos.";
            return RedirectToAction("Perfil", "Usuarios");
        }