public IActionResult EliminarCuenta(string correo, string contra)
 {
     try
     {
         controlusuariosContext context    = new controlusuariosContext();
         Repository <Usuario>   repository = new Repository <Usuario>(context);
         var usuario = repository.ObtenerUsuarioPorCorreo(correo);
         if (usuario != null)
         {
             if (HashingHelpers.GetHash(contra) == usuario.Contraseña)
             {
                 repository.Eliminar(usuario);
             }
             else
             {
                 ModelState.AddModelError("", "La contraseña es incorrecta.");
                 return(View());
             }
         }
         return(RedirectToAction("IniciarSesion"));
     }
     catch (Exception)
     {
         ModelState.AddModelError("", "Ocurrió un error. Inténtelo más tarde.");
         return(View());
     }
 }
        public IActionResult Activar(int codigo)
        {
            controlusuariosContext context    = new controlusuariosContext();
            Repository <Usuario>   repository = new Repository <Usuario>(context);
            var usuario = context.Usuario.FirstOrDefault(x => x.Codigo == codigo);

            if (usuario != null && usuario.Activo == 0)
            {
                var code = usuario.Codigo;
                if (codigo == code)
                {
                    usuario.Activo = 1;
                    repository.Editar(usuario);
                    return(RedirectToAction("IniciarSesion"));
                }
                else
                {
                    ModelState.AddModelError("", "El código ingresado no coincide con el original.");
                    return(View((object)codigo));
                }
            }
            else
            {
                ModelState.AddModelError("", "El usuario no existe.");
                return(View((object)codigo));
            }
        }
 public IActionResult EliminarCuenta(string correo, string contra)
 {
     try
     {
         controlusuariosContext       context    = new controlusuariosContext();
         UsuarioRepository <Usuarios> repository = new UsuarioRepository <Usuarios>(context);
         var usuario = repository.ObtenerUsuarioPorCorreo(correo);
         if (usuario != null)
         {
             if (HashHelper.GetHash(contra) == usuario.Contrasena)
             {
                 repository.Eliminar(usuario);
             }
             else
             {
                 ModelState.AddModelError("", "La contraseña está incorrecta.");
                 return(View());
             }
         }
         return(RedirectToAction("Index"));
     }
     catch (Exception)
     {
         ModelState.AddModelError("", "Ocurrió un error. Inténtelo en unos minutos.");
         return(View());
     }
 }
Example #4
0
        public IActionResult ActivarCuenta(int codigo)
        {
            controlusuariosContext Context = new controlusuariosContext();
            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));
            }
        }
Example #5
0
        public IActionResult Registrar(Usuario u, string contraseña1, string contraseña2)
        {
            controlusuariosContext Context = new controlusuariosContext();

            //Para agregar el usuario a la base de datos
            try
            {
                //Revisar que no exista una cuenta con ese correo
                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);

                        //Esto es para enviar el correo
                        MailMessage message = new MailMessage();
                        message.From = new MailAddress("*****@*****.**", "Music+");
                        message.To.Add(u.Correo);
                        message.Subject = "Confirma tu correo";

                        //Leo el documento html para enviarlo
                        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 IActionResult Registrar(Usuario u, string contraseña, string contraseña2)
        {
            controlusuariosContext controlusuariosContext = new controlusuariosContext();

            try
            {
                if (controlusuariosContext.Usuario.Any(x => x.Correo == u.Correo))
                {
                    ModelState.AddModelError("", "Cuenta ya registrada con esta dirección de correo.");
                    return(View(u));
                }
                else
                {
                    if (contraseña == contraseña2)
                    {
                        Repository <Usuario> repos = new Repository <Usuario>(controlusuariosContext);
                        u.Contraseña = HashingHelpers.GetHash(contraseña);
                        u.Codigo     = Helper.GetCodigo();
                        u.Activo     = 0;
                        repos.Insertar(u);

                        MailMessage message = new MailMessage();
                        message.From = new MailAddress("*****@*****.**", "Servicio de streaming.");
                        message.To.Add(u.Correo);
                        message.Subject = "Activar cuenta";
                        string mensaje = System.IO.File.ReadAllText(Environment.WebRootPath + "/Inicio.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("Activar"));
                    }
                    else
                    {
                        ModelState.AddModelError("", "Las contraseñas ingresadas no coinciden");
                        return(View(u));
                    }
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View(u));
            }
        }
        public IActionResult Registrar(Usuarios usuario, string contraseña1, string contraseña2)
        {
            controlusuariosContext       context    = new controlusuariosContext();
            UsuarioRepository <Usuarios> repository = new UsuarioRepository <Usuarios>(context);

            try
            {
                if (context.Usuarios.Any(x => x.Correo == usuario.Correo))
                {
                    ModelState.AddModelError("", "Este correo electrónico ya se encuentra registrado.");
                    return(View(usuario));
                }
                else
                {
                    if (contraseña1 == contraseña2)
                    {
                        usuario.Contrasena = HashHelper.GetHash(contraseña1);
                        usuario.Codigo     = CodeHelper.GetCode();
                        usuario.Activo     = 0;
                        repository.Insertar(usuario);

                        MailMessage mensaje = new MailMessage();
                        mensaje.From = new MailAddress("*****@*****.**", "OursCafé");
                        mensaje.To.Add(usuario.Correo);
                        mensaje.Subject = "Confirma tu correo electrónico en OursCafé";
                        string text = System.IO.File.ReadAllText(Environment.WebRootPath + "/ConfirmarCorreo.html");
                        mensaje.Body       = text.Replace("{##codigo##}", usuario.Codigo.ToString());
                        mensaje.IsBodyHtml = true;

                        SmtpClient cliente = new SmtpClient("smtp.gmail.com", 587);
                        cliente.EnableSsl             = true;
                        cliente.UseDefaultCredentials = false;
                        cliente.Credentials           = new NetworkCredential("*****@*****.**", "sistemas7g");
                        cliente.Send(mensaje);
                        return(RedirectToAction("Activar"));
                    }
                    else
                    {
                        ModelState.AddModelError("", "Las contraseñas no son iguales.");
                        return(View(usuario));
                    }
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View(usuario));
            }
        }
Example #8
0
        public async Task <IActionResult> IniciarSesion(Usuario u, bool persistant)
        {
            controlusuariosContext Context = new controlusuariosContext();

            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()));

                    //Hay que instanciar un claims principal al que se le asigna un claims identity
                    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));
            }
        }
Example #9
0
        public IActionResult RecuperarContraseña(string correo)
        {
            try
            {
                controlusuariosContext Context = new controlusuariosContext();
                UsuarioRepository      repos   = new UsuarioRepository(Context);
                //Repository<Usuario> repos = new Repository<Usuario>(Context);

                var user = repos.GetUsuarioByCorreo(correo);

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

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

                    string mensaje = System.IO.File.ReadAllText(Environment.WebRootPath + "/RecuperarContraseña.html");
                    message.IsBodyHtml = true;
                    message.Body       = mensaje.Replace("{##contrasena##}", contraseñaTemporal.ToString());

                    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));
            }
        }
Example #10
0
        public IActionResult Eliminar(string correo)
        {
            controlusuariosContext Context = new controlusuariosContext();

            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"));
        }
Example #11
0
        public async Task <IActionResult> IniciarSesion(Usuario u, bool persistente)
        {
            controlusuariosContext controlusuariosContext = new controlusuariosContext();
            Repository <Usuario>   usuarioRepository      = new Repository <Usuario>(controlusuariosContext);
            var usuario = usuarioRepository.ObtenerUsuarioPorCorreo(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(ClaimTypes.Role, "Cliente"));
                    informacion.Add(new Claim("Correo", usuario.Correo));
                    informacion.Add(new Claim("Nombre", usuario.NombreUsuario));

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

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

                    return(RedirectToAction("Index"));
                }
                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 async Task <IActionResult> IniciarSesion(Usuarios usuario, bool persistente)
        {
            controlusuariosContext       context    = new controlusuariosContext();
            UsuarioRepository <Usuarios> repository = new UsuarioRepository <Usuarios>(context);
            var datos = repository.ObtenerUsuarioPorCorreo(usuario.Correo);

            if (datos != null && HashHelper.GetHash(usuario.Contrasena) == datos.Contrasena)
            {
                if (datos.Activo == 1)
                {
                    List <Claim> info = new List <Claim>();
                    info.Add(new Claim(ClaimTypes.Name, "Usuario" + datos.Nombre));
                    //info.Add(new Claim(ClaimTypes.Role, "Cliente"));
                    info.Add(new Claim("Correo", datos.Correo));
                    info.Add(new Claim("Nombre", datos.Nombre));

                    var claimsidentity  = new ClaimsIdentity(info, CookieAuthenticationDefaults.AuthenticationScheme);
                    var claimsprincipal = new ClaimsPrincipal(claimsidentity);

                    if (persistente == true)
                    {
                        await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, claimsprincipal,
                                                      new AuthenticationProperties { IsPersistent = true });
                    }
                    else
                    {
                        await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, claimsprincipal,
                                                      new AuthenticationProperties { IsPersistent = false });
                    }
                    return(RedirectToAction("Index"));
                }
                else
                {
                    ModelState.AddModelError("", "Esta cuenta aún no ha sido activada. Necesita ir a su correo y activarla");
                    return(View(usuario));
                }
            }
            else
            {
                ModelState.AddModelError("", "Sus credenciales son incorrectas.");
                return(View(usuario));
            }
        }
Example #13
0
        public IActionResult CambiarContra(string correo, string contraseña, string nuevaContraseña, string confirmarNuevaContraseña)
        {
            controlusuariosContext context    = new controlusuariosContext();
            Repository <Usuario>   repository = new Repository <Usuario>(context);

            try
            {
                var usuario = repository.ObtenerUsuarioPorCorreo(correo);

                if (usuario.Contraseña != HashingHelpers.GetHash(contraseña))
                {
                    ModelState.AddModelError("", "La contraseña ingresada no es correcta.");
                    return(View());
                }
                else
                {
                    if (nuevaContraseña != confirmarNuevaContraseña)
                    {
                        ModelState.AddModelError("", "Las contraseñas no coinciden.");
                        return(View());
                    }
                    else if (usuario.Contraseña == HashingHelpers.GetHash(nuevaContraseña))
                    {
                        ModelState.AddModelError("", "La nueva contraseña no puede ser igual a la actual.");
                        return(View());
                    }
                    else
                    {
                        usuario.Contraseña = HashingHelpers.GetHash(nuevaContraseña);
                        repository.Editar(usuario);
                        return(RedirectToAction("IniciarSesion"));
                    }
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View());
            }
        }
Example #14
0
        public IActionResult RecuperarContra(string correo)
        {
            try
            {
                controlusuariosContext context    = new controlusuariosContext();
                Repository <Usuario>   repository = new Repository <Usuario>(context);
                var usuario = repository.ObtenerUsuarioPorCorreo(correo);

                if (usuario != null)
                {
                    var         contraTemp = Helper.GetCodigo();
                    MailMessage mensaje    = new MailMessage();
                    mensaje.From = new MailAddress("*****@*****.**", "Servicio de streaming");
                    mensaje.To.Add(correo);
                    mensaje.Subject = "Recupera tu contraseña";
                    string text = System.IO.File.ReadAllText(Environment.WebRootPath + "/Recuperacion.html");
                    mensaje.Body       = text.Replace("{##contraTemp##}", contraTemp.ToString());
                    mensaje.IsBodyHtml = true;

                    SmtpClient cliente = new SmtpClient("smtp.gmail.com", 587);
                    cliente.EnableSsl             = true;
                    cliente.UseDefaultCredentials = false;
                    cliente.Credentials           = new NetworkCredential("*****@*****.**", "sistemas7g");
                    cliente.Send(mensaje);
                    usuario.Contraseña = HashingHelpers.GetHash(contraTemp.ToString());
                    repository.Editar(usuario);
                    return(RedirectToAction("IniciarSesion"));
                }
                else
                {
                    ModelState.AddModelError("", "El correo electrónico ingresado no está registrado.");
                    return(View());
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View((object)correo));
            }
        }
        public IActionResult CambiarContra(string correo, string contra, string nuevaContraseña1, string nuevaContraseña2)
        {
            controlusuariosContext       context    = new controlusuariosContext();
            UsuarioRepository <Usuarios> repository = new UsuarioRepository <Usuarios>(context);

            try
            {
                var usuario = repository.ObtenerUsuarioPorCorreo(correo);

                if (usuario.Contrasena != HashHelper.GetHash(contra))
                {
                    ModelState.AddModelError("", "La contraseña que ingresó es incorrecta.");
                    return(View());
                }
                else
                {
                    if (nuevaContraseña1 != nuevaContraseña2)
                    {
                        ModelState.AddModelError("", "Las nuevas contraseñas no son iguales.");
                        return(View());
                    }
                    else if (usuario.Contrasena == HashHelper.GetHash(nuevaContraseña1))
                    {
                        ModelState.AddModelError("", "La nueva contraseña no puede ser igual a la actual.");
                        return(View());
                    }
                    else
                    {
                        usuario.Contrasena = HashHelper.GetHash(nuevaContraseña1);
                        repository.Editar(usuario);
                        return(RedirectToAction("IniciarSesion"));
                    }
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View());
            }
        }
Example #16
0
        public IActionResult CambiarContraseña(string contraseñaNueva1, string correo, string contraseñaNueva2)
        {
            controlusuariosContext Context = new controlusuariosContext();
            UsuarioRepository      repos   = new UsuarioRepository(Context);
            //Repository<Usuario> repos = new Repository<Usuario>(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));
            }
        }
Example #17
0
 public Repository(controlusuariosContext ctx)
 {
     Context = ctx;
 }
Example #18
0
 public HomeController(controlusuariosContext ctx)
 {
     context = ctx;
 }
Example #19
0
 public UsuarioRepository(controlusuariosContext context) : base(context)
 {
 }
Example #20
0
 public UsuarioRepository(controlusuariosContext context)
 {
     Context = context;
 }