Impersonation Recursiva

Olá a todos,

Configurei um servidor Discourse para um cliente e permiti que ele criasse contas de teste, que eu sabia que ficariam obsoletas assim que o SSO fosse implementado. Configurei tudo, personalizei meu tema e escrevi descrições de categorias para tudo usando minha conta de administrador A.

Depois de configurar o DiscourseConnect (como a única opção de cadastro), fiz login com minha conta de administrador a partir do outro sistema e concedi direitos de administrador a essa conta B. A partir daí, faria qualquer coisa na conta B, pois não conseguiria mais fazer login como A.

Então, deparei-me com o botão “impersonar” e fiquei curioso. Parecia que não precisava excluir a conta A, se pudesse apenas impersoná-la para editar descrições de categorias, FAQs etc. Então, usei B para impersonar A e fiz várias edições para testar, e tudo funcionou bem.

Até que fiquei curioso se também poderia impersonar a conta de bot do fórum. Então, enquanto ainda impersonava A (que por acaso era um administrador), decidi impersonar C. Funcionou, ótimo, então, diligentemente, fiz logout e segui meu dia.

Agora, quando faço login como B, não consigo mais impersonar A ou C (outros usuários estão ok). O local onde o botão deveria aparecer apenas diz: “Administradores e moderadores não podem ser excluídos”.

Os logs indicam que “B impersonou A” e “A impersonou C”.

Não tinha certeza se isso justificava um relatório de bug — já que atualmente não tenho como reproduzir meus passos — ou se havia uma maneira fácil de corrigir isso.

Obrigado antecipadamente,
Flo

E aí, Flo, bem-vindo à comunidade :waving_hand:t2:

O botão de Impersonar ainda está lá e eu estou na versão mais recente.

É possível fazer login na conta Admin A usando /users/admin-login para entrar via e-mail? Isso pode permitir que você desate o nó?

2 curtidas

Olá Gavin,

Como posso saber em qual versão estou através da interface? No Dashboard, aparece “última atualização em 3 de agosto”, mas não consigo ver um número de versão.

Obrigado

Oi, JammyDoger,

Eu não sabia que essa rota existia! Isso definitivamente resolve o problema de contornar o DiscourseConnect, embora eu não tenha conseguido desatar o nó, por assim dizer. Os botões de “Impersonar” aparecem para o usuário A, então estou assumindo que eles atualmente não estão impersonando ninguém?

Você pode visualizar o código-fonte. Não é difícil encontrá-lo.

Acesse /u/admin-login e altere o e-mail da conta de administrador para um que permita login via SSO. Você também pode alterar o endereço pelo console do Rails.

1 curtida

Oi Jay,

Eu apenas assumi erroneamente que, se você está ocultando deliberadamente a informação dos administradores, então ela não seria pública. Vamos ficar com a 2.8.0.beta4.

Quanto à sua segunda sugestão, não quero fazer isso, pois o usuário A não tem um equivalente no meu outro sistema; no entanto, qualquer usuário pode potencialmente ter uma conta no fórum.

Agora você pode fazer logout da conta Admin A para garantir que ela foi redefinida para admin e não está mais se passando por outra pessoa?

(e faça logout da Admin B também, só para garantir :slightly_smiling_face:)

Oi JammyDodger,

Sim, saí da conta em ambos e entrei novamente na B, mas nada :upside_down_face:

O seu parece com este?

Isso é praticamente o fundo do meu pequeno barril de conhecimento. :slightly_smiling_face: Não tinha certeza se administradores podiam se passar por outros administradores (eu achava que só os desenvolvedores podiam). Você removeu o Admin B dessa lista?

Espero que alguém com mais conhecimento possa contribuir com algo mais relevante. :slightly_smiling_face::crossed_fingers:

1 curtida

Oi Gavin,

Não, não estou vendo uma seção de Versão

Então sua conta não é de Administrador.

Sugiro que adicione sua Conta B à seção Dev no arquivo yml do app, como mencionado por @JammyDodger.

  ## TODO: Lista de e-mails separados por vírgula que serão definidos como administrador e desenvolvedor
  ## no primeiro exemplo de cadastro 'user1@example.com,user2@example.com'
  DISCOURSE_DEVELOPER_EMAILS: 'gavin@truecode.co.za'
2 curtidas

Parece que você estava no caminho certo, afinal. Obrigado!
Sua contribuição foi muito apreciada ˆˆ

2 curtidas

Isso funcionou, os botões de impersonar voltaram! Obrigado, Gavin ˆˆ

Ainda não estou vendo a seção Versão do painel e continua pouco claro por que eu pude impersonar alguém em primeiro lugar..

1 curtida

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.