Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Não quebrar links ao alterar nome de usuário #1665

Open
marcos-venicius opened this issue Apr 5, 2024 · 6 comments
Open

Não quebrar links ao alterar nome de usuário #1665

marcos-venicius opened this issue Apr 5, 2024 · 6 comments
Labels
novo recurso Nova funcionalidade/recurso

Comments

@marcos-venicius
Copy link

Descrição

Atualmente, caso você deseje alterar o seu nome de usuário, temos uma mensagem em que informa que caso ele seja alterado, todos os links serão quebrados.

A ideia é resolver isso e fazer como por exemplo o github, que, quando você altera o nome de um repositório, mesmo se você acessar o nome antigo, você conseguirá ter acesso.

Sugestão de implementação

Poderiamos ter uma tabela de referência de usuários, quando um nome de usuário fosse alterado, seria salvo o antigo nessa tabela e referenciado a tabela do usuário em questão.

Quando alguém tentasse acessar um link antigo (como o usuário antigo), checariamos primeiramente se existe algum post com esse usuário e a resposta seria não, pois o nome de usuário mudou, então, checamos o histórico de nomes de um usuário com esse determinado nome e encontramos um registro, então, redirecionamos o link para uma nova página utilizando o nome atual desse usuário.

Nesse ponto, pensei em uma questão que deve ser analisada:
Meu nome era "a" e mudei para "b", outra pessoa agora poderá utilizar o nome "a"?

@marcos-venicius marcos-venicius added the novo recurso Nova funcionalidade/recurso label Apr 5, 2024
@FilipeRicardo
Copy link

FilipeRicardo commented Apr 5, 2024

Daria para atenuar os efeitos da alteração do nome do usuário, sem problemas. A ideia do redirecionador é perfeitamente aplicável, inclusive sinalizando aos motores de busca a nova URL.

Quanto ao ponto do antigo nome de usuário ser usado, podemos ter dois desfechos.

  1. Proibir futuros cadastros com esse usuário, e manter o redirecionador pra sempre.
    Prós: os links não quebrariam em nenhuma hipótese
    Contras: o nome de usuário antigo ficaria indisponível pra sempre

  2. Deixar esse nome de usuário numa quarentena, e manter o redirecionador até o final da quarentena, dando tempo para os motores de busca absorverem as mudanças, e depois disso o nome de usuário ficaria liberado para ser usado.
    Prós: não impactaria os resultados nos buscadores, e o antigo nome de usuário ficaria disponível pra uso
    Contras: os links mencionados em sites de terceiros quebrariam, como já acontece hoje.

@marcos-venicius
Copy link
Author

Outro problema que é gerado em cascata com o ponto 1 é que, se um usuário malicioso altera o nome centenas ou milhares de vezes, temos uma brecha para um ataque onde ele poderia bloquear vários nomes na aplicação

@FilipeRicardo
Copy link

Daria pra colocar um limite de vezes ou um intervalo de tempo pra coibir o uso inapropriado.

@marcos-venicius
Copy link
Author

Sim, isso é um fato.

Outra coisa é, também deveríamos permitir que novas postagens sejam acessíveis em links antigos?

Não influencia em segurança, mas é uma questão interessante também.

Acredito que o ideal seria não permitir, porque se não, abre brecha para o usuário continuar fazendo postagens no link antigo.

Exemplo, a pessoa criou um novo post, quando tentar acessar pelo link antigo, ele simplesmente informa que não encontrou nada.

@mthmcalixto
Copy link
Contributor

mthmcalixto commented May 13, 2024

@marcos-venicius @FilipeRicardo Fiz um PR sobre mais está cedo para isso, então acredito que isso só vai mudar em um longo prazo.

Por enquanto todas as URLS vão quebrar e como nada é salvo no Banco de Dados é impossível fazer a recuperação mais a frente.

@klawdyo
Copy link

klawdyo commented Jun 13, 2024

Uma ideia seria criar uma desambiguação, como acontece com a wikipedia.

  1. Antes de retornar o erro 404, pesquise pelo slug da postagem, se ele existe em outros usuários. Caso não exista, retorne o erro. Se existir em pelo menos 1 usuário, mostre a lista de opções com uma mensagem dizendo algo assim: A URL não foi encontrada. Ela pode ter sido removida ou o usuário mudou de nome, o que pode ter quebrado o link original. Verifique abaixo as postagens parecidas. Aí lista os links com a mesma slug, mudando apenas o usuário.
  2. Na página da postagem, colocar um link de compartilhamento, um estímulo para que o cara use um link fixo, ao invés de um link baseado no usuário, ex.: /post/12312312-1232-1223-4122-1224444444444, Esse link sempre redireciona para a url mais atual. Então, mesmo que o cara mude, ela sempre vai para o link mais atual. É interessante que o cara use esse link para postagens em outros sites.
  3. Ainda que haja mudança no nome de usuário e outra pessoa possa vir a usá-lo, os links para as postagens não devem se repetir. Ou seja, ainda que o cara com um nome reutilizado crie uma postagem que pudesse vir a receber o mesmo link de uma postagem feita pelo usuário antigo do nome, o slug deve considerar esse histórico. Ou seja, criar um histórico de links após a mudança para que os próximos usuários não consigam repeti-lo e assim o redirecionamento funcionar para sempre.

Observações: Os comentários acima consideram que o user1 e user2 poderiam criar postagens com o mesmo slug, tipo: /user1/teste e /user2/teste, o que eu não sei se é verdade, mas creio que seja. Se não for, desconsidere.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
novo recurso Nova funcionalidade/recurso
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants