/// <summary> /// Rutina que genera una url temporal con formato /// /TipoUrl/Guid/"IdEmpresa"/"id"/"OtroIDDeSerNecesario"/ por lo que se pide que siempre venga lleno /// el IdEmpresa /// y el listado de ids. /// </summary> /// <param name="url"></param> /// <returns></returns> public UrlTemporal GenerarUrlTemporal(UrlTemporal url) { //transaction scope // /UrlTemporal/"IdEmpresa"/"id"/"OtroIDDeSerNecesario"/ url = GenerarUrl(url); string[] separadas = url.GuidUrl.Split('/'); //Llamar a var stringCodificado = UtilUrl.Base64Encode(// UrlTemporal/"IdEmpresa"/"id"/) para codificar primero el string url.GuidUrl = RijndaelSimple.Encrypt ( url.GuidUrl, passPhrase, saltValue, hashAlgorithm, passwordIterations, initVector, keySize ); url.GuidUrl = ConvertirCaracteresInvalidos(url.GuidUrl); //guardar este último guidDefinitivo en la base de datos, los parametros de fecha e intentos depende de para que fue generada url = iUrlTemporalRepositorio.InsertarUrlTemporal(url); //la liga //enviar correo con la liga generada dependiendo el tipo de url que debe enviarse //terminar rutina return(url); }
private UrlTemporal GenerarUrl(UrlTemporal url) { string urlString = string.Empty; switch (url.TipoUrlTemporal) { case TipoUrlTemporal.CambioPassword: urlString = "CambioPassword"; break; case TipoUrlTemporal.ExpedienteDigital: urlString = "ExpedienteDigital"; break; } urlString += "/" + Guid.NewGuid() + "/" + url.IdEmpresa + "/"; string urlResto = string.Empty; foreach (var ids in url.Ids) { if (!string.IsNullOrEmpty(urlResto)) { urlResto += "/"; } urlResto += ids; } urlString += urlResto; url.GuidUrl = urlString; return(url); }
public UrlTemporal InactivarUrl(UrlTemporal url) { var parametros = new SqlParameterItem("@pIdUrl", SqlDbType.VarChar, 200, url.IdUrl); //parametros.Add(new SqlParameterItem("@pResultado", SqlDbType.Bit, 0, ParameterDirection.Output)); InicializaConexion(url.IdEmpresa); helper.ExecuteNonQuery("[usp_Url_InactivarUrl]", parametros, false); //url.IdUrl = Convert.ToInt16(helper.GetParameterOutput("@pID")); return(url); }
public UrlTemporal ComprobarUrlTemporal(UrlTemporal url) { // UrlTemporal/"IdEmpresa"/"id"/"OtroIDDeSerNecesario"/ //decodificar guid para ver el idEmpresa a consultar var urlValidaRjindael = ConvertirCaracteresOriginales(url.GuidUrl); var stringDecodificado = RijndaelSimple.Decrypt ( urlValidaRjindael, passPhrase, saltValue, hashAlgorithm, passwordIterations, initVector, keySize ); string[] separadas = stringDecodificado.Split('/'); url.IdEmpresa = Convert.ToInt16(separadas[2]); switch (separadas[0]) { case "CambioPassword": url.TipoUrlTemporal = TipoUrlTemporal.CambioPassword; break; case "ExpedienteDigital": url.TipoUrlTemporal = TipoUrlTemporal.ExpedienteDigital; break; } //la linea anterior depende de que tipo de liga sea //comprobar que el guid efectivamente existe en la base de datos url = iUrlTemporalRepositorio.EsUrlValida(url); if (url.IdUrl == 0) { url = iUrlTemporalRepositorio.InactivarUrl(url); throw new ErrorUrlTemporal(); } url.Ids = new List <int>(); for (int i = 3; i < separadas.Count(); i++) { url.Ids.Add(Convert.ToInt32(separadas[i])); } //marcar como url usada. url = iUrlTemporalRepositorio.InactivarUrl(url); return(url); //en caso que no exista en base de datos o haya algo malo con el guid //enviar excepciones }
private Usuario CrearUrlCambioContraseña(Usuario item) { var urlTemporal = FactoryEngine <IUrlTemporalDominio> .GetInstance("IUrlTemporalDominioConfig"); var url = new UrlTemporal() { Correo = item.CorreoElectronico, FechaExpiracion = DateTime.Now.AddDays(1), GuidUrl = Convert.ToString(Guid.NewGuid()), TipoUrlTemporal = TipoUrlTemporal.CambioPassword, IdEmpresa = item.IdEmpresa[0], IdUrl = item.Id, }; url = urlTemporal.GenerarUrlTemporal(url); if (url.IdUrl == 0) { throw new NoSePudoCrearUsuario(); } return(item); }
public UrlTemporal InsertarUrlTemporal(UrlTemporal url) { var parametros = new List <SqlParameterItem>(); switch (url.TipoUrlTemporal) { case TipoUrlTemporal.CambioPassword: parametros.Add(new SqlParameterItem("@pIdTipoUrl", SqlDbType.Int, 1)); break; case TipoUrlTemporal.ExpedienteDigital: parametros.Add(new SqlParameterItem("@pIdTipoUrl", SqlDbType.Int, 2)); break; } parametros.Add(new SqlParameterItem("@pUrl", SqlDbType.VarChar, 200, url.GuidUrl)); parametros.Add(new SqlParameterItem("@pID", SqlDbType.Int, 0, ParameterDirection.Output)); InicializaConexion(url.IdEmpresa); helper.ExecuteNonQuery("[usp_Url_Inserta]", parametros, false); url.IdUrl = Convert.ToInt16(helper.GetParameterOutput("@pID")); return(url); }
public UrlTemporal EsUrlValida(UrlTemporal url) { var parametros = new List <SqlParameterItem>(); parametros.Add(new SqlParameterItem("@pUrl", SqlDbType.VarChar, 13, url.GuidUrl)); parametros.Add(new SqlParameterItem("@pErrores", SqlDbType.Int, 0, ParameterDirection.Output)); InicializaConexion(url.IdEmpresa); var reader = helper.ExecuteReader("usp_Url_DameListaXUrl", parametros); while (reader.Read()) { url.IdUrl = reader.GetInt32(reader.GetOrdinal("IdUrl")); url.FechaExpiracion = reader.GetDateTime(reader.GetOrdinal("FechaVencimiento")); url.GuidUrl = reader.GetString(reader.GetOrdinal("Url")); url.NumeroIntentos = reader.GetInt32(reader.GetOrdinal("NumeroEjecucion")); } ; return(url); //StoredProdcedure que verifica que url.GuidUrl exista y regresa los datos de esa url //con fechaExpiración y numero de intentos }