@@ -129,7 +129,8 @@ func (p *passwordAuthenticator) Authenticate(_ context.Context, username, passwo
|
|||||||
return nil, "", err
|
return nil, "", err
|
||||||
}
|
}
|
||||||
u := &authuser.DefaultInfo{
|
u := &authuser.DefaultInfo{
|
||||||
Name: user.Name,
|
Name: user.Name,
|
||||||
|
Groups: user.Spec.Groups,
|
||||||
}
|
}
|
||||||
// check if the password is initialized
|
// check if the password is initialized
|
||||||
if uninitialized := user.Annotations[iamv1alpha2.UninitializedAnnotation]; uninitialized != "" {
|
if uninitialized := user.Annotations[iamv1alpha2.UninitializedAnnotation]; uninitialized != "" {
|
||||||
|
|||||||
@@ -1091,19 +1091,21 @@ func (am *amOperator) ListGroupRoleBindings(workspace string, query *query.Query
|
|||||||
result = append(result, roleBinding)
|
result = append(result, roleBinding)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
devOpsProjects, err := am.devopsProjectLister.List(labels.SelectorFromSet(labels.Set{tenantv1alpha1.WorkspaceLabel: workspace}))
|
if am.devopsProjectLister != nil {
|
||||||
if err != nil {
|
devOpsProjects, err := am.devopsProjectLister.List(labels.SelectorFromSet(labels.Set{tenantv1alpha1.WorkspaceLabel: workspace}))
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
for _, devOpsProject := range devOpsProjects {
|
|
||||||
roleBindings, err := am.roleBindingGetter.List(devOpsProject.Name, query)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
klog.Error(err)
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
for _, obj := range roleBindings.Items {
|
for _, devOpsProject := range devOpsProjects {
|
||||||
roleBinding := obj.(*rbacv1.RoleBinding)
|
roleBindings, err := am.roleBindingGetter.List(devOpsProject.Name, query)
|
||||||
result = append(result, roleBinding)
|
if err != nil {
|
||||||
|
klog.Error(err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
for _, obj := range roleBindings.Items {
|
||||||
|
roleBinding := obj.(*rbacv1.RoleBinding)
|
||||||
|
result = append(result, roleBinding)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return result, nil
|
return result, nil
|
||||||
|
|||||||
@@ -155,6 +155,9 @@ func (f *Framework) GenericClient(userAgent string) client.Client {
|
|||||||
Host: ctx.Host,
|
Host: ctx.Host,
|
||||||
Username: ctx.Username,
|
Username: ctx.Username,
|
||||||
Password: ctx.Password,
|
Password: ctx.Password,
|
||||||
|
ContentConfig: rest.ContentConfig{
|
||||||
|
ContentType: runtime.ContentTypeJSON,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
rest.AddUserAgent(config, userAgent)
|
rest.AddUserAgent(config, userAgent)
|
||||||
|
|||||||
@@ -34,13 +34,10 @@ import (
|
|||||||
func NewClient(s *runtime.Scheme, user, passsword string) (client.Client, error) {
|
func NewClient(s *runtime.Scheme, user, passsword string) (client.Client, error) {
|
||||||
|
|
||||||
ctx := framework.TestContext
|
ctx := framework.TestContext
|
||||||
token, err := getToken(ctx.Host, user, passsword)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
config := &rest.Config{
|
config := &rest.Config{
|
||||||
Host: ctx.Host,
|
Host: ctx.Host,
|
||||||
BearerToken: token.AccessToken,
|
Username: user,
|
||||||
|
Password: passsword,
|
||||||
}
|
}
|
||||||
|
|
||||||
return generic.New(config, client.Options{Scheme: s})
|
return generic.New(config, client.Options{Scheme: s})
|
||||||
@@ -48,13 +45,10 @@ func NewClient(s *runtime.Scheme, user, passsword string) (client.Client, error)
|
|||||||
|
|
||||||
func NewRestClient(user, passsword string) (*restclient.RestClient, error) {
|
func NewRestClient(user, passsword string) (*restclient.RestClient, error) {
|
||||||
ctx := framework.TestContext
|
ctx := framework.TestContext
|
||||||
token, err := getToken(ctx.Host, user, passsword)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
config := &rest.Config{
|
config := &rest.Config{
|
||||||
Host: ctx.Host,
|
Host: ctx.Host,
|
||||||
BearerToken: token.AccessToken,
|
Username: user,
|
||||||
|
Password: passsword,
|
||||||
}
|
}
|
||||||
|
|
||||||
return restclient.NewForConfig(config)
|
return restclient.NewForConfig(config)
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ import (
|
|||||||
|
|
||||||
"kubesphere.io/api/iam/v1alpha2"
|
"kubesphere.io/api/iam/v1alpha2"
|
||||||
|
|
||||||
|
"kubesphere.io/kubesphere/pkg/utils/stringutils"
|
||||||
"kubesphere.io/kubesphere/test/e2e/constant"
|
"kubesphere.io/kubesphere/test/e2e/constant"
|
||||||
"kubesphere.io/kubesphere/test/e2e/framework"
|
"kubesphere.io/kubesphere/test/e2e/framework"
|
||||||
"kubesphere.io/kubesphere/test/e2e/framework/iam"
|
"kubesphere.io/kubesphere/test/e2e/framework/iam"
|
||||||
@@ -73,6 +74,11 @@ var _ = Describe("Groups", func() {
|
|||||||
_, err = restClient.IamV1alpha2().Groups().CreateBinding(context.TODO(), workspace, group, UserName)
|
_, err = restClient.IamV1alpha2().Groups().CreateBinding(context.TODO(), workspace, group, UserName)
|
||||||
framework.ExpectNoError(err)
|
framework.ExpectNoError(err)
|
||||||
|
|
||||||
|
Eventually(func() bool {
|
||||||
|
user, err := iam.GetUser(adminClient, UserName)
|
||||||
|
return err == nil && stringutils.FindString(user.Spec.Groups, group) != -1
|
||||||
|
}, timeout, interval).Should(BeTrue())
|
||||||
|
|
||||||
By("Creating a new client with user authentication")
|
By("Creating a new client with user authentication")
|
||||||
userClient, err = iam.NewClient(f.GetScheme(), u.Name, constant.DefaultPassword)
|
userClient, err = iam.NewClient(f.GetScheme(), u.Name, constant.DefaultPassword)
|
||||||
framework.ExpectNoError(err)
|
framework.ExpectNoError(err)
|
||||||
|
|||||||
Reference in New Issue
Block a user