Issue #263

Closed
noosferogov/noosfero#263
Created by Caio Almeida (Edited )

Consertar redirecionamento para perfis com domínio próprio

http://dominio/identificador deve redirecionar para o domínio próprio quando disponível (ou seja, deve redirecionar para http://dominioproprio ao invés de http://dominioproprio/identificador).

4 participants
  • 0857617ca13d090825c8eb4228efb6ae?s=40&d=identicon
    Marcos Pereira @marcosronaldo

    @caiosba, testando local to observando que atualmente http://dominioproprio/ sempre leva para http://dominioproprio/profile/identificador. O desejado é que http://dominioproprio/identificador então também vá para http://dominioproprio/profile/identificador ?

    Choose File ...   File name...
    Cancel
  • 0857617ca13d090825c8eb4228efb6ae?s=40&d=identicon
    Marcos Pereira @marcosronaldo (Edited )
     #match requests for profiles that don't have a custom domain                                                                                                                                                
    
    match ':profile(/*page)', controller: 'content_viewer', action: 'view_page', profile: /#{Noosfero.identifier_format_in_url}/i, constraints: EnvironmentDomainConstraint.new, via: :all
    

    Nesse caso retirar a restrição dessa rota acima ia fazer o match funcionar tambem para quem dominio proprio, e ter o comportamento que descrevi.

    Choose File ...   File name...
    Cancel
  • Fcd7708520a028e7cdb9f57fcc5e438e?s=40&d=identicon
    Caio Almeida @caiosba

    O desejado é que http://dominio/identificador vá para o perfil.

    Exemplo:

    http://softwarelivre.org/phls -> retorna 404 mas deveria redirecionar para http://phls.com.br/, mas hoje redireciona para http://phls.com.br/phls (o que é redundante).

    Choose File ...   File name...
    Cancel
  • 0857617ca13d090825c8eb4228efb6ae?s=40&d=identicon
    Marcos Pereira @marcosronaldo

    ele vai para o perfil, mas a url fica http://dominioproprio/profile/identifier

    Choose File ...   File name...
    Cancel
  • Fcd7708520a028e7cdb9f57fcc5e438e?s=40&d=identicon
    Caio Almeida @caiosba

    Reassigned to @marcosronaldo

    Choose File ...   File name...
    Cancel
  • Fcd7708520a028e7cdb9f57fcc5e438e?s=40&d=identicon
    Caio Almeida @caiosba

    @marcosronaldo você está fazendo essa?

    Choose File ...   File name...
    Cancel
  • 0857617ca13d090825c8eb4228efb6ae?s=40&d=identicon
    Marcos Pereira @marcosronaldo

    Vou retomar no fim da tarde.

    Choose File ...   File name...
    Cancel
  • 0857617ca13d090825c8eb4228efb6ae?s=40&d=identicon
    Marcos Pereira @marcosronaldo

    Reassigned to @thiago

    Choose File ...   File name...
    Cancel
  • 40978867608e81b4fb066c2e92f45620?s=40&d=identicon
    Larissa Reis @larissareis

    @marcosronaldo @thiago a ideia é que o link para a home page de um perfil funcione independente do perfil ter domínio próprio ou não.

    Por exemplo:

    A url http://softwarelivre.org/profile/reisl leva para a página do meu perfil (ou seja, a página com meu mural e dados do perfil). Como eu não tenho nenhum blog/pasta/conteúdo definido como minha homepage, a url http://softwarelivre.org/reisl leva também para a mesma página do meu perfil (ou seja, redireciona para http://softwarelivre.org/profile/reisl).

    Já no caso de terceiro, que tem o blog como homepage, http://softwarelivre.org/terceiro leva para essa homepage e não para a página de perfil (http://softwarelivre.org/profile/terceiro).

    Agora veja o caso de alguém com domínio próprio quando eu tento acessar o perfil a partir do domínio da rede (nesse caso http://softwarelivre.org/) :

    1. No caso da página de perfil, funciona como esperado: http://softwarelivre.org/profile/phls redireciona para http://phls.com.br/profile/phls, que é a página do perfil.
    2. Mas http://softwarelivre.org/phls (que levaria para a homepage) redireciona para http://phls.com.br/phls, que não existe. O que queremos é que http://softwarelivre.org/phls redirecione para http://phls.com.br/ que é a homepage. Ou seja, queremos que o mesmo comportamento de redirecionamento da página de perfil funcione também para a homepage.

    Você teria duas formas de fazer isso: ou fazer com que o noosfero reconheça que http://phls.com.br/phls existe e é a homepage do perfil de Paulo Santana, ou fazer http://softwarelivre.org/phls redirecionar direto para http://phls.com.br/ no lugar de http://phls.com.br/phls. Só analisando o código para ver qual forma seria a mais correta/simples de implementar.

    Qualquer dúvida entre em contato comigo ou @caiosba

    Choose File ...   File name...
    Cancel
  • 800e3af93350753db9dee1864cef10ff?s=40&d=identicon
    Thiago Ribeiro @thiago

    @larissareis enviei um MR, eu resolvi pelo routes.rb e verifiquei da seguinte forma:

    • Coloquei um dominio em uma comunidade ex: foo
    • Vi que quando voce tenta foo/comunidade a pagina não existe, agora localhost/comunidade ele redireciona certo
    • Corrigi via rota, assim quando ele tiver um dominio setado ele redireciona assim:
      • se tiver localhost/comunidade e ela tiver um dominio ela vai para o dominio dela (via redirect 301) ( se não tiver nada setado como homepage ele vai para o /profile/comunidade)
      • se eu tentar a url dominio/comunidade ele redireciona (301) para o dominio ( se não tiver nada setado como homepage ele vai para o dominio/profile/comunidade)

    O merge é: https://gitlab.com/noosfero/noosfero/merge_requests/881

    Choose File ...   File name...
    Cancel
  • 40978867608e81b4fb066c2e92f45620?s=40&d=identicon
    Larissa Reis @larissareis (Edited )

    @thiago acho que ainda não ficou claro o que a gente quer com essa issue. No exemplo que você deu, o correto seria que http://localhost/foo redirecionasse para http://domain, assumindo que foo é o identificador da comunidade. A url http://dominio/comunidade ou http://localhost/comunidade não deve redirecionar para nada (de novo assumindo que o identificador é foo), inclusive, de preferência, http://domain/foo também não precisa redirecionar.

    Me dê ping no irc para a gente discutir melhor.

    Choose File ...   File name...
    Cancel
  • 40978867608e81b4fb066c2e92f45620?s=40&d=identicon
    Larissa Reis @larissareis

    Status changed to closed

    Choose File ...   File name...
    Cancel
  • 40978867608e81b4fb066c2e92f45620?s=40&d=identicon
    Larissa Reis @larissareis

    Esse problema se mostrou mais complicado de resolver do que o esperado, então vamos contornar a nossa necessidade de uso desse redirecionamento e fechar essa issue.

    Para registro, o redirecionamento para domínio próprio é feito em lib/needs_profile.rb em #load_profile:

      profile_hostname = @profile.hostname
      if profile_hostname && profile_hostname != request.host
        params.delete(:profile)
        redirect_to(Noosfero.url_options.merge(params).merge(:host => profile_hostname))
      end
    

    E esse redirecionamento, apesar de não haver nenhum profile, dá match na rota:

     # match requests for profiles that don't have a custom domain
     match ':profile(/*page)', controller: 'content_viewer', action: 'view_page', profile: /#{Noosfero.identifier_format_in_url}/i, constraints: EnvironmentDomainConstraint.new, via: :all
    
    Choose File ...   File name...
    Cancel