def login(request): # if request.method == 'POST': # create_user_form = UserCreationForm(request.POST) # if create_user_form.is_valid(): # create_user_form.save() # else: # create_user_form = UserCreationForm() # return render(request, 'main/main.html', {'create_user_form': create_user_form}) if request.method == "POST": login_form = LoginForm(request.POST) if login_form.is_valid(): username = request.POST['username'] password = request.POST['password'] user = authenticate(username=username, password=password) if user: # Django의 auth앱에서 제공하는 login함수를 실행해 앞으로의 요청/응답에 세션을 유지한다 django_login(request, user) # Post목록 화면으로 이동 return redirect('/') # 인증에 실패하면 login_form에 non_field_error를 추가한다 login_form.add_error(None, '아이디 또는 비밀번호가 올바르지 않습니다') else: login_form = LoginForm() context = { 'login_form': login_form, } return render(request, 'main/login.html', context)
def login_user(request): login_form = LoginForm() if request.method == 'POST': login_form = LoginForm(data=request.POST) if login_form.is_valid(): username = login_form.cleaned_data['username'] password = login_form.cleaned_data['password'] user = auth.authenticate(username=username, password=password) if user is not None: auth.login(request, user) return redirect('home') else: login_form.add_error( None, "Пользователь с таким логином или паролем не существует") return render(request, 'main/login.html', {'login_form': login_form}) return render(request, 'main/login.html', {'login_form': login_form})
def login_execute(request, form: LoginForm): user = User.objects.filter(email=form.cleaned_data['email']).first() if user == None: form.add_error('email', 'Incorrect email.') return render(request, 'main/login.html', {'form': form}) if not user.organization_set.filter( id=form.cleaned_data['organization']).exists(): form.add_error('organization', 'This user have not access to this organization.') return render(request, 'main/login.html', {'form': form}) user = django_authenticate(username=user.username, password=form.cleaned_data['password']) if user is None: form.add_error('password', 'Incorrect password.') return render(request, 'main/login.html', {'form': form}) else: django_login(request, user) organization = Organization.objects.get( id=form.cleaned_data['organization']) request.session['org_id'] = organization.id request.session['org_name'] = organization.name return HttpResponseRedirect(reverse('main:task_lists'))