аутентифицироваться только суперпользователю - PullRequest
0 голосов
/ 29 апреля 2019

authenticate () функция только для аутентификации суперпользователя

Я пытался использовать простой поиск, но тогда он не будет использовать функцию login () и не будет проверять, активен пользователь или нет

'' '

def Login_View(request):
    if request.method == "POST":
        username = request.POST['username']
        paswrd = request.POST['pwd']
        user = authenticate(username=username, password=paswrd)

        if user is not None:
            if user.is_active:
                login(request, user)
                name = User.objects.get(username=request.user)
                request.session['username'] = username
                return redirect('/dashboard/',{'name':name.username})
                # return render(request,'dashboard_app/index.html',{'name':name.username})
            else:
                 return render(request, 'login_app/index.html', {'error_message': 'Your account has been disabled'})
        else:
            return render(request, 'login_app/index.html', {'error_message': 'Invalid login'})
    return render(request, 'login_app/index.html')

'' '

Я хочу войти в систему всех пользователей, находящихся в базе данных, будь то простой пользователь или суперпользователь

Ответы [ 2 ]

0 голосов
/ 01 мая 2019

Этот код в основном не нужен.В частности, эта строка не имеет смысла:

user.set_password(user.password)

Это берет уже хешированный пароль и снова его хеширует.Так что теперь он никогда не будет проверяться при аутентификации.

Вы должны удалить большую часть этого кода.Формы уже делают это для вас.Вы должны просто иметь:

    if user_form.is_valid() and profile_form.is_valid():
        user = user_form.save()
        profile = profile_form.save(commit=False)
        profile.t_teacher = user
        profile.save()
        return redirect('/')
0 голосов
/ 01 мая 2019

Даниэль Роузман, это код form.py '' '

class UserRegisterForm(UserCreationForm):
    password1=forms.CharField(widget=forms.PasswordInput(attrs={'class':'form-control','placeholder':'Enter Password'}),label='Password')
    password2=forms.CharField(widget=forms.PasswordInput(attrs={'class':'form-control','placeholder':'Confirm Password'}),label='Confirm Password')
    class Meta:
        model= User
        fields= ('username','first_name','last_name','email',    'password1', 'password2',)
        widgets={
        'first_name': forms.TextInput(attrs={'class': 'form-control','placeholder':'First Name'}),
        'last_name': forms.TextInput(attrs={'class': 'form-control','placeholder':'Last Name'}),
        'username': forms.TextInput(attrs={'class': 'form-control','placeholder':'Username'}),
        'email': forms.TextInput(attrs={'class': 'form-control','placeholder':'Email'}),
        }
class Profile(forms.ModelForm):
    class Meta:
        model= Teacher
        exclude=['t_teacher']
        labels= {'t_gender':'Gender','t_departmant':'Department'}
        widgets={
        't_gender': forms.Select(choices="gender_list",attrs={'class': 'form-control'}),
        't_departmant': forms.Select(choices="department_list",attrs={'class': 'form-control'}),
        }

' '' view.py '' '

def Reg_View(request):
    registered = False
    if request.method == 'POST':
        user_form = UserRegisterForm(data=request.POST)
        profile_form=Profile(request.POST)
        if user_form.is_valid() and profile_form.is_valid():
            user = user_form.save()
            user.refresh_from_db()
            user.set_password(user.password)
            user.first_name=user_form.cleaned_data.get('first_name')
            user.last_name=user_form.cleaned_data.get('last_name')
            user.email=user_form.cleaned_data.get('email')
            user.save()
            user.refresh_from_db()
            name=User.objects.get(username=user.username)
            p_save=profile_form.save()
            p_save.refresh_from_db()
            p_save.t_gender = profile_form.cleaned_data.get('t_gender')
            p_save.t_departmant=profile_form.cleaned_data.get('t_departmant')
            p_save.t_teacher=name
            p_save.save()
            registered = True
            return redirect('/')
        else:
            print(user_form.errors, profile_form.errors)
    else:
        user_form = UserRegisterForm()
        profile_form=Profile()
    return render(request,'Login_app/regform.html',{'user_form':user_form, 'profile_form':profile_form ,'registered':registered })

' ''

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...