core: fix source_flow_manager saving user-source connection too early (#9559)
* core: fix source_flow_manager saving user-source connection too early Signed-off-by: Jens Langhammer <jens@goauthentik.io> * ci: fix branch name Signed-off-by: Jens Langhammer <jens@goauthentik.io> --------- Signed-off-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
@ -12,7 +12,7 @@ should_build = str(os.environ.get("DOCKER_USERNAME", None) is not None).lower()
|
|||||||
branch_name = os.environ["GITHUB_REF"]
|
branch_name = os.environ["GITHUB_REF"]
|
||||||
if os.environ.get("GITHUB_HEAD_REF", "") != "":
|
if os.environ.get("GITHUB_HEAD_REF", "") != "":
|
||||||
branch_name = os.environ["GITHUB_HEAD_REF"]
|
branch_name = os.environ["GITHUB_HEAD_REF"]
|
||||||
safe_branch_name = branch_name.replace("refs/heads/", "").replace("/", "-")
|
safe_branch_name = branch_name.replace("refs/heads/", "").replace("/", "-").replace("'", "-")
|
||||||
|
|
||||||
image_names = os.getenv("IMAGE_NAME").split(",")
|
image_names = os.getenv("IMAGE_NAME").split(",")
|
||||||
image_arch = os.getenv("IMAGE_ARCH") or None
|
image_arch = os.getenv("IMAGE_ARCH") or None
|
||||||
|
@ -100,8 +100,6 @@ class SourceFlowManager:
|
|||||||
if self.request.user.is_authenticated:
|
if self.request.user.is_authenticated:
|
||||||
new_connection.user = self.request.user
|
new_connection.user = self.request.user
|
||||||
new_connection = self.update_connection(new_connection, **kwargs)
|
new_connection = self.update_connection(new_connection, **kwargs)
|
||||||
|
|
||||||
new_connection.save()
|
|
||||||
return Action.LINK, new_connection
|
return Action.LINK, new_connection
|
||||||
|
|
||||||
existing_connections = self.connection_type.objects.filter(
|
existing_connections = self.connection_type.objects.filter(
|
||||||
@ -148,7 +146,6 @@ class SourceFlowManager:
|
|||||||
]:
|
]:
|
||||||
new_connection.user = user
|
new_connection.user = user
|
||||||
new_connection = self.update_connection(new_connection, **kwargs)
|
new_connection = self.update_connection(new_connection, **kwargs)
|
||||||
new_connection.save()
|
|
||||||
return Action.LINK, new_connection
|
return Action.LINK, new_connection
|
||||||
if self.source.user_matching_mode in [
|
if self.source.user_matching_mode in [
|
||||||
SourceUserMatchingModes.EMAIL_DENY,
|
SourceUserMatchingModes.EMAIL_DENY,
|
||||||
|
@ -48,15 +48,21 @@ class TestSourceFlowManager(TestCase):
|
|||||||
|
|
||||||
def test_authenticated_link(self):
|
def test_authenticated_link(self):
|
||||||
"""Test authenticated user linking"""
|
"""Test authenticated user linking"""
|
||||||
UserOAuthSourceConnection.objects.create(
|
|
||||||
user=get_anonymous_user(), source=self.source, identifier=self.identifier
|
|
||||||
)
|
|
||||||
user = User.objects.create(username="foo", email="foo@bar.baz")
|
user = User.objects.create(username="foo", email="foo@bar.baz")
|
||||||
flow_manager = OAuthSourceFlowManager(
|
flow_manager = OAuthSourceFlowManager(
|
||||||
self.source, get_request("/", user=user), self.identifier, {}
|
self.source, get_request("/", user=user), self.identifier, {}
|
||||||
)
|
)
|
||||||
action, _ = flow_manager.get_action()
|
action, connection = flow_manager.get_action()
|
||||||
self.assertEqual(action, Action.LINK)
|
self.assertEqual(action, Action.LINK)
|
||||||
|
self.assertIsNone(connection.pk)
|
||||||
|
flow_manager.get_flow()
|
||||||
|
|
||||||
|
def test_unauthenticated_link(self):
|
||||||
|
"""Test un-authenticated user linking"""
|
||||||
|
flow_manager = OAuthSourceFlowManager(self.source, get_request("/"), self.identifier, {})
|
||||||
|
action, connection = flow_manager.get_action()
|
||||||
|
self.assertEqual(action, Action.LINK)
|
||||||
|
self.assertIsNone(connection.pk)
|
||||||
flow_manager.get_flow()
|
flow_manager.get_flow()
|
||||||
|
|
||||||
def test_unauthenticated_enroll_email(self):
|
def test_unauthenticated_enroll_email(self):
|
||||||
|
Reference in New Issue
Block a user