From 30216c411b86424928b25dc5bb18356b41231dec Mon Sep 17 00:00:00 2001 From: "Roland.Ma" Date: Wed, 25 Nov 2020 09:41:26 +0000 Subject: [PATCH] add group filter for user api Signed-off-by: Roland.Ma --- pkg/apis/iam/v1alpha2/types.go | 2 ++ pkg/models/resources/v1alpha3/user/users.go | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/pkg/apis/iam/v1alpha2/types.go b/pkg/apis/iam/v1alpha2/types.go index 3e203b818..62921a9db 100644 --- a/pkg/apis/iam/v1alpha2/types.go +++ b/pkg/apis/iam/v1alpha2/types.go @@ -65,6 +65,8 @@ const ( IdentifyProviderLabel = "iam.kubesphere.io/identify-provider" PasswordEncryptedAnnotation = "iam.kubesphere.io/password-encrypted" FieldEmail = "email" + InGroup = "ingroup" + NotInGroup = "notingroup" AggregateTo = "aggregateTo" ScopeWorkspace = "workspace" ScopeCluster = "cluster" diff --git a/pkg/models/resources/v1alpha3/user/users.go b/pkg/models/resources/v1alpha3/user/users.go index 54bd88349..a50dac399 100644 --- a/pkg/models/resources/v1alpha3/user/users.go +++ b/pkg/models/resources/v1alpha3/user/users.go @@ -28,6 +28,7 @@ import ( "kubesphere.io/kubesphere/pkg/apiserver/query" ksinformers "kubesphere.io/kubesphere/pkg/client/informers/externalversions" "kubesphere.io/kubesphere/pkg/models/resources/v1alpha3" + "kubesphere.io/kubesphere/pkg/utils/sliceutil" ) type usersGetter struct { @@ -107,6 +108,10 @@ func (d *usersGetter) filter(object runtime.Object, filter query.Filter) bool { switch filter.Field { case iamv1alpha2.FieldEmail: return user.Spec.Email == string(filter.Value) + case iamv1alpha2.InGroup: + return sliceutil.HasString(user.Spec.Groups, string(filter.Value)) + case iamv1alpha2.NotInGroup: + return !sliceutil.HasString(user.Spec.Groups, string(filter.Value)) default: return v1alpha3.DefaultObjectMetaFilter(user.ObjectMeta, filter) }