mirror of
https://github.com/zitadel/zitadel.git
synced 2026-07-25 18:28:00 +00:00
# Which Problems Are Solved While Zitadel provides a possibility to restrict certain languages to be used, the corresponding list could not be retrieved in the settings service (v2). This blocked login v2 implementations from respecting the list and they would always use all available languages. # How the Problems Are Solved - Retrieve the list when checking the instance and pass it into the context. - Return it as part of the existing `GetGeneralSettingsResponse` - This allows us to remove an additional query in some other cases / endpoints. # Additional Changes none # Additional Context - required for https://github.com/zitadel/zitadel/pull/11372 - backport to v4.x --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Marco A. <marco@zitadel.com>
87 lines
2.8 KiB
SQL
87 lines
2.8 KiB
SQL
with domain as (
|
|
SELECT instance_id FROM eventstore.fields
|
|
WHERE object_type = 'instance_domain'
|
|
AND object_id = $1
|
|
AND field_name = 'domain'
|
|
), instance_features as (
|
|
select i.*
|
|
from domain d
|
|
join projections.instance_features5 i on d.instance_id = i.instance_id
|
|
), features as (
|
|
select instance_id, json_object_agg(
|
|
coalesce(i.key, s.key),
|
|
coalesce(i.value, s.value)
|
|
) features
|
|
from domain d
|
|
cross join projections.system_features4 s
|
|
full outer join instance_features i using (instance_id, key)
|
|
group by instance_id
|
|
), external_domains as (
|
|
select ed.instance_id, array_agg(ed.domain) as domains
|
|
from domain d
|
|
join projections.instance_domains ed on d.instance_id = ed.instance_id
|
|
group by ed.instance_id
|
|
), trusted_domains as (
|
|
select td.instance_id, array_agg(td.domain) as domains
|
|
from domain d
|
|
join projections.instance_trusted_domains td on d.instance_id = td.instance_id
|
|
group by td.instance_id
|
|
), execution_targets as (
|
|
select instance_id, json_agg(x.execution_targets) as execution_targets from (
|
|
select e.instance_id, json_build_object(
|
|
'execution_id', et.execution_id,
|
|
'target_id', t.id,
|
|
'target_type', t.target_type,
|
|
'endpoint', t.endpoint,
|
|
'timeout', t.timeout,
|
|
'interrupt_on_error', t.interrupt_on_error,
|
|
'signing_key', t.signing_key,
|
|
'payload_type', t.payload_type,
|
|
'encryption_key', encode(k.public_key, 'base64'),
|
|
'encryption_key_id', k.id
|
|
) as execution_targets
|
|
from domain d
|
|
join projections.executions1 e
|
|
on d.instance_id = e.instance_id
|
|
join projections.executions1_targets et
|
|
on e.instance_id = et.instance_id
|
|
and e.id = et.execution_id
|
|
join projections.targets2 t
|
|
on et.instance_id = t.instance_id
|
|
and et.target_id = t.id
|
|
left join projections.authn_keys2 k
|
|
on k.instance_id = et.instance_id
|
|
and k.object_id = t.id
|
|
and k.enabled = true
|
|
and (k.expiration IS NULL or k.expiration > now())
|
|
order by et.position asc
|
|
) as x
|
|
group by instance_id
|
|
)
|
|
select
|
|
i.id,
|
|
i.default_org_id,
|
|
i.iam_project_id,
|
|
i.console_client_id,
|
|
i.console_app_id,
|
|
i.default_language,
|
|
s.enable_iframe_embedding,
|
|
s.origins,
|
|
s.enable_impersonation,
|
|
l.audit_log_retention,
|
|
l.block,
|
|
f.features,
|
|
ed.domains as external_domains,
|
|
td.domains as trusted_domains,
|
|
et.execution_targets,
|
|
r.allowed_languages
|
|
from domain d
|
|
join projections.instances i on i.id = d.instance_id
|
|
left join projections.security_policies2 s on i.id = s.instance_id
|
|
left join projections.limits l on i.id = l.instance_id
|
|
left join features f on i.id = f.instance_id
|
|
left join external_domains ed on i.id = ed.instance_id
|
|
left join trusted_domains td on i.id = td.instance_id
|
|
left join execution_targets et on i.id = et.instance_id
|
|
left join projections.restrictions2 r on i.id = r.instance_id;
|