Пример #1
0
        public IActionResult CambiarContraseña(Docente d, string contraseñaNueva1, string contraseñaNueva2)
        {
            rolesusuarioContext context = new rolesusuarioContext();
            DocentesRepository  repos   = new DocentesRepository(context);
            var docente = repos.Get(d.Id);

            try
            {
                if (docente != null)
                {
                    if (contraseñaNueva1 == contraseñaNueva2)
                    {
                        docente.Contraseña = contraseñaNueva1;
                        docente.Contraseña = HashingHelpers.GetHash(contraseñaNueva1);
                        repos.Update(docente);
                    }
                    else
                    {
                        ModelState.AddModelError("", "Las contraseñas no coinciden");
                        return(View(docente));
                    }
                }
                return(RedirectToAction("VerDocentes"));
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View(docente));
            }
        }
Пример #2
0
    public static Hash128 GetHash128(this WriteCommand cmd)
    {
        StreamHasher hasher = new StreamHasher();

        HashingHelpers.WriteHashData(cmd, hasher.Writer);
        return(hasher.GetHash());
    }
Пример #3
0
    public static Hash128 GetHash128(this AssetLoadInfo info)
    {
        StreamHasher hasher = new StreamHasher();

        HashingHelpers.WriteHashData(info, hasher.Writer);
        return(hasher.GetHash());
    }
Пример #4
0
 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());
     }
 }
Пример #5
0
        public static void AssetLoadInfo_WhenValueChanges_HashesChange()
        {
            AssetLoadInfo[] infos = new AssetLoadInfo[]
            {
                new AssetLoadInfo()
                {
                    address = "Test"
                },
                new AssetLoadInfo()
                {
                    asset = GUID.Generate()
                },
                new AssetLoadInfo()
                {
                    includedObjects = new List <ObjectIdentifier>()
                    {
                        new ObjectIdentifier()
                    }
                },
                new AssetLoadInfo()
                {
                    referencedObjects = new List <ObjectIdentifier>()
                    {
                        new ObjectIdentifier()
                    }
                }
            };
            HashSet <Hash128> set = new HashSet <Hash128>(infos.Select(x => HashingHelpers.GetHash128(x)));

            Assert.AreEqual(infos.Length, set.Count);
        }
Пример #6
0
        public static void WriteCommand_WhenValueChanges_HashesChange()
        {
            WriteCommand[] infos = new WriteCommand[]
            {
                new WriteCommand()
                {
                    fileName = "Test"
                },
                new WriteCommand()
                {
                    internalName = "Test2"
                },
                new WriteCommand()
                {
                    serializeObjects = new List <SerializationInfo>()
                    {
                        new SerializationInfo()
                    }
                },
                new WriteCommand()
                {
                    serializeObjects = new List <SerializationInfo>()
                    {
                        new SerializationInfo()
                        {
                            serializationIndex = 2
                        }
                    }
                }
            };
            HashSet <Hash128> set = new HashSet <Hash128>(infos.Select(x => HashingHelpers.GetHash128(x)));

            Assert.AreEqual(infos.Length, set.Count);
        }
Пример #7
0
        public IActionResult EliminarCuenta(string correo, string contra)
        {
            controlusrobertoContext context = new controlusrobertoContext();

            try
            {
                UsuarioRepository <Usuario> reposUsuario = new UsuarioRepository <Usuario>(context);
                var usuario = reposUsuario.GetUserByEmail(correo);
                if (usuario != null)
                {
                    if (HashingHelpers.GetHelper(contra) == usuario.Contrasena)
                    {
                        reposUsuario.Delete(usuario);
                    }
                    else
                    {
                        ModelState.AddModelError("", "La contraseña introducida es incorrecta, intentelo de nuevo.");
                        return(View());
                    }
                }
                return(RedirectToAction("IniciarSesion"));
            }
            catch (Exception)
            {
                ModelState.AddModelError("", "Ocurrió un error. Inténtelo de nuevo en otro momento.");
                return(View());
            }
        }
Пример #8
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));
            }
        }
Пример #9
0
        public static void PreloadInfo_WhenValueChanges_HashesChange()
        {
            ObjectIdentifier obj1 = new ObjectIdentifier();

            obj1.SetFilePath("TestPath");
            PreloadInfo[] infos = new PreloadInfo[]
            {
                new PreloadInfo()
                {
                    preloadObjects = new List <ObjectIdentifier>()
                },
                new PreloadInfo()
                {
                    preloadObjects = new List <ObjectIdentifier>()
                    {
                        new ObjectIdentifier()
                    }
                },
                new PreloadInfo()
                {
                    preloadObjects = new List <ObjectIdentifier>()
                    {
                        obj1
                    }
                },
            };
            HashSet <Hash128> set = new HashSet <Hash128>(infos.Select(x => HashingHelpers.GetHash128(x)));

            Assert.AreEqual(infos.Length, set.Count);
        }
Пример #10
0
        public IActionResult AgregarDocente(Docente d)
        {
            rolesusuarioContext context = new rolesusuarioContext();
            DocentesRepository  repos   = new DocentesRepository(context);

            try
            {
                var existe = repos.GetDocenteByClave(d.Clave);
                if (existe != null)
                {
                    ModelState.AddModelError("", "Ya existe un docente con esta clave");
                    return(View(d));
                }
                else
                {
                    d.Activo     = 1;
                    d.Contraseña = HashingHelpers.GetHash(d.Contraseña);
                    repos.Insert(d);
                    return(RedirectToAction("VerDocentes"));
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View(d));
            }
        }
        public void ComputeSha512Hash_Should_Return_Sha512_String()
        {
            var hh     = new HashingHelpers();
            var hashed = hh.ComputeSha512Hash(TextToHash);

            Assert.IsTrue(!string.IsNullOrWhiteSpace(hashed));
            Assert.AreEqual(hashed.Length, 128);
        }
        public void Should_Create_MD5_Hash_For_Value()
        {
            var hh     = new HashingHelpers();
            var hashed = hh.ComputeMD5Hash(TextToHash);

            Assert.IsTrue(!string.IsNullOrWhiteSpace(hashed));
            Assert.AreEqual(hashed.Length, 32);
        }
Пример #13
0
        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));
            }
        }
Пример #14
0
        public string GetGravatarUrl(string email)
        {
            if (string.IsNullOrEmpty(email))
            {
                return(DEFAULT_URL);
            }

            var emailHash = HashingHelpers.GetHash(email);

            return(string.Format(GRAVATAR_URL_FORMAT, emailHash));
        }
Пример #15
0
        public IActionResult Registrar(Usuario us, string contrasena, string contrasena2)
        {
            controlusrobertoContext context = new controlusrobertoContext();

            try
            {
                UsuarioRepository <Usuario> reposUsuario = new UsuarioRepository <Usuario>(context);
                if (context.Usuario.Any(x => x.Correo == us.Correo))
                {
                    ModelState.AddModelError("", "Este usuario ya tiene una cuenta en Cyberpuerta.");
                    return(View(us));
                }
                else
                {
                    if (contrasena == contrasena2)
                    {
                        us.Contrasena = HashingHelpers.GetHelper(contrasena);
                        us.Codigo     = CodeHelper.GetCodigo();
                        us.Activo     = 0;
                        reposUsuario.Insert(us);

                        MailMessage mensaje = new MailMessage();
                        mensaje.From = new MailAddress("*****@*****.**", "CyberPuerta");
                        mensaje.To.Add(us.Correo);
                        mensaje.Subject = "Verifica tu correo para CyberPuerta";
                        string text = System.IO.File.ReadAllText(Environment.WebRootPath + "/ConfirmacionDeCorreo.html");
                        mensaje.Body       = text.Replace("{##codigo##}", us.Codigo.ToString());
                        mensaje.IsBodyHtml = true;

                        SmtpClient clienteXperience = new SmtpClient("smtp.gmail.com", 587);
                        clienteXperience.EnableSsl             = true;
                        clienteXperience.UseDefaultCredentials = false;
                        clienteXperience.Credentials           = new NetworkCredential("*****@*****.**", "sistemas7g");
                        clienteXperience.Send(mensaje);
                        return(RedirectToAction("Activar"));
                    }
                    else
                    {
                        ModelState.AddModelError("", "Ambas contraseñas no coinciden entre sí, intentalo de nuevo.");
                        return(View(us));
                    }
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View(us));
            }
        }
        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));
            }
        }
Пример #17
0
        public async Task <IActionResult> IniciarSesionDocente(Docente d)
        {
            rolesusuarioContext context = new rolesusuarioContext();
            DocentesRepository  repos   = new DocentesRepository(context);

            var docente = repos.GetDocenteByClave(d.Clave);

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

                        informacion.Add(new Claim(ClaimTypes.Name, "Usuario" + docente.Nombre));
                        informacion.Add(new Claim("Clave", docente.Clave.ToString()));
                        informacion.Add(new Claim(ClaimTypes.Role, "Docente"));
                        informacion.Add(new Claim("Nombre Completo", docente.Nombre));
                        informacion.Add(new Claim("IdDocente", docente.Id.ToString()));

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

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

                        return(RedirectToAction("Principal", docente.Clave));
                    }
                    else
                    {
                        ModelState.AddModelError("", "Lo sentimos, su usuario esta desactivado, hable con su superior para activar la cuenta");
                        return(View(d));
                    }
                }
                else
                {
                    ModelState.AddModelError("", "La clave de docente o la contraseña es incorrecta");
                    return(View(d));
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View(d));
            }
        }
Пример #18
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));
            }
        }
Пример #19
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 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));
            }
        }
Пример #21
0
        public async Task <IActionResult> IniciarSesion(Usuario us, bool mantener)
        {
            controlusrobertoContext     context      = new controlusrobertoContext();
            UsuarioRepository <Usuario> reposUsuario = new UsuarioRepository <Usuario>(context);
            var datos = reposUsuario.GetUserByEmail(us.Correo);

            if (datos != null && HashingHelpers.GetHelper(us.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 (mantener == 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("", "Activa tu cuenta para poder iniciar sesión en Cyberpuerta.");
                    return(View(us));
                }
            }
            else
            {
                ModelState.AddModelError("", "El correo electrónico o la contraseña son incorrectas.");
                return(View(us));
            }
        }
Пример #22
0
        public IActionResult RecuperarContrasena(string correo)
        {
            try
            {
                controlusrobertoContext     context    = new controlusrobertoContext();
                UsuarioRepository <Usuario> repository = new UsuarioRepository <Usuario>(context);
                var usuario = repository.GetUserByEmail(correo);

                if (usuario != null)
                {
                    var         contraTemp = CodeHelper.GetCodigo();
                    MailMessage mensaje    = new MailMessage();
                    mensaje.From = new MailAddress("*****@*****.**", "CyberPuerta");
                    mensaje.To.Add(correo);
                    mensaje.Subject = "Recupera tu contraseña en CyberPuerta";
                    string text = System.IO.File.ReadAllText(Environment.WebRootPath + "/RecuperacionDeContrasena.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.Contrasena = HashingHelpers.GetHelper(contraTemp.ToString());
                    repository.Edit(usuario);
                    return(RedirectToAction("IniciarSesion"));
                }
                else
                {
                    ModelState.AddModelError("", "El correo no se encuentra registrado en nuestra página.");
                    return(View());
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View((object)correo));
            }
        }
Пример #23
0
        public IActionResult CambiarContra(string correo, string contra, string nuevaContrasena, string nvaContrasena)
        {
            controlusrobertoContext context = new controlusrobertoContext();

            try
            {
                UsuarioRepository <Usuario> reposUsuario = new UsuarioRepository <Usuario>(context);
                var usuario = reposUsuario.GetUserByEmail(correo);

                if (usuario.Contrasena != HashingHelpers.GetHelper(contra))
                {
                    ModelState.AddModelError("", "La contraseña es incorrecta.");
                    return(View());
                }
                else
                {
                    if (nuevaContrasena != nvaContrasena)
                    {
                        ModelState.AddModelError("", "Ambas contraseñas no coinciden entre sí, intentelo de nuevo.");
                        return(View());
                    }
                    else if (usuario.Contrasena == HashingHelpers.GetHelper(nuevaContrasena))
                    {
                        ModelState.AddModelError("", "Esta introduciendo una contraseña antigua, intentelo una vez mas con una contaseña distinta.");
                        return(View());
                    }
                    else
                    {
                        usuario.Contrasena = HashingHelpers.GetHelper(nuevaContrasena);
                        reposUsuario.Edit(usuario);
                        return(RedirectToAction("IniciarSesion"));
                    }
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View());
            }
        }
Пример #24
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());
            }
        }
Пример #25
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));
            }
        }
Пример #26
0
        public async Task <IActionResult> IniciarSesionDirector(Director d)
        {
            rolesusuarioContext   context = new rolesusuarioContext();
            Repository <Director> repos   = new Repository <Director>(context);

            var director = context.Director.FirstOrDefault(x => x.Clave == d.Clave);

            try
            {
                if (director != null && director.Contraseña == HashingHelpers.GetHash(d.Contraseña))
                {
                    List <Claim> informacion = new List <Claim>();

                    informacion.Add(new Claim(ClaimTypes.Name, "Usuario" + director.Nombre));
                    informacion.Add(new Claim("Clave", director.Clave.ToString()));
                    informacion.Add(new Claim(ClaimTypes.Role, "Director"));
                    informacion.Add(new Claim("Nombre Completo", director.Nombre));
                    informacion.Add(new Claim("Fecha Ingreso", DateTime.Now.ToString()));

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

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

                    return(RedirectToAction("Principal"));
                }
                else
                {
                    ModelState.AddModelError("", "La clave de docente o la contraseña es incorrecta");
                    return(View(d));
                }
            }
            catch (Exception ex)
            {
                ModelState.AddModelError("", ex.Message);
                return(View(d));
            }
        }
Пример #27
0
        public static void AssetBundleInfo_WhenValueChanges_HashesChange()
        {
            AssetBundleInfo[] infos = new AssetBundleInfo[]
            {
                new AssetBundleInfo()
                {
                    bundleName = "Test"
                },
                new AssetBundleInfo()
                {
                    bundleName = "Test2"
                },
                new AssetBundleInfo()
                {
                    bundleAssets = new List <AssetLoadInfo>()
                    {
                        new AssetLoadInfo()
                        {
                            address = "a1"
                        }
                    }
                },
                new AssetBundleInfo()
                {
                    bundleAssets = new List <AssetLoadInfo>()
                    {
                        new AssetLoadInfo()
                        {
                            address = "a2"
                        }
                    }
                }
            };
            HashSet <Hash128> set = new HashSet <Hash128>(infos.Select(x => HashingHelpers.GetHash128(x)));

            Assert.AreEqual(infos.Length, set.Count);
        }
        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));
            }
        }
Пример #29
0
        public static void SerializationInfo_WhenValueChanges_HashesChange()
        {
            ObjectIdentifier obj1 = new ObjectIdentifier();

            obj1.SetFilePath("TestPath");
            SerializationInfo[] infos = new SerializationInfo[]
            {
                new SerializationInfo()
                {
                    serializationIndex = 0
                },
                new SerializationInfo()
                {
                    serializationIndex = 1
                },
                new SerializationInfo()
                {
                    serializationIndex = 0, serializationObject = obj1
                }
            };
            HashSet <Hash128> set = new HashSet <Hash128>(infos.Select(x => HashingHelpers.GetHash128(x)));

            Assert.AreEqual(infos.Length, set.Count);
        }
Пример #30
0
 /// <summary>
 /// Gets the name hash of the attribute
 /// </summary>
 /// <returns></returns>
 public virtual uint GetHash() => HashingHelpers.BinHash(Name);