Advertisement
Guest User

Sistema de Login e Cadastro gerando chave aleatória

a guest
Sep 12th, 2017
792
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.83 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. from __future__ import unicode_literals
  3. from django.shortcuts import render, redirect, render_to_response
  4. from principal.models import *
  5. from django.views import View
  6. from django.http import HttpResponse, JsonResponse
  7.  
  8. from django.utils.decorators import method_decorator
  9. from django.contrib.auth import authenticate, login, logout
  10. from django.contrib.auth.decorators import login_required
  11. from django.views.decorators.csrf import csrf_exempt
  12. from django.contrib.auth.models import User
  13.  
  14. import json
  15.  
  16. class EsqueciMinhaSenhaView(BasicView):
  17.     template_name = 'esqueciMinhaSenha.html'
  18.  
  19.     def get(self, request):
  20.         self.dados['pagina'] = {'nome': 'esqueciminhasenha', 'titulo': 'Recuperação de Senha'}
  21.         return render(request, self.template_name, self.dados)
  22.  
  23.     def post(self, request):
  24.         usuario = User.objects.get(email = request.POST.get('email'))
  25.         #Gera uma nova senha
  26.         chars = []
  27.         chars.extend([i for i in string.ascii_letters])
  28.         chars.extend([i for i in string.digits])
  29.         #chars.extend([i for i in '#$%*'])
  30.  
  31.         senha = ''
  32.         tamanho = 10
  33.  
  34.         for i in range(tamanho):
  35.             senha += chars[random.randint(0,  len(chars) - 1)]
  36.  
  37.             random.seed = int(time.time())
  38.             random.shuffle(chars)
  39.  
  40.         usuario.set_password(senha)
  41.         usuario.is_active = True
  42.         usuario.save()
  43.  
  44.         usuario.email_user(
  45.             subject = 'Recuperação de senha',
  46.             message = '''
  47.                Olá %s,
  48.                Nós criamos uma nova senha para você. Aqui estão os seus dados de acesso:
  49.                Login: %s
  50.                Senha: %s
  51.  
  52.                Não se esqueça de trocar a sua senha quando entrar novamente no nosso sistema.
  53.  
  54.                Um grande abraço!
  55.            ''' % (usuario.first_name, usuario.email, senha),
  56.             from_email = 'contato@mazzollisistemas.com.br'
  57.         )
  58.         self.dados['titulo'] = 'Mensagem enviada'
  59.         self.dados['texto'] = '<div class="col-md-6 text-center"><img src="/static/imagens/joinha.jpg" style="max-width: 100%;"></div><div class="col-md-6 text-center">Uma nova senha foi enviada para o seu e-mail!</div>'
  60.         return render(request, 'mensagem.html', self.dados)
  61.  
  62. @method_decorator(csrf_exempt, name = 'dispatch')
  63. class LoginView(BasicView):
  64.     def get(self, request, **kwargs):
  65.         self.dados['pagina'] = {'nome': 'login', 'titulo': 'Login de Usuário'}
  66.         self.template_name ='login.html'
  67.         return render(request, self.template_name, self.dados)
  68.  
  69.     def post(self, request, **kwargs):
  70.         usuario = request.POST.get('usuario')
  71.         senha = request.POST.get('senha')
  72.  
  73.         entrada = authenticate(username = usuario, password = senha)
  74.  
  75.         if entrada is not None:
  76.             login(request, entrada)
  77.             if 'next' in request.GET:
  78.                 saida = {
  79.                     'next': request.GET.get('next'),
  80.                     'resposta': 'OK',
  81.                 }
  82.             else:
  83.                 saida = {
  84.                     'next': '',
  85.                     'resposta': 'OK',
  86.                 }
  87.         else: #O usuário não existe, a senha está incorreta ou o usuário não está ativo
  88.             if User.objects.filter(username = usuario).exists(): #Se o usuário existe:
  89.                 if not User.objects.get(username = usuario).is_active: #Se o usuário não está ativo:
  90.                     saida = {
  91.                         'resposta': 'Usuário não ativo. Clique <a href="/reenviar/%s">aqui</a> para reenviar o e-mail de ativação do cadastro.' % User.objects.get(username = usuario).id,
  92.                     }
  93.                 else: #Se o usuário está ativo:
  94.                     saida = {
  95.                         'resposta': 'Senha incorreta.',
  96.                     }
  97.             else: #Se não existe o usuário informado:
  98.                 saida = {
  99.                     'resposta': 'Não encontramos o registro do usuário informado. Você digitou o e-mail corretamente?'
  100.                 }
  101.  
  102.         return JsonResponse(saida)
  103.  
  104. @method_decorator(csrf_exempt, name = 'dispatch')
  105. class CadastroView(BasicView):
  106.     def get(self, request, **kwargs):
  107.         self.dados['pagina'] = {'nome': 'cadastro', 'titulo': 'Cadastro de Usuário'}
  108.         self.template_name = 'cadastro.html'
  109.         return render(request, self.template_name, self.dados)
  110.  
  111.     def post(self, request, **kwargs):
  112.         try:
  113.             if User.objects.filter(username = request.POST.get('email')).exists():
  114.                 return HttpResponse('Já existe um usuário com esse e-mail.')
  115.             else:
  116.                 user = User.objects.create_user(
  117.                     username = request.POST.get('email'),
  118.                     email = request.POST.get('email'),
  119.                     password = request.POST.get('senha')
  120.                 )
  121.                 user.first_name = request.POST.get('nome')
  122.                 user.last_name = request.POST.get('sobrenome')
  123.                 user.is_active = False
  124.                 user.save()
  125.  
  126.                 user.email_user(
  127.                     subject = 'Confirmação de Cadastro',
  128.                     message = '''
  129.                        Olá %s,
  130.  
  131.                        Seja bem vindo ao nosso sistema! Estamos quase lá! A única coisa que falta agora é você confirmar o seu cadastro.
  132.                        Para isso, clique no link abaixo ou copie o endereço no seu navegador:
  133.                        http://www.mazzollisistemas.com.br/ativar/%s/
  134.  
  135.                        Um grande abraço!
  136.                    ''' % (user.first_name, usuario.token),
  137.                     from_email = 'contato@mazzollisistemas.com.br'
  138.                 )
  139.                 return HttpResponse('OK')
  140.         except:
  141.             return HttpResponse('Erro ao registrar o usuário. Tente novamente mais tarde.')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement