Permitir acesso apenas quando o usuário tiver um plano de assinatura no Memberpress

Meu cliente tem uma instalação do WordPress com o Memberpress, que é onde o usuário faz login para acessar o Discourse.

Existe alguma maneira de permitir o acesso ao Discourse apenas para usuários que tenham um plano ativo do Memberpress?

Obrigado,
Per

Veja minha primeira resposta a este tópico para detalhes sobre como restringir logins no Discourse: How to prevent some WP users from being able to login to Discourse. Isso pressupõe que o site WordPress está funcionando como provedor de SSO para o Discourse e que você está usando o plugin WP Discourse.

Obrigado, Simon, isso é incrível! :slight_smile:

Isso me permite verificar o acesso antes de redirecionar o usuário para o Discourse.
Você sabe se existe uma boa maneira de verificar se um usuário tem uma assinatura ativa?
Essa seria a condição para eu decidir se devo ou não redirecioná-los para o Discourse.

Obrigado!!

Tenho certeza de que existe uma maneira de fazer isso, mas não tenho certeza de como acessar o nível de assinatura do Memberpress de um usuário no WordPress. É possível que haja exemplos de como fazer isso em posts da nossa categoria Support > WordPress.

ok, obrigado :slight_smile:
Tenha um ótimo fim de semana!

Se mais alguém estiver tentando alcançar o mesmo, encontrei a solução aqui:

Simon: uma última pergunta: por quanto tempo um usuário permanece logado no Discourse antes de ser desconectado? Ou o usuário permanece logado para sempre até clicar no botão “sair”?

Isso é controlado pela configuração do site maximum session age do Discourse. Essa configuração tem como padrão 1440 horas. A menos que seja definida para um valor muito baixo, não é uma maneira confiável de desconectar usuários. Isso ocorre porque ela define o tempo que um usuário permanecerá logado desde sua última visita. Definir maximum session age para um número muito pequeno de horas também pode causar desconforto para os usuários do seu site.

Acho que sua melhor abordagem seria desconectar os usuários do Discourse por meio da API quando as associações expirarem. Há um exemplo de código mostrando como fazer isso aqui: wp-discourse/lib/sso-provider/discourse-sso.php at main · discourse/wp-discourse · GitHub. Você pode precisar de ajuda de um desenvolvedor para fazer uma chamada à API e desconectar os usuários do Discourse quando a associação deles expirar.

Posso simplesmente chamar a função logout_from_discourse() ou preciso copiar todo aquele código?

Não é tão simples quanto apenas chamar a função logout_from_discourse(), mas deve ser possível usar um hook de ação do WordPress para chamar essa função quando uma ação específica for executada no seu site WordPress. Por exemplo, quando o nível de associação de um usuário for revogado. Possivelmente, alguém na comunidade Discourse pode ajudá-lo com a sintaxe necessária para fazer isso funcionar.