コード例 #1
0
ファイル: EmailService.cs プロジェクト: rfabais/PortuLibras
 private bool VerificaDataValida(TokenEmailDTO tokenEmail)
 {
     if (Convert.ToDateTime(tokenEmail.DataValida) <= DateTime.Today)
     {
         return(false);
     }
     return(true);
 }
コード例 #2
0
ファイル: EmailService.cs プロジェクト: rfabais/PortuLibras
 private bool VerificaTokenExiste(TokenEmailDTO tokenEmail)
 {
     if (tokenEmail == null)
     {
         return(false);
     }
     return(true);
 }
コード例 #3
0
        public List <TokenEmailDTO> BuscarToken(TokenEmailDTO tokenEmail)
        {
            DataSet dataSet = new DataSet();
            List <TokenEmailDTO> lstTokenEmail = new List <TokenEmailDTO>();

            var connection = conexao.CriaConexao();

            conexao.AbrirConexao(connection);

            SqlCommand command = new SqlCommand("TOKENEMAIL_SELECIONAR", connection);

            command.CommandType = CommandType.StoredProcedure;

            command.Parameters.AddWithValue("@Id_Token", tokenEmail.CodigoToken);
            command.Parameters.AddWithValue("@Token", (!String.IsNullOrEmpty(tokenEmail.Token)) ? tokenEmail.Token.Trim() : "");
            command.Parameters.AddWithValue("@DataValida", (!String.IsNullOrEmpty(tokenEmail.DataValida)) ? tokenEmail.DataValida.Trim() : "");
            command.Parameters.AddWithValue("@Id_Usuario", tokenEmail.CodigoUsuario);

            SqlTransaction transaction = connection.BeginTransaction();

            command.Connection  = connection;
            command.Transaction = transaction;

            try
            {
                SqlDataAdapter dataAdapter = new SqlDataAdapter(command);

                dataAdapter.Fill(dataSet);

                DataTableReader reader = dataSet.Tables[0].CreateDataReader();

                while (reader.Read())
                {
                    lstTokenEmail.Add(new TokenEmailDTO()
                    {
                        CodigoToken   = (int)reader["ID_TOKEN"],
                        Token         = reader["TOKEN"].ToString(),
                        DataValida    = reader["DATAVALIDA"].ToString(),
                        CodigoUsuario = (int)reader["ID_USUARIO"]
                    });
                }

                transaction.Commit();
            }
            catch (Exception ex)
            {
                try
                {
                    transaction.Rollback();
                    throw new Exception(ex.Message);
                }
                catch (Exception ex2)
                {
                    throw new Exception(ex2.Message);
                }
            }
            return(lstTokenEmail);
        }
コード例 #4
0
ファイル: EmailService.cs プロジェクト: rfabais/PortuLibras
        private Retorno MontaEmailSenha(TokenEmailDTO tokenEmail, string email)
        {
            //endereco de email do PoruLibras
            string endereco = configuration["EnderecoEmail"];

            //montar assunto
            string assunto = HelperEmail.AssuntoSenha();

            //montar body
            string body = HelperEmail.BodySenha(tokenEmail.Token, endereco);

            //efetua o envio do email
            return(EnviaEmail(email, body, assunto));
        }
コード例 #5
0
        public int GravarTokenEmail(TokenEmailDTO tokenEmail)
        {
            var connection = conexao.CriaConexao();

            conexao.AbrirConexao(connection);

            SqlCommand command = new SqlCommand("TOKENEMAIL_INSERIR", connection);

            command.CommandType = CommandType.StoredProcedure;

            command.Parameters.AddWithValue("@Token", tokenEmail.Token);
            command.Parameters.AddWithValue("@DataValida", tokenEmail.DataValida);
            command.Parameters.AddWithValue("@Id_Usuario", tokenEmail.CodigoUsuario);

            SqlTransaction transaction = connection.BeginTransaction();

            command.Connection  = connection;
            command.Transaction = transaction;

            try
            {
                SqlDataAdapter dataAdapter = new SqlDataAdapter(command);

                string retorno = command.ExecuteScalar().ToString();

                transaction.Commit();

                return(Convert.ToInt32(retorno));
            }
            catch (Exception ex)
            {
                try
                {
                    transaction.Rollback();
                    throw new Exception(ex.Message);
                }
                catch (Exception ex2)
                {
                    throw new Exception(ex2.Message);
                }
            }

            finally
            {
                conexao.FecharConexao(connection);
            }
        }
コード例 #6
0
        public int AlterarToken(TokenEmailDTO tokenEmail)
        {
            var connection = conexao.CriaConexao();

            conexao.AbrirConexao(connection);

            SqlCommand command = new SqlCommand("TOKENEMAIL_ALTERAR", connection);

            command.CommandType = CommandType.StoredProcedure;

            command.Parameters.AddWithValue("@Id_Token", tokenEmail.CodigoToken);
            command.Parameters.AddWithValue("@Token", (!String.IsNullOrEmpty(tokenEmail.Token)) ? tokenEmail.Token : "");
            command.Parameters.AddWithValue("@DataValida", (!String.IsNullOrEmpty(tokenEmail.DataValida)) ? tokenEmail.DataValida : "");
            command.Parameters.AddWithValue("@Id_Usuario", tokenEmail.CodigoUsuario);

            SqlTransaction transaction = connection.BeginTransaction();

            command.Connection  = connection;
            command.Transaction = transaction;

            try
            {
                SqlDataAdapter dataAdapter = new SqlDataAdapter(command);

                string retorno = command.ExecuteNonQuery().ToString();

                transaction.Commit();

                return(Convert.ToInt32(retorno));
            }
            catch (Exception ex)
            {
                try
                {
                    transaction.Rollback();
                    throw new Exception(ex.Message);
                }
                catch (Exception ex2)
                {
                    throw new Exception(ex2.Message);
                }
            }
        }
コード例 #7
0
ファイル: EmailService.cs プロジェクト: rfabais/PortuLibras
        public Retorno EnviaResetSenha(string email)
        {
            if (email.Contains("\""))
            {
                email = email.Replace("\"", "");
            }

            //buscar usuario por email
            var usuario = new UsuarioDTO()
            {
                Email = email
            };

            //busca usuario
            var usuarioEncontrado = BuscaUsuario(usuario);

            //validar se email existe
            if (usuarioEncontrado == null)
            {
                return(new Retorno()
                {
                    Codigo = 404, Mensagem = "Email não encontrado."
                });
            }

            var tokenEmail = new TokenEmailDTO()
            {
                CodigoUsuario = usuarioEncontrado.CodigoUsuario,
            };

            //busca token no banco
            tokenEmail = BuscarTokenEmail(tokenEmail);

            //gera novo token
            string token = HelperEmail.GeraCodigo();

            //verificar se usuario ja possui token
            if (VerificaTokenExiste(tokenEmail))
            {
                //recebe novo token de reset de senha
                tokenEmail.Token = token;

                //gera data de expiracao adicionando 2 horas da atual
                tokenEmail.DataValida = DateTime.Now.AddHours(2).ToString("yyyy-MM-dd HH:mm:ss");

                //alterar novo token
                if (repositoryTokenEmail.AlterarToken(tokenEmail) == 0)
                {
                    return(new Retorno()
                    {
                        Codigo = 500,
                        Mensagem = "Falha ao gerar novo token, por favor entre em contato com o suporte"
                    });
                }

                //busca novo token alterado
                tokenEmail = BuscarTokenEmail(new TokenEmailDTO()
                {
                    CodigoUsuario = tokenEmail.CodigoUsuario
                });

                //envia email com novo token e retorna mensagem
                return(MontaEmailSenha(tokenEmail, usuarioEncontrado.Email));
            }

            tokenEmail = new TokenEmailDTO()
            {
                CodigoUsuario = usuarioEncontrado.CodigoUsuario,
                Token         = token,
                //gera data de expiracao adicionando 2 horas da atual
                DataValida = DateTime.Now.AddHours(2).ToString("yyyy-MM-dd HH:mm:ss")
            };

            //grava o token no banco
            int tokenInserido = repositoryTokenEmail.GravarTokenEmail(tokenEmail);

            //envia email e retorna mensagem
            var retorno = MontaEmailSenha(tokenEmail, usuarioEncontrado.Email);

            //caso erro exclui token
            if (retorno.Codigo == 500)
            {
                repositoryTokenEmail.DeletarTokenEmail(tokenInserido);
                return(new Retorno()
                {
                    Codigo = 500,
                    Mensagem = "Falha ao criar token"
                });
            }
            return(retorno);
        }
コード例 #8
0
ファイル: EmailService.cs プロジェクト: rfabais/PortuLibras
        private TokenEmailDTO BuscarTokenEmail(TokenEmailDTO tokenEmail)
        {
            var lstTokenEmail = repositoryTokenEmail.BuscarToken(tokenEmail);

            return(lstTokenEmail.FirstOrDefault(encontrado => encontrado.CodigoUsuario == tokenEmail.CodigoUsuario));
        }