providers/rac: apply ConnectionToken scoped-settings last (#14838)
* providers/rac: apply ConnectionToken scoped-settings last Signed-off-by: Jens Langhammer <jens@goauthentik.io> * fix tests Signed-off-by: Jens Langhammer <jens@goauthentik.io> --------- Signed-off-by: Jens Langhammer <jens@goauthentik.io>
This commit is contained in:
@ -166,7 +166,6 @@ class ConnectionToken(ExpiringModel):
|
|||||||
always_merger.merge(settings, default_settings)
|
always_merger.merge(settings, default_settings)
|
||||||
always_merger.merge(settings, self.endpoint.provider.settings)
|
always_merger.merge(settings, self.endpoint.provider.settings)
|
||||||
always_merger.merge(settings, self.endpoint.settings)
|
always_merger.merge(settings, self.endpoint.settings)
|
||||||
always_merger.merge(settings, self.settings)
|
|
||||||
|
|
||||||
def mapping_evaluator(mappings: QuerySet):
|
def mapping_evaluator(mappings: QuerySet):
|
||||||
for mapping in mappings:
|
for mapping in mappings:
|
||||||
@ -191,6 +190,7 @@ class ConnectionToken(ExpiringModel):
|
|||||||
mapping_evaluator(
|
mapping_evaluator(
|
||||||
RACPropertyMapping.objects.filter(endpoint__in=[self.endpoint]).order_by("name")
|
RACPropertyMapping.objects.filter(endpoint__in=[self.endpoint]).order_by("name")
|
||||||
)
|
)
|
||||||
|
always_merger.merge(settings, self.settings)
|
||||||
|
|
||||||
settings["drive-path"] = f"/tmp/connection/{self.token}" # nosec
|
settings["drive-path"] = f"/tmp/connection/{self.token}" # nosec
|
||||||
settings["create-drive-path"] = "true"
|
settings["create-drive-path"] = "true"
|
||||||
|
@ -90,23 +90,6 @@ class TestModels(TransactionTestCase):
|
|||||||
"resize-method": "display-update",
|
"resize-method": "display-update",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
# Set settings in token
|
|
||||||
token.settings = {
|
|
||||||
"level": "token",
|
|
||||||
}
|
|
||||||
token.save()
|
|
||||||
self.assertEqual(
|
|
||||||
token.get_settings(),
|
|
||||||
{
|
|
||||||
"hostname": self.endpoint.host.split(":")[0],
|
|
||||||
"port": "1324",
|
|
||||||
"client-name": f"authentik - {self.user}",
|
|
||||||
"drive-path": path,
|
|
||||||
"create-drive-path": "true",
|
|
||||||
"level": "token",
|
|
||||||
"resize-method": "display-update",
|
|
||||||
},
|
|
||||||
)
|
|
||||||
# Set settings in property mapping (provider)
|
# Set settings in property mapping (provider)
|
||||||
mapping = RACPropertyMapping.objects.create(
|
mapping = RACPropertyMapping.objects.create(
|
||||||
name=generate_id(),
|
name=generate_id(),
|
||||||
@ -151,3 +134,22 @@ class TestModels(TransactionTestCase):
|
|||||||
"resize-method": "display-update",
|
"resize-method": "display-update",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
# Set settings in token
|
||||||
|
token.settings = {
|
||||||
|
"level": "token",
|
||||||
|
}
|
||||||
|
token.save()
|
||||||
|
self.assertEqual(
|
||||||
|
token.get_settings(),
|
||||||
|
{
|
||||||
|
"hostname": self.endpoint.host.split(":")[0],
|
||||||
|
"port": "1324",
|
||||||
|
"client-name": f"authentik - {self.user}",
|
||||||
|
"drive-path": path,
|
||||||
|
"create-drive-path": "true",
|
||||||
|
"foo": "true",
|
||||||
|
"bar": "6",
|
||||||
|
"resize-method": "display-update",
|
||||||
|
"level": "token",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
@ -36,11 +36,12 @@ The _Endpoint_ object specifies the hostname/IP of the machine to connect to, as
|
|||||||
|
|
||||||
Configuration details such as credentials can be specified through _settings_, which can be specified on different levels and are all merged together when connecting:
|
Configuration details such as credentials can be specified through _settings_, which can be specified on different levels and are all merged together when connecting:
|
||||||
|
|
||||||
1. Provider settings
|
1. Default settings
|
||||||
2. Endpoint settings
|
2. Provider settings
|
||||||
3. Connection settings
|
3. Endpoint settings
|
||||||
4. Provider property mapping settings
|
4. Provider property mapping settings
|
||||||
5. Endpoint property mapping settings
|
5. Endpoint property mapping settings
|
||||||
|
6. Connection settings
|
||||||
|
|
||||||
### Connection settings
|
### Connection settings
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user