Adicionando usuários programaticamente quando o SSO está sendo usado

Temos uma cópia interna do Discourse configurada para exigir o uso de SSO, e ela está conectada ao nosso servidor LDAP. Isso significa que qualquer membro da equipe pode fazer login facilmente usando seu nome de usuário e senha comuns, mas a conta só é criada no primeiro login.

Há alguma discussão interna sobre tentar aumentar a interação social entre os funcionários, mas muitos deles relutam em fazer qualquer coisa além de usar e-mail.

Portanto, estou tentando descobrir como resolver esse desafio usando o Discourse. Já resolvi a parte relacionada ao e-mail (ou seja, configurar o Discourse para que as categorias tenham seus próprios endereços de e-mail de entrada), mas vejo dois desafios sobre os quais não tenho certeza de como resolver:

  1. Idealmente, gostaria que todos tivessem uma conta no Discourse antes de fazer login. O motivo é que, se eles enviarem um e-mail ao Discourse sem ter uma conta primeiro, o sistema terá os dados completos do usuário, em vez de tratá-los como anônimos.

  2. Gostaria que todos pudessem receber e-mails de resumo do Discourse, para que fiquem cientes da criação de tópicos (mesmo que nunca acessem o Discourse), mas isso também exige que a conta já exista.

Alguma sugestão sobre o que posso fazer? Existe uma maneira de criar contas no Discourse programaticamente para que elas se integrem ao SSO quando as pessoas fizerem login?

Obrigado.

You can do it via the API. Here’s an example: GitHub - pfaffman/discourse-user-creator: Create an activated user, optionally assigning to group

Thanks … one issue I can think of is that I have to supply a password when creating the user. Presumably, if SSO is being enforced, Discourse actually ignores the password I’ve provided? (Testing would prove that, I guess!)

Yeah. Since you’re using SSO the password won’t matter, or can be omitted. Testing would be the way to prove it! If you’d like help and have a budget, my contact info is in my profile.

You can create users with the sync_sso route. There is some PHP code in this post that gives an example of how to do it: If someone changes their email in WordPress, change it in Discourse - sso_sync. In that code, it’s being used to update a user’s email, but the same idea will work to create a new user.