Example #1
0
 /// <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);
 }
Example #2
0
        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);
        }
Example #4
0
        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
        }
Example #5
0
        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
        }