public IActionResult ActivarCuenta(int codigo)
        {
            controlcuentasContext Context = new controlcuentasContext();
            UsuarioRepository     repos   = new UsuarioRepository(Context);
            var user = Context.Usuario.FirstOrDefault(x => x.Codigo == codigo);

            if (user != null && user.Activo == 0)
            {
                var cod = user.Codigo;

                if (codigo == cod)
                {
                    user.Activo = 1;
                    repos.Update(user);

                    return(RedirectToAction("IniciarSesion"));
                }
                else
                {
                    ModelState.AddModelError("", "El codigo no coincide");
                    return(View((object)codigo));
                }
            }
            else
            {
                ModelState.AddModelError("", "No se encontro el usuario");
                return(View((object)codigo));
            }
        }
        public IActionResult Registrar(Usuario u, string contraseña1, string contraseña2)
        {
            controlcuentasContext Context = new controlcuentasContext();

            try
            {
                if (Context.Usuario.Any(x => x.Correo == u.Correo))
                {
                    ModelState.AddModelError("", "Ya existe una cuenta registrada con este correo");
                    return(View(u));
                }
                else
                {
                    if (contraseña1 == contraseña2)
                    {
                        Repository <Usuario> repos = new Repository <Usuario>(Context);
                        u.Contraseña = HashingHelpers.GetHash(contraseña1);
                        u.Codigo     = CodigoHelper.GetCodigo();
                        u.Activo     = 0;
                        repos.Insert(u);


                        MailMessage message = new MailMessage();
                        message.From = new MailAddress("[email protected] ", "AnimeFull");
                        message.To.Add(u.Correo);
                        message.Subject = "Confirma tu correo";


                        string mensaje = System.IO.File.ReadAllText(Environment.WebRootPath + "/Correo.html");
                        message.IsBodyHtml = true;
                        message.Body       = mensaje.Replace("{##Codigo##}", u.Codigo.ToString());

                        SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
                        client.EnableSsl             = true;
                        client.UseDefaultCredentials = false;
                        client.Credentials           = new NetworkCredential("*****@*****.**", "sistemas7g");
                        client.Send(message);


                        List <Claim> informacion = new List <Claim>();
                        informacion.Clear();
                        informacion.Add(new Claim("CorreoActivar", u.Correo));

                        return(RedirectToAction("ActivarCuenta"));
                    }
                    else
                    {
                        ModelState.AddModelError("", "Las contraseñas no coinciden");
                        return(View(u));
                    }
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View(u));
            }
        }
        public async Task <IActionResult> IniciarSesion(Usuario u, bool persistant)
        {
            controlcuentasContext Context = new controlcuentasContext();

            UsuarioRepository repos = new UsuarioRepository(Context);

            var usuario = repos.GetUsuarioByCorreo(u.Correo);

            if (usuario != null && HashingHelpers.GetHash(u.Contraseña) == usuario.Contraseña)
            {
                if (usuario.Activo == 1)
                {
                    List <Claim> informacion = new List <Claim>();

                    informacion.Add(new Claim(ClaimTypes.Name, "Usuario" + usuario.NombreUsuario));
                    informacion.Add(new Claim("Correo electronico", usuario.Correo));
                    informacion.Add(new Claim("Nombre Completo", usuario.NombreUsuario));
                    informacion.Add(new Claim("Fecha Ingreso", DateTime.Now.ToString()));


                    var claimsIdentity  = new ClaimsIdentity(informacion, CookieAuthenticationDefaults.AuthenticationScheme);
                    var claimsPrincipal = new ClaimsPrincipal(claimsIdentity);

                    if (persistant == true)
                    {
                        await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, claimsPrincipal,
                                                      new AuthenticationProperties { IsPersistent = true });
                    }
                    else
                    {
                        await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, claimsPrincipal,
                                                      new AuthenticationProperties { IsPersistent = false });
                    }

                    return(RedirectToAction("Entrada"));
                }
                else
                {
                    ModelState.AddModelError("", "La cuenta registrada con este correo electronico no esta activa");
                    return(View(u));
                }
            }
            else
            {
                ModelState.AddModelError("", "El usuario o la contraseña son incorrectas");
                return(View(u));
            }
        }
        public IActionResult Eliminar(string correo)
        {
            controlcuentasContext Context = new controlcuentasContext();

            UsuarioRepository repos = new UsuarioRepository(Context);
            var user = repos.GetUsuarioByCorreo(correo);

            if (user != null)
            {
                repos.Delete(user);
            }
            else
            {
                ModelState.AddModelError("", "Ha ocurrido un error");
                return(View("Entrada"));
            }
            return(RedirectToAction("Index"));
        }
        public IActionResult RecuperarContraseña(string correo)
        {
            try
            {
                controlcuentasContext Context = new controlcuentasContext();
                UsuarioRepository     repos   = new UsuarioRepository(Context);


                var user = repos.GetUsuarioByCorreo(correo);

                if (user != null)
                {
                    var contraseñaTemporal = CodigoHelper.GetCodigo();

                    MailMessage message = new MailMessage();
                    message.From = new MailAddress("*****@*****.**", "AnimeFull");
                    message.To.Add(correo);
                    message.Subject = "Recupera tu contraseña";

                    message.Body = $"Utiliza esta contraseña temporal para ingresar a tu cuenta, recuerda que una vez que ingreses deberas cambiarla: {contraseñaTemporal} ";

                    SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
                    client.EnableSsl             = true;
                    client.UseDefaultCredentials = false;
                    client.Credentials           = new NetworkCredential("*****@*****.**", "sistemas7g");
                    client.Send(message);

                    user.Contraseña = HashingHelpers.GetHash(contraseñaTemporal.ToString());
                    repos.Update(user);
                    return(RedirectToAction("IniciarSesion"));
                }
                else
                {
                    ModelState.AddModelError("", "El correo no esta registrado");
                    return(View());
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View((object)correo));
            }
        }
        public IActionResult CambiarContraseña(string contraseñaNueva1, string correo, string contraseñaNueva2)
        {
            controlcuentasContext Context = new controlcuentasContext();
            UsuarioRepository     repos   = new UsuarioRepository(Context);


            var user = repos.GetUsuarioByCorreo(correo);

            try
            {
                if (contraseñaNueva1 == contraseñaNueva2)
                {
                    user.Contraseña = HashingHelpers.GetHash(contraseñaNueva1);
                    if (user.Contraseña == contraseñaNueva1)
                    {
                        ModelState.AddModelError("", "La nueva contraseña no puede ser igual a la ya registrada");
                        return(View(contraseñaNueva1));
                    }
                    else
                    {
                        repos.Update(user);

                        return(RedirectToAction("Entrada"));
                    }
                }
                else
                {
                    ModelState.AddModelError("", "Las contraseñas no coinciden");
                    return(View());
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View(contraseñaNueva1, contraseñaNueva2));
            }
        }
 public UsuarioRepository(controlcuentasContext context) : base(context)
 {
 }
Ejemplo n.º 8
0
 public Repository(controlcuentasContext ctx)
 {
     Context = ctx;
 }