public Usuario GetUsuarioAutenticado(string login, string password) { Usuario resultado = new Usuario(); resultado.Id = 0; string passwordHash = EncryptionService.MD5Hash(password); string connectionString = ConfigurationManager.AppSettings["ConnectionString"].ToString(); Engine engine = new Engine(connectionString); StringBuilder query = new StringBuilder(); query.Append("select "); query.Append(" usuarios.id, usuarios.usuario, usuarios.nombres, usuarios.apellido1, usuarios.apellido2, usuarios.telefono, usuarios.email, usuarios.fechaBaja, usuarios.idperfilusuario "); query.Append(" ,passwords.Password "); query.Append(" from usuarios "); query.Append(" inner join historicopasswords "); query.Append(" on usuarios.id = historicopasswords.idusuario "); query.Append(" inner join passwords "); query.Append(" on historicopasswords.id = passwords.idhistoricopassword "); query.Append(" where "); query.Append(" usuarios.Usuario = '" + login.ToLower().Trim() + "' "); DataTable table = engine.Query(query.ToString()); if (table != null && table.Rows != null && table.Rows.Count > 0) { bool passwordVigente = false; foreach (DataRow fila in table.Rows) { if (fila["fechabaja"].ToString().ToLower().Equals("") || fila["fechabaja"].ToString().ToLower().Equals("null")) { passwordVigente = true; if (fila["Password"].ToString().Trim().Equals(passwordHash)) { resultado.Id = int.Parse(fila["Id"].ToString()); resultado.Nombres = fila["Nombres"].ToString(); resultado.ApellidoPrimero = fila["Apellido1"].ToString(); resultado.ApellidoSegundo = fila["Apellido2"].ToString(); resultado.Login = fila["Usuario"].ToString(); resultado.Email = fila["Email"].ToString(); resultado.Telefono = fila["Telefono"].ToString(); if (fila["idperfilusuario"].ToString().Equals(ConfigurationManager.AppSettings["idPerfilAdministrador"].ToString())) { resultado.PerfilKey = ConfigurationManager.AppSettings["adminKey"].ToString(); } FotografiaService fotografiaService = new FotografiaService(); resultado.Fotografias = fotografiaService.ObtenerFotosUsuario(resultado.Id); resultado.Token = CommonService.GenerarToken(resultado.Login, fila["idperfilusuario"].ToString()); } else { resultado.IncidenciaUsuario = "Password incorrecto."; } } } if (!passwordVigente) { resultado.IncidenciaUsuario = "La cuenta tiene contraseña caducada. Contactar con el administrador."; } } else { resultado.IncidenciaUsuario = "No se ha encontrado Usuario con ese nombre de login."; } return(resultado); }
public Usuario ReiniciarPassword(string email) { Usuario usuariorecuperar = GetUsuarioPorEmail(email); int resultado = 0; if (string.IsNullOrEmpty(usuariorecuperar.IncidenciaUsuario)) { int resultadoBajaActual = BajaPasswordActual(usuariorecuperar.Id); int idNuevoRegistroPassword = CrearRegistroPassword(usuariorecuperar.Id); string nuevoPassword = GenerarTextPassword(8); string connectionString = ConfigurationManager.AppSettings["ConnectionString"].ToString(); Engine engine = new Engine(connectionString); StringBuilder comando = new StringBuilder(); comando.Append("insert into passwords "); comando.Append(" (idhistoricopassword,password) "); comando.Append(string.Format(" values ({0},'{1}') ", idNuevoRegistroPassword, EncryptionService.MD5Hash(nuevoPassword))); resultado = engine.Execute(comando.ToString()); if (resultado > 0) { CommonService.EnviarCorreo(email, "Tu nueva contraseña es: " + nuevoPassword); } } return(usuariorecuperar); }