mirror of
https://github.com/zitadel/zitadel.git
synced 2024-12-16 12:58:00 +00:00
217703395e
* fix: add resource owner as query for user v2 ListUsers and clean up deprecated attribute * fix: add resource owner as query for user v2 ListUsers and clean up deprecated attribute * fix: add resource owner as query for user v2 ListUsers and clean up deprecated attribute * fix: review changes * fix: review changes * fix: review changes * fix: review changes * fix: add password change required to user v2 get and list * fix: update unit tests for query side with new column and projection * fix: change projection in setup steps * fix: change projection in setup steps * fix: remove setup step 25 * fix: add password_change_required into ListUsers response * fix: correct SetUserPassword parameters * fix: rollback to change setup instead of projection directly * fix: rollback to change setup instead of projection directly --------- Co-authored-by: Livio Spring <livio.a@gmail.com>
83 lines
1.8 KiB
SQL
83 lines
1.8 KiB
SQL
WITH login_names AS (SELECT
|
|
u.id user_id
|
|
, u.instance_id
|
|
, u.resource_owner
|
|
, u.user_name
|
|
, d.name domain_name
|
|
, d.is_primary
|
|
, p.must_be_domain
|
|
, CASE WHEN p.must_be_domain
|
|
THEN concat(u.user_name, '@', d.name)
|
|
ELSE u.user_name
|
|
END login_name
|
|
FROM
|
|
projections.login_names3_users u
|
|
JOIN lateral (
|
|
SELECT
|
|
p.must_be_domain
|
|
FROM
|
|
projections.login_names3_policies p
|
|
WHERE
|
|
u.instance_id = p.instance_id
|
|
AND (
|
|
(p.is_default IS TRUE AND p.instance_id = $2)
|
|
OR (p.instance_id = $2 AND p.resource_owner = u.resource_owner)
|
|
)
|
|
ORDER BY is_default
|
|
LIMIT 1
|
|
) p ON TRUE
|
|
JOIN
|
|
projections.login_names3_domains d
|
|
ON
|
|
u.instance_id = d.instance_id
|
|
AND u.resource_owner = d.resource_owner
|
|
WHERE
|
|
u.instance_id = $2
|
|
AND u.id = $1
|
|
)
|
|
SELECT
|
|
u.id
|
|
, u.creation_date
|
|
, u.change_date
|
|
, u.resource_owner
|
|
, u.sequence
|
|
, u.state
|
|
, u.type
|
|
, u.username
|
|
, (SELECT array_agg(ln.login_name)::TEXT[] login_names FROM login_names ln GROUP BY ln.user_id, ln.instance_id) login_names
|
|
, (SELECT ln.login_name login_names_lower FROM login_names ln WHERE ln.is_primary IS TRUE) preferred_login_name
|
|
, h.user_id
|
|
, h.first_name
|
|
, h.last_name
|
|
, h.nick_name
|
|
, h.display_name
|
|
, h.preferred_language
|
|
, h.gender
|
|
, h.avatar_key
|
|
, h.email
|
|
, h.is_email_verified
|
|
, h.phone
|
|
, h.is_phone_verified
|
|
, h.password_change_required
|
|
, m.user_id
|
|
, m.name
|
|
, m.description
|
|
, m.secret
|
|
, m.access_token_type
|
|
, count(*) OVER ()
|
|
FROM projections.users11 u
|
|
LEFT JOIN
|
|
projections.users11_humans h
|
|
ON
|
|
u.id = h.user_id
|
|
AND u.instance_id = h.instance_id
|
|
LEFT JOIN
|
|
projections.users11_machines m
|
|
ON
|
|
u.id = m.user_id
|
|
AND u.instance_id = m.instance_id
|
|
WHERE
|
|
u.id = $1
|
|
AND u.instance_id = $2
|
|
LIMIT 1
|
|
; |