70 lines
1.7 KiB
PL/PgSQL
70 lines
1.7 KiB
PL/PgSQL
begin;
|
|
|
|
|
|
-- the intent of this update statement: set the primary auth method for scopes
|
|
-- that only have a single auth_password_method, since currently there are only
|
|
-- auth_password_methods in boundary. Before this release all
|
|
-- auth_password_methods were "basically" primary auth methods and would create
|
|
-- an iam_user on first login.
|
|
with single_authmethod (scope_id, public_id) as (
|
|
select
|
|
am.scope_id,
|
|
am.public_id
|
|
from
|
|
auth_password_method am,
|
|
(select
|
|
scope_id,
|
|
count(public_id) as cnt
|
|
from
|
|
auth_password_method
|
|
group by scope_id) as singles
|
|
where
|
|
am.scope_id = singles.scope_id and
|
|
singles.cnt = 1
|
|
)
|
|
update
|
|
iam_scope
|
|
set
|
|
primary_auth_method_id = p.public_id
|
|
from
|
|
single_authmethod p
|
|
where p.scope_id = iam_scope.public_id;
|
|
|
|
|
|
-- the intent of the insert with select statement: log the scopes that have more
|
|
-- than 1 auth method and therefore cannot have their primary auth method
|
|
-- automatically set for them.
|
|
with many_authmethod (scope_id, authmethod_cnt) as (
|
|
select
|
|
am.scope_id,
|
|
many.cnt
|
|
from
|
|
auth_password_method am,
|
|
(select
|
|
scope_id,
|
|
count(public_id) as cnt
|
|
from
|
|
auth_password_method
|
|
group by scope_id) as many
|
|
where
|
|
am.scope_id = many.scope_id and
|
|
many.cnt > 1
|
|
)
|
|
insert into log_migration(entry)
|
|
select
|
|
distinct concat(
|
|
'unable to set primary_auth_method for ',
|
|
public_id,
|
|
' there were ',
|
|
m.authmethod_cnt,
|
|
' password auth methods for that scope.'
|
|
) as entry
|
|
from
|
|
iam_scope s,
|
|
many_authmethod m
|
|
where
|
|
s.primary_auth_method_id is null and
|
|
s.public_id = m.scope_id;
|
|
|
|
commit;
|