Tenho um caso de uso específico e gostaria de saber se existe uma maneira mais fácil de fazê-lo.
Nem todos os nossos usuários (via nosso SSO) possuem contas ativas no fórum
Precisamos regularmente adicionar usuários a um grupo do fórum para acessar um fórum privado
Não se sabe se os usuários têm contas ativas no fórum antes de tentar adicioná-los ao grupo
Por exemplo:
Cada mês, um membro da equipe tem uma lista de mais de 100 contas que se qualificam para acessar o fórum privado. Essas contas têm nomes de usuário SSO e endereços de e-mail, mas podem não ter uma conta no fórum ainda.
Existe uma maneira simples de adicionar pessoas a um grupo se elas já tiverem contas no fórum e convidá-las para o fórum (adicionando-as automaticamente ao grupo) se não tiverem?
Na página Grupos, o botão Adicionar Membros permite colar uma lista separada por vírgulas de nomes de usuário. Quando esses nomes de usuário são válidos, eles são adicionados ao grupo. Quando um nome de usuário não é válido (ou seja, ainda não há conta no fórum), a operação falha e eles não são adicionados.
Além de varrer manualmente a lista de usuários adicionados com sucesso ao grupo, identificar quais nomes de usuário não foram adicionados e, em seguida, enviar um convite para o fórum a essas pessoas (por exemplo, (Superseded) Multiple Use Invite Links) - existe uma maneira simples de combinar Convite e Adicionar ao Grupo para uma mistura de usuários atuais e potenciais do fórum?
Você já verificou a possibilidade de adicionar usuários a grupos do Discourse usando os parâmetros SSO add_groups e remove_groups? Para usuários que já existem no seu provedor SSO, é possível criar contas no Discourse para eles e adicioná-los a grupos do Discourse fazendo uma chamada de API para a rota sync_sso. Há mais detalhes sobre como configurar isso aqui: Sincronizar dados do usuário SSO com a rota sync_sso. Podemos fornecer mais detalhes sobre como configurar isso se parecer uma abordagem viável para você.
Todos os nossos usuários existem no site SSO (eles são vendedores em nossos marketplaces), mas apenas um subconjunto deles acaba criando contas no Discourse para usar nossos fóruns. Esse SSO cobre tanto clientes quanto vendedores: não quereríamos criar automaticamente contas no Discourse para todos os clientes (são muitos demais!), mas fazer isso para todos os vendedores simplificaria as coisas drasticamente.
Neste caso, precisamos conceder acesso a grupos de fóruns privados apenas a vendedores específicos, quando eles começam a usar marketplaces ou serviços específicos.
Por exemplo: um vendedor no Marketplace 1 tem uma conta SSO. Nesse momento, ele pode criar uma conta no Discourse ao fazer login nos fóruns.
Mais tarde, esse vendedor ganha acesso ao Marketplace 2, e sua conta SSO registrará essa mudança. Temos um grupo de usuários personalizado (e uma categoria de fórum privada) para esse marketplace.
Se ele já tiver uma conta no Discourse até esse ponto, precisaremos atualizar seus grupos para que ele possa ver a área do fórum privado.
Se ele ainda não tiver uma conta no Discourse, gostaríamos de criar uma para ele com os grupos relevantes.
Atualmente, a equipe usa “adicionar ao grupo” com uma lista de nomes de usuário separada por vírgulas. Se os usuários já tiverem uma conta no Discourse, eles ganham acesso ao grupo… se ainda não estiverem nos fóruns, nada acontece.
Para capturar usuários que criaram suas contas no Discourse desde a última vez que um lote foi adicionado ao grupo, a equipe geralmente inclui todos os nomes de usuário qualificados dos últimos X meses ao tentar atualizar a associação ao grupo, o que é um processo bastante complicado.
Se você fizer uma chamada à API para a rota sync_sso que inclua o parâmetro SSO add_groups, os usuários existentes serão adicionados ao grupo. Se o usuário ainda não tiver uma conta no Discourse, uma conta será criada para ele e ele será adicionado ao grupo. Você pode usar o parâmetro SSO remove_groups de forma semelhante para remover usuários dos grupos. Outra vantagem de usar a rota sync_sso para isso é que não é necessário que o usuário saia e entre novamente no Discourse para que a alteração tenha efeito.