django-allauth e mudar o nome de usuário para o email, como posso proceder?

239 views
Skip to first unread message

Fellipe Henrique

unread,
May 12, 2015, 10:26:11 AM5/12/15
to django...@googlegroups.com
Bom dia amigos,

Procurei mas não encontrei algo relacionado a isso..

Preciso que ao criar o usuário pelo allauth, seja do facebook ou qualquer outro, o username, seja o email, e não o nome do usuário como vem por padrão. Alguma idéia de como posso fazer isso?

Obrigado.

T.·.F.·.A.·.     S+F
Fellipe Henrique P. Soares

e-mail: > echo "lkrrovknFmsgor4ius" | perl -pe \ 's/(.)/chr(ord($1)-2*3)/ge'
Twitter: @fh_bash

Taiza Montenegro

unread,
May 12, 2015, 3:33:13 PM5/12/15
to django...@googlegroups.com
Fellipe, eu fiz isso no sistema q to implementando, mas nao to lembrada exatamente de tudo q é necessário fazer =/
Mas tem essa configuração do allauth: 


ACCOUNT_AUTHENTICATION_METHOD (=”username” | “email” | “username_email”)Specifies the login method to use – whether the user logs in by entering their username, e-mail address, or either one of both. Setting this to “email” requires ACCOUNT_EMAIL_REQUIRED=True

No meu settings, está assim:

#ALLAUTH
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = 30
ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
ACCOUNT_SIGNUP_FORM_CLASS = 'site.forms.CadastroUsuarioForm'
ACCOUNT_LOGOUT_ON_GET = True
ACCOUNT_SESSION_REMEMBER = False

--
Você recebeu essa mensagem porque está inscrito no grupo "Django Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para django-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.



--
Taíza Rabello Montenegro
Analista de T.I
Superintendência de Informática/UFRN

Fellipe Henrique

unread,
May 13, 2015, 1:19:03 PM5/13/15
to django...@googlegroups.com
Olá Taiza, então...

Eu cheguei a fazer parecido, só removi a parte de mandatory da verificacao do email...

Porém, quando eu clico no link do facebook nada acontece! Nada...

Lá no banco de dados, eu já coloquei o facebook, a chave e tudo, e mesmo assim nada...

Não estou entendendo o que pode estar acontecendo, porque quando tinha o username, estava funcionando, foi só tirar ele, e eu ter que refazer o UserManager que ele parou de funcionar... poderia postar seu user manager que você modificou? pode ser algo com o meu [1]





T.·.F.·.A.·.     S+F
Fellipe Henrique P. Soares

e-mail: > echo "lkrrovknFmsgor4ius" | perl -pe \ 's/(.)/chr(ord($1)-2*3)/ge'
Twitter: @fh_bash

Fábio Cerqueira

unread,
May 13, 2015, 1:57:58 PM5/13/15
to django Brasil
Já tentou definir no teu settings?
ACCOUNT_USER_MODEL_USERNAME_FIELD = 'email'
ACCOUNT_AUTHENTICATION_METHOD = 'email'
Fábio Cerqueira

Fellipe Henrique

unread,
May 13, 2015, 2:05:47 PM5/13/15
to django...@googlegroups.com
Sim, Aqui está tudo referente a esta parte do meu projeto:

[1] CustomUser Model
[2] Settings

Já inclui na tabela socialaccount_socialapp os dados referente ao facebook e tudo.. como eu disse antes, ao usar "normal" com o username, e *sem* o meu CustomManager, ele funcionava... agora parou de funcionar... mas adiciona o usuário normalmente via terminal.


T.·.F.·.A.·.     S+F
Fellipe Henrique P. Soares

e-mail: > echo "lkrrovknFmsgor4ius" | perl -pe \ 's/(.)/chr(ord($1)-2*3)/ge'
Twitter: @fh_bash

Fábio Cerqueira

unread,
May 13, 2015, 2:15:11 PM5/13/15
to django Brasil
Cara,
então só debugando ai, pq parece tudo ok olhando daqui. Talvez sobreescrever o método populate_user do DefaultSocialAccountAdapter te ajude.

Fellipe Henrique

unread,
May 13, 2015, 2:18:18 PM5/13/15
to django...@googlegroups.com
Acabei vendo, que no onsole do browser, apresenta a seguinte mensagem:

ReferenceError: allauth is not defined

Porém está tudo de acordo no meu template [1]... :(

Agora, não sei o porque de ele não estar "iniciando" o JS do allauth, alguma idéia?


T.·.F.·.A.·.     S+F
Fellipe Henrique P. Soares

e-mail: > echo "lkrrovknFmsgor4ius" | perl -pe \ 's/(.)/chr(ord($1)-2*3)/ge'
Twitter: @fh_bash

Fellipe Henrique

unread,
May 13, 2015, 2:31:49 PM5/13/15
to django...@googlegroups.com
Caraca!

Descobri o problema, antes eu usava o python-social-auth  ao invés do django-allauth.... fui no terminal e desistalei (pip -uninstall python-social-auth) não sei porque cargas d'agua ficou a pasta lá no site-package... e eis que o JS que estava sendo importado era dele, e não do all-auth.... fui na mão e removi a pasta e funcionou... 

Vai entender...

Obrigado a todos.

T.·.F.·.A.·.     S+F
Fellipe Henrique P. Soares

e-mail: > echo "lkrrovknFmsgor4ius" | perl -pe \ 's/(.)/chr(ord($1)-2*3)/ge'
Twitter: @fh_bash

Guilherme de Carvalho Carneiro

unread,
May 14, 2015, 6:37:54 PM5/14/15
to django...@googlegroups.com
Não é possível subscrever o save e setar o email como username?

From: Fellipe Henrique
Sent: ‎5/‎12/‎2015 11:34
To: django...@googlegroups.com
Subject: django-allauth e mudar o nome de usuário para o email, como posso proceder?

--

Danilo Cabello

unread,
May 15, 2015, 10:41:04 AM5/15/15
to Django Brasil
Eu não estou usando django-allauth mas eu implementei em um projeto recente uma solução para as pessoas conseguirem logar com o e-mail delas, dê uma olhada, esse projeto usa Python 3.4 e Django 1.8 então talvez você precise adaptar o código:

from django.contrib.auth import get_user_model
from django.contrib.auth.backends import ModelBackend

class EmailBackend(ModelBackend):
    def authenticate(self, username=None, password=None, **kwargs):
        UserModel = get_user_model()

        try:
            user = UserModel.objects.get(email=username)
        except UserModel.DoesNotExist:
            return super().authenticate(username=username, password=password, **kwargs)
        else:
            return super().authenticate(username=user.username, password=password, **kwargs)

E nas minhas settings:

AUTHENTICATION_BACKENDS = (
    '<app>.backends.EmailBackend',
)
Reply all
Reply to author
Forward
0 new messages