Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.shortcuts import render
- from django.http import JsonResponse
- from profiles.models import User
- import string
- import random
- import hashlib
- import datetime
- MIN_USERNAME_LEN = 5
- MAX_USERNAME_LEN = 30
- MIN_PASSWORD_LEN = 6
- MAX_PASSWORD_LEN = 30
- TOKEN_LEN = 20
- SATL_LEN = 20
- SECRET_SALT = "20randomnyhsimwolow)"
- ALPHABET = ''.join([string.ascii_letters, string.digits])
- def generate_str(len):
- res = []
- for i in range(len):
- res.append(random.choice(ALPHABET))
- return ''.join(res)
- def check_auth(username, token):
- count = User.objects.filter(
- username__iexact = username,
- token = token,
- token_time__gte = datetime.datetime.now() - datetime.timedelta(days = 1)
- ).count()
- return (count == 1) and (len(token) == TOKEN_LEN)
- def user_exists(username):
- count_username = User.objects.filter(username__iexact = username).count()
- if count_username == 0:
- return False
- elif count_username == 1:
- return True
- # ошибка: существуют пользователи с одинаковым username
- return False
- def register(request):
- if ('username' not in request.GET) or ('password' not in request.GET) or ('email' not in request.GET):
- return JsonResponse({'result':'error', 'error':'input error'})
- username = request.GET['username']
- password = request.GET['password']
- email = request.GET['email']
- if len(username) < MIN_USERNAME_LEN or len(username) > MAX_USERNAME_LEN:
- return JsonResponse({'result':'error', 'error':'invalid username length'})
- if len(password) < MIN_PASSWORD_LEN or len(password) > MAX_PASSWORD_LEN:
- return JsonResponse({'result':'error', 'error':'invalid password length'})
- count_email = User.objects.filter(email__iexact = email).count()
- if count_email > 0:
- return JsonResponse({'result':'error', 'error':'email is already used'})
- if user_exists(username):
- return JsonResponse({'result':'error', 'error':'username is already used'})
- private_salt = generate_str(SATL_LEN)
- password_hash = hashlib.sha512((password + private_salt + SECRET_SALT).encode()).hexdigest()
- new_user = User(username = username, password_hash = password_hash,
- token = '', email = email, private_salt = private_salt)
- new_user.save()
- return JsonResponse({'result':'success'})
- ...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement