O que estou deixando passar? Acabei de ter um usuário fazendo login pela primeira vez via SSO do WordPress. Configurei para que aprovações sejam necessárias. Essa opção não deveria aparecer aqui? Não faço ideia de como aprovar esse usuário
Tenho a notificação no menu de administração indicando que há um usuário aguardando aprovação.
Consigo reproduzir esse problema se eu ativar tanto o SSO quanto a configuração do site deve aprovar usuários. Para aprovar o usuário, clique no nome dele no item de revisão:
Legal. Isso foi resolvido, obrigado. Então, isso é por design? Não tenho certeza de como o conceito de ativação se encaixa aqui. Preciso ativar e aprovar a cada vez?
Acho que ter tanto o SSO quanto a opção deve aprovar usuários habilitada é um caso de borda um pouco peculiar. Não tenho certeza de como se espera que funcione. Idealmente, quando o SSO está habilitado, você deveria gerenciar a aprovação de usuários no site do provedor de SSO (WordPress). Infelizmente, isso exige algum código personalizado. Veja How to prevent some WP users from being able to login to Discourse para detalhes sobre como configurar isso.
Vou investigar como se espera que a aprovação de usuários funcione quando tanto deve aprovar usuários quanto o SSO estão habilitados. Se encontrar algo relevante, retorno aqui para informar.
Obrigado pela excelente resposta, @simon. Não mencionei isso antes porque era apenas baseado em uma lembrança (que, no meu caso, é sempre suspeita). Mas…
Acabei de ter um novo usuário fazendo login e imediatamente a opção de aprovação estava disponível, ou seja, não foi necessário passar pela etapa de ativação primeiro.
Então isso continua bastante confuso para mim. Não fiz nenhuma alteração de configuração que explicasse por que o processo foi diferente entre as duas pessoas mais recentes. A confusão reina…
Eu achava que não era permitido. O host do SSO é responsável por gerenciar os usuários. Meu entendimento é que, se você precisar que alguns usuários com contas no SSO não tenham acesso ao Discourse, você precisa gerenciar isso com grupos ou de alguma forma negar o login no Discourse.
Embora tenhamos essa estranheza de precisar tanto ativar quanto aprovar alguns usuários após eles tentarem fazer login, parece que está funcionando. Com as configurações que temos, o administrador precisa aprovar as solicitações após cada usuário tentar fazer login pela primeira vez. Isso é aceitável (quase – veja abaixo), então as duas configurações (usar SSO e aprovar usuários) parecem estar OK.
Dito isso, a incapacidade de pré-aprovar um conjunto de usuários antes que eles façam a primeira tentativa de login é infeliz e representa um grande problema. Isso significa que o usuário precisa esperar antes de poder fazer login, mesmo que nós (administradores) saibamos perfeitamente quem eles são com antecedência.
Suspeito que @simon esteja correto ao dizer que isso é um caso de borda do ponto de vista do Discourse. No entanto, é bastante comum que sites do WooCommerce vendam tanto produtos regulares quanto memberships. Estou nessa situação e é um cenário bastante frequente. Portanto, meus usuários estão divididos em dois conjuntos lógicos (e que se sobrepõem) – clientes e membros. Quero poder pré-aprovar a lista de membros para que eles não precisem esperar pela aprovação. Talvez eu busque automatizar isso mais tarde, mas só depois do lançamento do meu fórum em 1º de setembro, o que é uma pena.
Aha! Você quer configurar o WooCommerce para gerenciar esses grupos no Discourse, em vez de lidar manualmente com esses usuários no Discourse. Existem alguns tópicos sobre como fazer isso. Requer um pouco de código personalizado, e alguns exemplos estão disponíveis. Como referência, geralmente cobro entre US$ 1.000 e US$ 1.500 por esse serviço.
Obrigado, @pfaffman. Provavelmente consigo fazer isso sozinho com o tempo e já tenho pesquisado sobre o assunto. Para o lançamento, vou estabelecer a expectativa de que será necessária uma aprovação e tentarei tratá-las rapidamente. Após o lançamento, verei se consigo automatizar isso de alguma forma.
Uma esclarecimento sobre uma das minhas expectativas para a solução totalmente automatizada.
Quero evitar uma solução em que não membros consigam fazer login, mas sejam bloqueados ao tentar fazer qualquer coisa (talvez porque não pertençam a algum grupo relacionado a membros). Em vez disso, se não forem membros, quero que o login em si falhe, preferencialmente com a possibilidade de redirecioná-los para uma página onde possa explicar o motivo.
De outra forma, bloquear o login se não for membro é preferível a permitir o login e depois bloquear o acesso aos recursos.
@simon Acabei de dedicar alguns minutos a pesquisar possíveis soluções para esse desafio e acabei encontrando você nesta página WP Discourse – WordPress plugin | WordPress.org. Então, tenho uma pergunta mais específica para você sobre o plugin.
Meu negócio gira em torno de WordPress e WooCommerce, e todas as minhas integrações tendem a usar tags, sempre que possível, para gerenciar usuários. O WP Fusion é o elo que une tudo isso, mas, no fim das contas, tenho tags em todos os usuários (sejam clientes, membros, etc.).
Com esse contexto, o que adoraria conseguir fazer é escrever minha própria função no lado do WordPress que implemente alguma lógica (no meu caso, algo simples como verificar se o usuário tem uma determinada tag) e rejeite o login se esse critério não for atendido.
De cabeça, você sabe se existe algum hook que eu possa usar para implementar essa lógica? Seria uma solução incrível e deixaria o login ainda mais sob o controle do WordPress.
Sim, este tópico descreve como fazer o que você está procurando: How to prevent some WP users from being able to login to Discourse. A segunda postagem do tópico contém duas funções de exemplo que você pode utilizar. Você precisará fornecer o código para substituir o comentário /* Some condition that returns true if the user doesn't meet the membership requirement */ que está no exemplo de código.
Fantástico!! Acho que interpretei mal aquele tópico quando o li anteriormente, mas parece ser exatamente o que eu preciso. Pendente a implementação e os testes (palavras famosas!), acho que estou pronto!
Com certeza. Peço desculpas por ter perdido isso, @pfaffman, e agradeço pela sua ajuda. Vou configurar um VPS Discourse espelhado para se comunicar com meu site espelhado e, se tudo correr bem, espero ter isso funcionando em breve.