[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
Gabriel Matheus Silva
Criador Gabriel Matheus Silva 25/05/2021

Olá, Carlos! Tudo certo?

Estou implementando uma API e a mesma possui uma estrutura semelhante a do curso.
O problema está no helper "request()". Como estou lidando com requisições via postman e, posteriormente com o Vue, percebi que nos testes o "request()->getHost" não captura o host.
Claro que testando um pouco mais percebi que se a request for recebida por parâmetro (Request $request) funciona corretamente justamente por conta de estar armazenado a raiz da requisição. Só que ter que informar isso em toda requisição é complicado.
Teria alguma forma de automatizar essa captura do host? Qual seria a forma mais segura: continuar me baseando pela URL em toda requisição ou salvar o tenant (subdomain) da URL no VUEX e usar o que estiver em memória? Você tem mais sugestões?
Desde já agradeço!Fico no aguardo.

Manager Carlos Ferreira 25/05/2021

Olá, Gabriel!
Tudo certo, e com você amigo?

Usando um objeto de Request ao invés do helper request() deu certo?
Pode criar um service pra fazer essas operações do request de getHost

Se quiser me passar um pouco mais de detalhes na prática do que está fazendo, eu consigo te guiar melhor.

Mas, se entendi bem, você pode usar um Service e centralizar essa responsabilidade nele (inclusive usando um objeto de Request)

Carlos Ferreira
Criador Gabriel Matheus Silva 25/05/2021

Opa, comigo tudo bem, graças a Deus!

Então professor... fazendo alguns testes, vi que ao usar o helper app(), era ele quem estava "dando problema". Eu instanciei a classe diretamente sem o uso do helper e a mesma funcionou sem pestanejar. Só não sei o motivo disso ter acontecido...

Sobre os detalhes do projeto, estou desenvolvendo um sistema multitenant (singleDB), porém separando completamente a API do front. Já fiz a parte de autenticação, não permitindo que o usuário se conecte a um tenant do qual ele não pertence. Quero encontrar uma forma de manter os tenants separados e nao correr o risco de uma empresa ter acesso das outras.

No caso dos Services, qual sua sugestão?

Enfim... Aceito dicas pro projeto de forma geral! hahaha
Abraço, Carlos! Fico no aguardo!

Gabriel Matheus Silva
Manager Carlos Ferreira 25/05/2021

Estranho o helper app dar problemas, se quiser depois me passar os detalhes te ajudo a resolver.

A ideia de Services, seria centralizar a lógica em classes específicas (igual fizemos no LaraFood), você cria classes com responsabilidades muito bem definidas em app/Services/NomeDoServiço.php e centraliza as lógicas nessas classes.

Uma das formas que pode usar para não ter problemas com o getHost, é experimentar expor o seu localhost, e acessar a API de uma URL válida. Para isso eu uso e recomendo o ngrok, faça o teste: https://academy.especializati.com.br/aula/webhook-stripe

Carlos Ferreira
Criador Gabriel Matheus Silva 25/05/2021

Carlos, curti demais a ideia do webhook! Ficou sensacional na aula e irei testa-lo assim que possível!

Inclusive gostaria de tirar outra dúvida contigo: eu tenho um sistema que já está rodando que é multitenant multi-database baseado no seu curso (aliás eu acabei esquecendo de responder o suporte da plataforma "campus", perdoe-me).

Esse projeto ainda não possui um sistema de assinatura, mas preciso implementá-lo e liberar recursos de acordo com a quantidade de itens que o usuário for criando na plataforma.

Se eu tentar explicar o tipo de recurso, talvez fique muito confuso. Então, pra ser mais direto, imagina um sistema de assinatura que você faça a cobrança por usuário cadastrado. A lógica é a mesma, a diferença é que pra cada novo recursos que o usuário for criar, eu preciso antes efetuar a cobrança ou encaminha-lo para o meu time comercial.

Esse curso de assinatura consegue me ajudar nessa questão?
E sobre ser um sistema multitenant multidb, Toda hora preciso ficar trocando conexão ao tentar salvar uma coisa do painel principal para os tenants ou vice-versa. E pior, estou usando postgres (ele é excelente em performance em relação ao MySQL, mas as vezes ele retira a indexação de alguma tabela e acaba me lascando). Teria alguma outra solução que você me indicaria pra evitar a troca de conexão constante?

Gabriel Matheus Silva
Manager Carlos Ferreira 25/05/2021

Com o Cashier isso é super possível, eu explico durante o curso o conceito de subscription "default" e outra options.

Porque o mesmo usuário pode ter N assinaturas, uma para liberar pontos específicos do sistema.

Sem dúvidas o curso de subscriptions vai te atender super bem.

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!