示例#1
0
        public async Task <OperacionDto <RecuperarContraseniaRespuestaDto> > RecuperarContrasenia(RecuperarContraseniaPeticionDto peticion)
        {
            var validadModelo = ValidacionUtilitario.ValidarModelo <RecuperarContraseniaRespuestaDto>(peticion);

            if (!validadModelo.Completado)
            {
                return(validadModelo);
            }

            var entidad = await _usuarioRepositorio.BuscarPorUserName(peticion.UserName);

            if (entidad == null)
            {
                return(new OperacionDto <RecuperarContraseniaRespuestaDto>(CodigosOperacionDto.NoExiste, "Usuario no existe"));
            }

            var persona = await _personaRepositorio.ObtenerPorIdUsuario(entidad.IdUsuario);

            var nombreCompleto = default(string);

            if (persona != null)
            {
                nombreCompleto = $@"{persona.Nombre}, {persona.APaterno} {persona.AMaterno}";
            }

            var password = RandomChars.RandomString(10);

            password = Regex.Replace(password, @"[^a-zA-Z0-9]", m => "9");

            entidad.Password = Md5Utilitario.Cifrar(password, entidad.PasswordSalt);

            var html = File.ReadAllText(_appConfiguraciones.RutaTemplateRecuperarContrasenia);

            html = html.Replace("%%Nombre%%", nombreCompleto);
            html = html.Replace("%%Contrasenia%%", password);

            var asunto = "Nueva Contraseña";
            var cuerpo = html;

            var destinatarios = new List <string>();

            destinatarios.Add(persona.Correo);

            CorreoUtiliario.EnviarCorreo(asunto, destinatarios, cuerpo);

            await _usuarioRepositorio.EditarUsuario(entidad);

            return(new OperacionDto <RecuperarContraseniaRespuestaDto>(new RecuperarContraseniaRespuestaDto()
            {
                Mensaje = "Correo Enviado",
                Suceso = true
            }));
        }
示例#2
0
        private static string CreateRandomJobId(string testId)
        {
            // Of the form "mabfc-inttest-joboutput-jan01-010101-1234567890abcdef"

            // Require IDs to be short so they don't push the length over the munging
            // threshold.
            if (testId.Length > 12)
            {
                throw new ArgumentException("testId must be 12 or fewer characters", nameof(testId));
            }

            // Use local time to make it easier to see which is the container for the
            // "current" test run in storage viewers.
            var timestampPart = DateTime.Now.ToString("MMMdd-HHmmss", CultureInfo.InvariantCulture).ToLowerInvariant();

            // Some randomness in case the same test class gets run twice within a
            // second.  We wouldn't expect this to happen very often, so we don't
            // need a lot of randomness, and it's more valuable to keep names below the
            // munging threshold than to reduce the risk of collisions to sub-cosmic-ray levels.
            var randomPart = RandomChars.RandomString(16);

            return($"mabfc-inttest-{testId}-{timestampPart}-{randomPart}");
        }