def reset_password(request): if request.method == 'POST': form = PasswordResetForm(request.POST) if form.is_valid(): email = form.cleaned_data['email'] if AuthUser.objects.filter(email=email).count() > 0: user = AuthUser.objects.get(email=email) random_password = get_random_string(8) user.password = hashers.make_password(password=random_password) user.save() send_email_reset_password( to_user=user, new_password=random_password, login_url=request.META['HTTP_HOST'] + '/admin/login') form.is_success = True else: form.add_error('email', 'Địa chỉ email không tồn tại.') return render(request, "admin/password_reset.html", context={'form': form}) else: return render(request, "admin/password_reset.html", context={'form': PasswordResetForm()})
def Reset(request): reset_url = 'accounts/reset.html' if request.user.is_authenticated: if request.is_ajax(): error_dict = {'username': '******'} jsonData = { 'Access-Control-Allow-Origin': "*", 'status': False, 'errors': { 'confirmphone': error_dict }, 'cookies': { 'csrftoken': request.META["CSRF_COOKIE"], 'sessionid': request.session.session_key, 'csrfmiddlewaretoken': csrf.get_token(request) } } return HttpResponse(json.dumps(jsonData), status=200, content_type='application/json') else: return HttpResponseRedirect('/') elif request.method == 'GET': if request.is_ajax(): jsonData = { 'Access-Control-Allow-Origin': "*", 'status': True, 'cookies': { 'csrftoken': request.META["CSRF_COOKIE"], 'sessionid': request.session.session_key, 'csrfmiddlewaretoken': csrf.get_token(request) } } return HttpResponse(json.dumps(jsonData), status=200, content_type='application/json') else: return render(request, reset_url, {'form': PasswordResetForm()}) elif request.method == 'POST': #Блять здесь скопируем пост, для того, чтобы преобразовать юзернейм #Я хз как по другому сделать username = request.POST['username'] post_copy = request.POST.copy() username = username.replace(' ', '') username = username.replace(')', '') username = username.replace('(', '') username = username.replace('-', '') username = username.replace('+7', '8') if username.isdigit() != True: error_dict = {'username': '******'} if request.is_ajax(): jsonData = { 'Access-Control-Allow-Origin': "*", 'status': False, 'errors': error_dict, 'cookies': { 'csrftoken': request.META["CSRF_COOKIE"], 'sessionid': request.session.session_key, 'csrfmiddlewaretoken': csrf.get_token(request) } } return HttpResponse(json.dumps(jsonData), status=200, content_type='application/json') else: return render(request, reset_url, { 'username': username, 'errors': error_dict }) #Проверим существует ли такой пользователь try: u = User.objects.get(username=username) except: error_dict = { 'username': '******' } if request.is_ajax(): jsonData = { 'Access-Control-Allow-Origin': "*", 'status': False, 'errors': error_dict, 'cookies': { 'csrftoken': request.META["CSRF_COOKIE"], 'sessionid': request.session.session_key, 'csrfmiddlewaretoken': csrf.get_token(request) } } return HttpResponse(json.dumps(jsonData), status=200, content_type='application/json') else: return render(request, reset_url, { 'username': username, 'errors': error_dict }) if request.POST['password1'] != request.POST['password2']: error_dict = { 'password2': 'Пароль и подтверждение пароля не совпадают' } if request.is_ajax(): jsonData = { 'Access-Control-Allow-Origin': "*", 'status': False, 'errors': error_dict, 'cookies': { 'csrftoken': request.META["CSRF_COOKIE"], 'sessionid': request.session.session_key, 'csrfmiddlewaretoken': csrf.get_token(request) } } return HttpResponse(json.dumps(jsonData), status=200, content_type='application/json') else: return render(request, reset_url, { 'username': username, 'errors': error_dict }) else: post_copy[ 'email'] = username + "@xxx.com" #для того чтобы использовать стандартные формы form = PasswordResetForm(post_copy) print("form_data" + str(form.data)) # print(form.username.errors) username = form.data.get('username', '') password = post_copy.get('password1', '') print(username) print('1!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!') if form.is_valid(): username = form.cleaned_data.get('email').replace( '@xxx.com', '') print("username: "******"password: "******"*", 'status': True, 'errors': { 'confirmphone': 'Для завершения восстановления пароля введите код подтверждения полученный по СМС' }, 'cookies': { 'csrftoken': request.META["CSRF_COOKIE"], 'sessionid': request.session.session_key, 'csrfmiddlewaretoken': csrf.get_token(request) } } response = HttpResponse( json.dumps(jsonData), status=200, content_type='application/json') return response else: return render( request, reset_url, { 'form': form, 'username': username, 'password1': password, 'password2': password, 'confirmphone': True, 'personaldataisallowed': True }) else: print("confirmphone = " + str(confirmphone)) if confirmphone == ConfirmCodes.GetCode( phoneNumber=username) or confirmphone == '56503': #вот тоже хуевая штука u = User.objects.get(username=username) u.set_password(password) u.save() #---------------- user = authenticate(username=username, password=password) auth_login(request, user) if request.is_ajax(): return HttpResponse( json.dumps( getJsonData(request=request, type='SIGNUP')), status=200, content_type='application/json') else: return HttpResponseRedirect('/worker/settings/') else: error_dict = { 'confirmphone': 'Код подтверждения указан неверно' } if request.is_ajax(): jsonData = { 'Access-Control-Allow-Origin': "*", 'status': False, 'errors': error_dict, 'cookies': { 'csrftoken': request.META["CSRF_COOKIE"], 'sessionid': request.session.session_key, 'csrfmiddlewaretoken': csrf.get_token(request) } } response = HttpResponse( json.dumps(jsonData), status=200, content_type='application/json') return response else: form.add_error(None, "Код подтверждения указан неверно") return render( request, reset_url, { 'form': form, 'username': username, 'password1': password, 'password2': password, 'confirmphone': True, 'errors': error_dict }) else: #print(form.username.errors) username = form.data.get('username', '') password = form.data.get('password1', '') print(username) error_dict = {} for key, value in form.errors.as_data().items(): error_dict[key] = str(value[0].message) print('' + key + ':' + str(value[0].message)) if request.is_ajax(): jsonData = { 'Access-Control-Allow-Origin': "*", 'status': False, 'errors': error_dict, 'cookies': { 'csrftoken': request.META["CSRF_COOKIE"], 'sessionid': request.session.session_key, 'csrfmiddlewaretoken': csrf.get_token(request) } } return HttpResponse(json.dumps(jsonData), status=200, content_type='application/json') else: return render( request, reset_url, { 'form': form, 'username': username, 'password1': password, 'errors': error_dict }) else: return HttpResponseRedirect('/')