add register password recover

This commit is contained in:
baoliang 2020-08-20 18:34:14 +08:00
parent 6e100a1a1a
commit e5ebc32cd7
3 changed files with 112 additions and 6 deletions

View File

@ -1,3 +1,28 @@
from django.db import models from django.db import models
import uuid
import datetime
# Create your models here. VERIFY_CODE_TYPE_CHOICES = (
(0, 'register'),
(1, 'password_recover'),
)
class VerifyCode(models.Model):
id = models.UUIDField('id', primary_key=True, default=uuid.uuid4)
code = models.CharField('code', max_length=8, null=False)
phone = models.CharField('phone', max_length=11, null=False)
timeouted = models.DateTimeField('timeouted', null=False)
category = models.IntegerField('category', choices=VERIFY_CODE_TYPE_CHOICES, default=0)
added = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
class Meta:
ordering = ["-added"]
def is_in_progress(self):
now = datetime.datetime.now()
return snow <= self.timeouted
def __str__(self):
return self.phone + ':' + self.code

7
polls/utils.py Normal file
View File

@ -0,0 +1,7 @@
import random
def sent_sms_code(phone):
pass
def generate_code():
return random.randint(1000, 9999)

View File

@ -2,8 +2,7 @@ from django.shortcuts import render
from django.http import HttpResponse, JsonResponse from django.http import HttpResponse, JsonResponse
from django.contrib.auth import get_user_model from django.contrib.auth import get_user_model
from django.views.decorators.csrf import csrf_exempt from django.views.decorators.csrf import csrf_exempt
from django_token.models import Token
# Create your views here.
def index(request): def index(request):
@ -34,10 +33,85 @@ def polls_login(request):
u = authenticate(request, username=user.username, password=password) u = authenticate(request, username=user.username, password=password)
if u is not None: if u is not None:
login(request, u) login(request, u)
print(u) token = Token.objects.get_or_create(user=u)
result = dict() result = dict()
return JsonResponse(result) profile = u.userprofile_set.first()
result['phone'] = u.first_name
result['token'] = token
if profile:
result['name'] = profile.name
result['gender'] = profile.sex
result['thumbnail'] = profile.image.path
result['organization'] = profile.organization.name
return JsonResponse({'status': 'success', 'message': result})
else: else:
return JsonResponse({'status': 'error', 'message': '用户名或密码错误'}) return JsonResponse({'status': 'error', 'message': '用户名或密码错误'})
else: else:
return JsonResponse({}) return HttpResponse(status=405)
@csrf_exempt
def send_code(request):
if request.method == 'GET':
return HttpResponse(status=405)
phone = request.POST.get('phone')
category = request.POST.get('category', 0)
if not phone:
return JsonResponse({'status': 'error', 'message': '手机号不正确'})
exist_code = VerifyCode.objects.filter(phone=phone, category=category).first()
if exist_code and exist_code.in_progress():
return JsonResponse({'status': 'error', 'message': '验证码使用中'})
code = generate_code()
now = datetime.datetime.now()
after_10mins = now + datetime.timedelta(minutes=10)
VerifyCode.objects.create(code=code, phone=phone, category=category)
return JsonResponse({'status': 'success'})
@csrf_exempt
def register_step_one(request):
if request.method == 'GET':
return HttpResponse(status=405)
phone = request.POST.get('phone')
code = request.POST.get('code')
exist_code = VerifyCode.objects.filter(phone=phone, code=code, category=0).exist()
if exist_code.in_progress():
return JsonResponse({'status': 'success', 'message': {phone: phone}})
else:
return JsonResponse({'status': 'error', 'message': '验证码超时,请重发'})
@csrf_exempt
def register_step_two(request):
if request.method == 'GET':
return HttpResponse(status=405)
phone = request.POST.get('phone')
name = request.POST.get('name')
gender = request.POST.get('gender')
organization = request.POST.get('organization')
# create user
return JsonResponse({'status': 'success', 'message': '注册成功'})
@csrf_exempt
def password_recover_step_one(request):
if request.method == 'GET':
return HttpResponse(status=405)
phone = request.POST.get('phone')
code = request.POST.get('code')
exist_code = VerifyCode.objects.filter(phone=phone, code=code, category=1).exist()
if exist_code.in_progress():
return JsonResponse({'status': 'success', 'message': {phone: phone}})
else:
return JsonResponse({'status': 'error', 'message': '验证码超时,请重发'})
@csrf_exempt
def password_recover_step_two(request):
if request.method == 'GET':
return HttpResponse(status=405)
phone = request.POST.get('phone')
password = request.POST.get('password')
password_confirm = request.POST.get('password_confirm')