Exemple #1
0
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()})
Exemple #2
0
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('/')