django: проблемы с логином и аутентификацией пользователя без встроенной аутентификации - PullRequest
0 голосов
/ 16 апреля 2020

Я борюсь с моей системой входа в систему. В этот момент я наблюдал так много разных вещей о топи c, что немного растерялся. Я попытался использовать встроенную систему аутентификации, но мне не удалось заставить ее работать с django -тендантом, потому что, если я правильно понимаю, это требует работы со встроенной моделью User.

Тогда я предполагаю, что мои основные проблема в том, что я не знаю, как интегрировать Django модель пользователя с тем, что у меня есть. С другой стороны, я не знаю, как написать что-то, что заменило бы встроенную систему аутентификации в Django.

В идеале я хотел бы объединить то, что у меня есть, со Django встроенным пользователем для безопасной работы. и безопасная система аутентификации.

Вот то, что я до сих пор придумывал самостоятельно. он «работает», но явно ничего не делает!

Model.py

class Client(TenantMixin):

    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=100, default='')
    email = models.EmailField(default='')
    company = models.CharField(max_length=100, default='')
    password = models.CharField(max_length=100, default='')
    created_on = models.DateField(auto_now_add=True)

class Domain(DomainMixin):
    pass

forms.py

class UserLoginForm(forms.Form):
    email = forms.CharField()
    password = forms.CharField(widget = forms.PasswordInput)
    company = forms.CharField()

    def cleaned_data(self):
        email = self.cleaned_data.get('email')
        password = self.cleaned_data.get('password')
        company = self.cleaned_data.get('company')

        try:
            tenant = Client.objects.get(email=email, password=password, company=company)

        except Client.DoesNotExist:
            raise forms.ValidationError("User does not exist")

        if email and password:
            user = authenticate(username= email, password= password)
            if not user:
                raise forms.ValidationError('THIS USER DOES NOT EXIST')

            if not user.check_password(password):
                raise forms.ValidationError('incorrect password')

            if not user.is_active:
                raise forms.ValidationError('this user is not active')

        return super(UserLoginForm, self).clean()

views.py

def login_view(request):
    form = UserLoginForm(request.POST or None)
    if form.is_valid():
        company = form.cleaned_data.get('company')
        email = form.cleaned_data.get('email')
        password = form.cleaned_data.get('password')

        ##tenant = authenticate(request, username=email, password=password)

        with schema_context(tenant.schema_name):

            redirect = 'http://' + tenant.company + '.inventory4.com:8000/upload'
        return HttpResponseRedirect(redirect)

    context = {
        'form' : form,
    }
    return render(request, 'login.html', context)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...