Esempio n. 1
0
        public async Task <OperacionDto <LoginRespuestaDto> > Login(LoginPeticionDto peticion)
        {
            var operacionValidacion = ValidacionUtilitario.ValidarModelo <LoginRespuestaDto>(peticion);

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

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

            if (usuario == null)
            {
                return(new OperacionDto <LoginRespuestaDto>(CodigosOperacionDto.AccesoInvalido, "Usuario o Contraseña inválida"));
            }

            if (!Md5Utilitario.Cifrar(peticion.Password, usuario.PasswordSalt).Equals(usuario.Password))
            {
                return(new OperacionDto <LoginRespuestaDto>(CodigosOperacionDto.AccesoInvalido, "Usuario o Contraseña inválida"));
            }

            var token = $"{peticion.UserName}___{DateTime.UtcNow.ToBinary()}___HERMOZA_BIBLOMAX";

            var dto = new LoginRespuestaDto()
            {
                Suceso      = true,
                Descripcion = "Login correcto",
                Token       = RijndaelUtilitario.EncryptRijndaelToBase64(token)
            };

            return(new OperacionDto <LoginRespuestaDto>(dto));
        }
Esempio n. 2
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
            }));
        }