Fix SCIM disable all non SCIM managed members
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
This commit is contained in:
@@ -23,6 +23,7 @@ type MembershipFilter struct {
|
|||||||
email *mail.Addr
|
email *mail.Addr
|
||||||
role *MembershipRole
|
role *MembershipRole
|
||||||
state *MembershipState
|
state *MembershipState
|
||||||
|
source *MembershipSource
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMembershipFilter() *MembershipFilter {
|
func NewMembershipFilter() *MembershipFilter {
|
||||||
@@ -56,11 +57,21 @@ func (f *MembershipFilter) State() *MembershipState {
|
|||||||
return f.state
|
return f.state
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *MembershipFilter) WithSource(source MembershipSource) *MembershipFilter {
|
||||||
|
f.source = &source
|
||||||
|
return f
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *MembershipFilter) Source() *MembershipSource {
|
||||||
|
return f.source
|
||||||
|
}
|
||||||
|
|
||||||
func (f *MembershipFilter) SQLArguments() pgx.StrictNamedArgs {
|
func (f *MembershipFilter) SQLArguments() pgx.StrictNamedArgs {
|
||||||
return pgx.StrictNamedArgs{
|
return pgx.StrictNamedArgs{
|
||||||
"filter_email": f.email,
|
"filter_email": f.email,
|
||||||
"filter_role": f.role,
|
"filter_role": f.role,
|
||||||
"filter_state": f.state,
|
"filter_state": f.state,
|
||||||
|
"filter_source": f.source,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,5 +97,12 @@ AND (
|
|||||||
m.state = @filter_state::membership_state
|
m.state = @filter_state::membership_state
|
||||||
ELSE TRUE
|
ELSE TRUE
|
||||||
END
|
END
|
||||||
|
)
|
||||||
|
AND (
|
||||||
|
CASE
|
||||||
|
WHEN @filter_source::text IS NOT NULL THEN
|
||||||
|
m.source = @filter_source::text
|
||||||
|
ELSE TRUE
|
||||||
|
END
|
||||||
)`
|
)`
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -294,6 +294,13 @@ func (s *Service) ListUsers(
|
|||||||
return nil, 0, err
|
return nil, 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Only return SCIM-managed users. This ensures that:
|
||||||
|
// 1. Users created through other means (manual, SAML) are not deactivated
|
||||||
|
// when they don't exist in the identity provider.
|
||||||
|
// 2. When a manual user exists in the identity provider but not in the
|
||||||
|
// SCIM list, CreateUser is called which enrolls them into SCIM management.
|
||||||
|
filter.WithSource(coredata.MembershipSourceSCIM)
|
||||||
|
|
||||||
scope := coredata.NewScopeFromObjectID(config.OrganizationID)
|
scope := coredata.NewScopeFromObjectID(config.OrganizationID)
|
||||||
|
|
||||||
var memberships coredata.Memberships
|
var memberships coredata.Memberships
|
||||||
|
|||||||
Reference in New Issue
Block a user