Mudar o campo de username para email no FOSUserBundle

37 views
Skip to first unread message

Hugo Henrique

unread,
Jan 23, 2013, 11:21:14 AM1/23/13
to symfo...@googlegroups.com
Olá pessoal, alguém já conseguiu colocar o FOSUserBundle para funcionar trocando o campo de username para email, por que estou aqui de mãos atadas já perdi várias horas e o negócio simplesmente não funciona.
Relatem a experiência de vocês, abraço.

Jefferson Oliveira

unread,
Jan 23, 2013, 11:54:18 AM1/23/13
to symfo...@googlegroups.com

Cara,

fiz uma gambiarra que achei elegante. Dentro do meu arquivo de entidades do Doctrine (caminhoDoBundle/Entity/User.php) fiz com que o campo username fosse setado com o valor do email, assim:

    public function setEmail($email)
    {
        $this->email = $email;

        $this->setUsername($email);

        return $this;
    }

    public function setEmailCanonical($emailCanonical)
    {
        $this->emailCanonical = $emailCanonical; 

        $this->setUsernameCanonical($emailCanonical);

        return $this;
    }


Fora isso, habilitei essa opção aqui: https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/logging_by_username_or_email.md. Habilitar isso se torna redundante, uma vez que o campo username será o e-mail. Mas achei legal ativar.

Ah, tem uma terceira alteração: no meu RegistrationFormType.php, removi o campo username do FOS, assim:

$builder->remove('username');


Abraços,
--
Jeff
Skype: falecomjeff
http://twitter.com/botecodojeff


Em 23 de janeiro de 2013 14:21, Hugo Henrique <con...@hugohenrique.com.br> escreveu:
Olá pessoal, alguém já conseguiu colocar o FOSUserBundle para funcionar trocando o campo de username para email, por que estou aqui de mãos atadas já perdi várias horas e o negócio simplesmente não funciona.
Relatem a experiência de vocês, abraço.

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Symfony Brasil" dos Grupos do Google.
Para ver esta discussão na web, acesse https://groups.google.com/d/msg/symfony-pt/-/mzrzSLd55w4J.
Para postar neste grupo, envie um e-mail para symfo...@googlegroups.com.
Para cancelar a inscrição nesse grupo, envie um e-mail para symfony-pt+...@googlegroups.com.
Para obter mais opções, visite esse grupo em http://groups.google.com/group/symfony-pt?hl=pt-BR.

Hugo Henrique

unread,
Jan 23, 2013, 12:13:57 PM1/23/13
to symfo...@googlegroups.com
Como está sua entidade? e sua tabela?

Jefferson Oliveira

unread,
Jan 23, 2013, 12:25:53 PM1/23/13
to symfo...@googlegroups.com
Hugo,

não entendi a razão para essa pergunta. Te informo abaixo como minha entidade e minha tabela está, sem problemas. Mas veja, isso não influencia em nada na sua dúvida inicial, que é apenas saber como fazer para que o username se transforme em email.

Respondendo à sua pergunta:

Minha tabela está está idêntica a tabela fos_user, gerada durante a instalação do Bundle. A exceção é que adicionei um campo a mais para cadastrar o domínio do usuário, pois precisarei disso para as regras de negócio que apliquei. Assim, minha entidade contém isso, além do padrão de instalação do Fos:

     /**
     * @ORM\Column(type="string", length=100)
     *
     * @Assert\NotBlank(message="Please enter your domain.")
     */
    protected $domain;

     /**
     * Set domain
     *
     * @param string $domain
     * @return User
     */
    public function setDomain($domain)
    {
        $this->domain = $domain;

        return $this;
    }

    /**
     * Get domain
     *
     * @return string 
     */
    public function getDomain()
    {
        return $this->domain;
    }

Além do código acima, coloquei os métodos informados na mensagem anterior, para fazer com que o username tenha o valor do email.

Qualquer coisa, grite aí.

Abraços,
--
Jeff
Skype: falecomjeff
http://twitter.com/botecodojeff


Em 23 de janeiro de 2013 15:13, Hugo Henrique <con...@hugohenrique.com.br> escreveu:
Como está sua entidade? e sua tabela?

--
Você está recebendo esta mensagem porque se inscreveu no grupo "Symfony Brasil" dos Grupos do Google.
Para ver esta discussão na web, acesse https://groups.google.com/d/msg/symfony-pt/-/uySOl16Ol3MJ.

Isaac Henrique

unread,
Jan 23, 2013, 1:03:46 PM1/23/13
to symfo...@googlegroups.com
O cara dá o suporte e maluco vêm com quatro pedras na mão. Phoda isso! :(
--
________________________________
       Isaac Henrique Barbosa Nunes
  Analista e Desenvolvedor de Sistema

Jefferson Oliveira

unread,
Jan 23, 2013, 1:27:32 PM1/23/13
to symfo...@googlegroups.com
Isaac,

me diga onde pareci grosseiro e não pensarei duas vezes em me desculpar. Meu único intuito aqui e colaborar e também aprender.
Experimente reler a mensagem sem um olhar negativo. :-)

Grande abraço!
--
Jeff
Skype: falecomjeff
http://twitter.com/botecodojeff


Cassiano Tartari

unread,
Jan 23, 2013, 2:02:56 PM1/23/13
to symfony-pt
Eu estava procurando como colocar uma confirmação de senha para cadastro de usuário e acabei encontrando no mesmo post a tua questão de usar o e-mail como usuário, não me foquei ainda nesse ponto pois quero primeiramente fazer a confirmação de senha. Em todo caso segue o post:

http://stackoverflow.com/questions/5311308/custom-validation-in-symfony2

Cassiano Valle Tartari
MSc. Computer Engineer

Tel: +55.48.84474818
Email: fal...@cassianotartari.eng.br
Site: http://www.cassianotartari.eng.br

QR Code


2013/1/23 Jefferson Oliveira <falec...@gmail.com>

Jefferson Oliveira

unread,
Jan 24, 2013, 7:55:43 AM1/24/13
to symfo...@googlegroups.com
Cassiano,

se estivermos falando a mesma língua, dê uma olhada nisso aqui: http://symfony.com/doc/current/reference/forms/types/repeated.html. O formato de campo no tipo repeated cria a um campo de confirmação e só deixa o formulário ser enviado se os campos forem idênticos.

Se eu não entendi bem e você estiver falando de confirmação de cadastro por e-mail (via FosUserBundle) me avise, que acho que também posso ajudar. Fiz isso uma vez.

Abraços,
--
Jeff
Skype: falecomjeff
http://twitter.com/botecodojeff


Cassiano Tartari

unread,
Jan 24, 2013, 8:03:08 AM1/24/13
to symfony-pt
Valeu Jefferson!

Eu matei essa ontem mesmo!

             ->add('plainPassword','repeated', array(
                    'type' => 'password',
                    'invalid_message' => "usuario.form_senha_invalida",
                    'options' => array('label' => 'usuario.form_senha'),
                    'second_options' => array('label' => 'usuario.form_senha_confirmacao')
             )


Só não entendi porque diabos as opções first_name e second_name não funcionaram com o propósito que fiz com 'options' => array('label' =>

Sou muito novo no symfony, recém complentando 1 mês de estudos, mas já consegui fazer o meu formulário de cadastro de usuário custumizado agora estou tentando entender como funciona o ACL pra criar as regras, no meu sistema terão apenas 3 tipos de usuários. Estou usando o SonataAdmin + SonataUser (FOSUser)

Cassiano Valle Tartari
MSc. Computer Engineer

Tel: +55.48.84474818
Email: fal...@cassianotartari.eng.br
Site: http://www.cassianotartari.eng.br

QR Code


2013/1/24 Jefferson Oliveira <falec...@gmail.com>
Visite este grupo em http://groups.google.com/group/symfony-pt?hl=pt-BR.
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
 
 

Cassiano Tartari

unread,
Jan 24, 2013, 8:05:32 AM1/24/13
to symfony-pt
Aa esqueci de falar, o usuário vou mander o original mesmo, email em campo separado, requisições do projeto

Cassiano Valle Tartari
MSc. Computer Engineer

Tel: +55.48.84474818
Email: fal...@cassianotartari.eng.br
Site: http://www.cassianotartari.eng.br

QR Code


2013/1/24 Cassiano Tartari <cassian...@gmail.com>

Raphael

unread,
Jan 24, 2013, 8:08:40 AM1/24/13
to symfo...@googlegroups.com

Raphael

unread,
Jan 24, 2013, 8:15:44 AM1/24/13
to symfo...@googlegroups.com
Lembrando que mesmo utilizando o FOSUserBundle você pode sobreescrever o UserProvider. Veja mais em http://symfony.com/doc/current/cookbook/security/custom_provider.html

2013/1/24 Raphael <raphox...@gmail.com>
Reply all
Reply to author
Forward
0 new messages