Fine tuning

This commit is contained in:
zandercymatics 2024-05-09 13:43:32 -06:00
parent 4c92011279
commit 8b41e70840
No known key found for this signature in database
GPG key ID: FF4636ABEC9682B7
3 changed files with 21 additions and 11 deletions

View file

@ -23,7 +23,7 @@ class OpenIdConnectBackend(ModelBackend):
def authenticate(self, request, **kwargs):
logger.debug("kwargs %s" % kwargs)
user = None
request.session["is_new_user"] = True
if not kwargs or "sub" not in kwargs.keys():
return user
@ -49,7 +49,9 @@ class OpenIdConnectBackend(ModelBackend):
}
user, created = UserModel.objects.get_or_create(**args)
request.session["is_new_user"] = created
if created:
request.session["is_new_user"] = True
if not created:
# If user exists, update existing user
@ -60,8 +62,8 @@ class OpenIdConnectBackend(ModelBackend):
else:
try:
user = UserModel.objects.get_by_natural_key(username)
request.session["is_new_user"] = False
except UserModel.DoesNotExist:
request.session["is_new_user"] = True
return None
# run this callback for a each login
user.on_each_login()

View file

@ -99,7 +99,7 @@ def login_callback(request):
request.session["acr_value"] = CLIENT.get_step_up_acr_value()
return CLIENT.create_authn_request(request.session)
user = authenticate(request=request, **userinfo)
is_new_user = request.session["is_new_user"]
is_new_user = request.session.get("is_new_user", False)
if user:
should_update_user = False
# Fixture users kind of exist in a superposition of verification types,
@ -114,9 +114,7 @@ def login_callback(request):
user.set_user_verification_type()
should_update_user = True
# If we're dealing with a new user and if this field isn't set already,
# Then set this to False. Otherwise, if we set the field manually it'll revert.
if is_new_user and not user.finished_setup:
if is_new_user:
user.finished_setup = False
should_update_user = True

View file

@ -20,10 +20,20 @@ class CheckUserProfileMiddleware:
return response
def process_view(self, request, view_func, view_args, view_kwargs):
# Check if the user is authenticated and if the setup is not finished
if request.user.is_authenticated and not request.user.finished_setup:
# Redirect to the setup page
return HttpResponseRedirect(reverse('finish-contact-profile-setup'))
# Check if setup is not finished
finished_setup = hasattr(request.user, "finished_setup") and request.user.finished_setup
if request.user.is_authenticated and not finished_setup:
setup_page = reverse("finish-contact-profile-setup", kwargs={'pk': request.user.pk})
logout_page = reverse("logout")
excluded_pages = [
setup_page,
logout_page,
]
# Don't redirect on excluded pages (such as the setup page itself)
if not any(request.path.startswith(page) for page in excluded_pages):
# Redirect to the setup page
return HttpResponseRedirect(setup_page)
# Continue processing the view
return None