Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Atualizando senha do model User

Criei um usuário, email e senha e coloquei no model User que o Django disponibiliza para fazer a autenticação.

Acontece que quando peço para atualizar os dados a unica coisa que muda é o email, se eu tento atualizar a senha, não consigo mais fazer o login no sistema, tenho que ir la no Django admin para poder colocar uma senha nova, não consigo eu como usuario trocar minha propria senha. Alguém sabe o por que disso?

Segue o código:

def atualiza_adm(request):

if request.method=='POST':
    usuario_id=request.POST['user_id']
    atualiza_senha=request.POST['atualiza_senha']
    confirma_nova_senha=request.POST['confirma_nova_senha']

    u=User.objects.get(pk=usuario_id)           


    if atualiza_senha == confirma_nova_senha:
        u.email=request.POST['atualiza_email']                 
        if atualiza_senha.isdigit():
            print('Não é aceito uma senha apenas numérica')
            return redirect('configuracoes')

        else:                  
            u.password=request.POST['atualiza_senha']
            u.save()
    else:
        print('Deu erro na confirmação das senhas')           
        return redirect('configuracoes')

    return redirect('dashboard')
2 respostas
solução!

Oi Raul, tudo bem?

O model User tem um método chamado set_password, é ele quem faz a criptografia da senha. Tenta fazer assim:

else:                  
    u.set_password(str(request.POST['atualiza_senha']))
    u.save()

Perfeito, deu certinho. Muito obrigado, tava quebrando a cabeça aqui.