Hooks de: & para: sintaxe em yml

Olá, gostaria de reconstruir o aplicativo incluindo algumas modificações em um arquivo para desabilitar o recurso de busca para usuários anônimos (mais do que apenas com CSS).

Alguém pode me fornecer alguma documentação para a sintaxe desses hooks para a parte from: e to:?

replace
filename:“/var/www/discourse/app/controllers/search_controller.rb”
from:
to:

Em search_controller.rb, eu só quero substituir a linha 12 por
def show
por
def show
if current_user.present?

E a linha 76
format.json { render_json_dump(serializer) }
por
format.json { render_json_dump(serializer) }
end

Existe uma configuração de site oculta para realizar isso:

rate_limit_search_anon_global_per_minute
1 curtida

Obrigado por apontar isso. Só para esclarecer, qual é o nome da configuração oculta do site? E ela desabilita completamente a pesquisa para usuários anônimos, ou apenas oculta os resultados? Estou procurando uma maneira de bloquear o acesso no nível do controller, então queria saber se essa configuração sozinha é suficiente ou se algum código personalizado ainda é necessário.

Obrigado por fornecer a variável, com esta documentação consegui fazê-lo funcionar.

Então modifiquei o app.yml com o seguinte, salvei, então ./launcher restart app (sem necessidade de reconstrução)

env:
  DISCOURSE_RATE_LIMIT_SEARCH_ANON_GLOBAL_PER_MINUTE: 0

Agora a página /search está inacessível = ótimo
Agora o botão de pesquisa no front-end retorna instantaneamente: você realizou esta ação muitas vezes = ótimo
Você pode ocultar o botão de pesquisa com:

.anon #search-button {
	display: none !important;
}

Mas a questão é: isso é completo? Alguém pode simplesmente criar um cookie de sessão simples para parecer que está conectado, para que possa acessar o conteúdo do site por meio de pesquisas?

Solução mais completa, mas incompleta:
O arquivo é: /var/www/discourse/app/controllers/search_controller.rb
A modificação: adicione “if current_user.present?” após “def show” e adicione um “end” no final da condição.

No entanto, não consegui torná-lo persistente após a reinicialização, então qualquer pessoa é bem-vinda para dizer como torná-lo persistente após a reinicialização com os ganchos do app.yml after_code replace: feature.

Como fazer login para fazer pesquisas?

Na OP você especificou que deseja

E é isso que esta configuração faz.

Claro que não afetará os usuários que estão logados.

Quero dizer um usuário não logado que criaria um cookie de sessão para fingir que está logado, mas talvez eu esteja viajando um pouco aqui, já que eu acho que a função currentUser verifica a chave de sessão.

:face_with_raised_eyebrow:

Isso seria um problema de segurança. Se você conseguir fazer isso, certifique-se de relatar em HackerOne

1 curtida

“Isso seria um problema de segurança. Se você conseguir fazer isso, certifique-se de relatar para HackerOne

Não, sou novo no discourse, nem consigo citar direito :slight_smile: , eu só estava perguntando, talvez houvesse algum engenheiro do discourse por perto :slight_smile: ; de qualquer forma, conseguimos nossa solução para este tópico graças a você, Falco

1 curtida

DISCOURSE_RATE_LIMIT_SEARCH_ANON_GLOBAL_PER_MINUTE: 0

mas não hesite em tentar isso no nível do controlador:
/var/www/discourse/app/controllers/search_controller.rb
A alteração: adicione "if current_user.present?" depois de "def show" e adicione um "end" no final da condição.

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