mirror of
				https://github.com/gyurix1968/guacamole-client.git
				synced 2025-11-03 18:43:22 +00:00 
			
		
		
		
	GUACAMOLE-220: Map and allow manipulation of the user group members of user groups.
This commit is contained in:
		@@ -85,6 +85,7 @@ import org.apache.guacamole.auth.jdbc.user.UserRecordMapper;
 | 
			
		||||
import org.apache.guacamole.auth.jdbc.usergroup.ModeledUserGroup;
 | 
			
		||||
import org.apache.guacamole.auth.jdbc.usergroup.UserGroupDirectory;
 | 
			
		||||
import org.apache.guacamole.auth.jdbc.usergroup.UserGroupMapper;
 | 
			
		||||
import org.apache.guacamole.auth.jdbc.usergroup.UserGroupMemberUserGroupMapper;
 | 
			
		||||
import org.apache.guacamole.auth.jdbc.usergroup.UserGroupMemberUserMapper;
 | 
			
		||||
import org.apache.guacamole.auth.jdbc.usergroup.UserGroupService;
 | 
			
		||||
import org.mybatis.guice.MyBatisModule;
 | 
			
		||||
@@ -137,6 +138,7 @@ public class JDBCAuthenticationProviderModule extends MyBatisModule {
 | 
			
		||||
        addMapperClass(SharingProfileParameterMapper.class);
 | 
			
		||||
        addMapperClass(SharingProfilePermissionMapper.class);
 | 
			
		||||
        addMapperClass(UserGroupMapper.class);
 | 
			
		||||
        addMapperClass(UserGroupMemberUserGroupMapper.class);
 | 
			
		||||
        addMapperClass(UserGroupMemberUserMapper.class);
 | 
			
		||||
        addMapperClass(UserGroupPermissionMapper.class);
 | 
			
		||||
        addMapperClass(UserMapper.class);
 | 
			
		||||
 
 | 
			
		||||
@@ -81,6 +81,13 @@ public class ModeledUserGroup extends ModeledPermissions<UserGroupModel>
 | 
			
		||||
    @Inject
 | 
			
		||||
    private Provider<UserGroupMemberUserSet> memberUserSetProvider;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Provider for RelatedObjectSets containing the user groups that are
 | 
			
		||||
     * members of this user group.
 | 
			
		||||
     */
 | 
			
		||||
    @Inject
 | 
			
		||||
    private Provider<UserGroupMemberUserGroupSet> memberUserGroupSetProvider;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Whether attributes which control access restrictions should be exposed
 | 
			
		||||
     * via getAttributes() or allowed to be set via setAttributes().
 | 
			
		||||
@@ -189,7 +196,9 @@ public class ModeledUserGroup extends ModeledPermissions<UserGroupModel>
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public RelatedObjectSet getMemberUserGroups() throws GuacamoleException {
 | 
			
		||||
        return new SimpleRelatedObjectSet();
 | 
			
		||||
        UserGroupMemberUserGroupSet memberUserGroupSet = memberUserGroupSetProvider.get();
 | 
			
		||||
        memberUserGroupSet.init(getCurrentUser(), this);
 | 
			
		||||
        return memberUserGroupSet;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,28 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Licensed to the Apache Software Foundation (ASF) under one
 | 
			
		||||
 * or more contributor license agreements.  See the NOTICE file
 | 
			
		||||
 * distributed with this work for additional information
 | 
			
		||||
 * regarding copyright ownership.  The ASF licenses this file
 | 
			
		||||
 * to you under the Apache License, Version 2.0 (the
 | 
			
		||||
 * "License"); you may not use this file except in compliance
 | 
			
		||||
 * with the License.  You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing,
 | 
			
		||||
 * software distributed under the License is distributed on an
 | 
			
		||||
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 | 
			
		||||
 * KIND, either express or implied.  See the License for the
 | 
			
		||||
 * specific language governing permissions and limitations
 | 
			
		||||
 * under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package org.apache.guacamole.auth.jdbc.usergroup;
 | 
			
		||||
 | 
			
		||||
import org.apache.guacamole.auth.jdbc.base.ObjectRelationMapper;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Mapper for the one-to-many relationship between a user group and its user
 | 
			
		||||
 * group members.
 | 
			
		||||
 */
 | 
			
		||||
public interface UserGroupMemberUserGroupMapper extends ObjectRelationMapper<UserGroupModel> {}
 | 
			
		||||
@@ -0,0 +1,57 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Licensed to the Apache Software Foundation (ASF) under one
 | 
			
		||||
 * or more contributor license agreements.  See the NOTICE file
 | 
			
		||||
 * distributed with this work for additional information
 | 
			
		||||
 * regarding copyright ownership.  The ASF licenses this file
 | 
			
		||||
 * to you under the Apache License, Version 2.0 (the
 | 
			
		||||
 * "License"); you may not use this file except in compliance
 | 
			
		||||
 * with the License.  You may obtain a copy of the License at
 | 
			
		||||
 *
 | 
			
		||||
 *   http://www.apache.org/licenses/LICENSE-2.0
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing,
 | 
			
		||||
 * software distributed under the License is distributed on an
 | 
			
		||||
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 | 
			
		||||
 * KIND, either express or implied.  See the License for the
 | 
			
		||||
 * specific language governing permissions and limitations
 | 
			
		||||
 * under the License.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package org.apache.guacamole.auth.jdbc.usergroup;
 | 
			
		||||
 | 
			
		||||
import com.google.inject.Inject;
 | 
			
		||||
import org.apache.guacamole.GuacamoleException;
 | 
			
		||||
import org.apache.guacamole.auth.jdbc.base.ObjectRelationMapper;
 | 
			
		||||
import org.apache.guacamole.auth.jdbc.base.RelatedObjectSet;
 | 
			
		||||
import org.apache.guacamole.net.auth.permission.ObjectPermissionSet;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * RelatedObjectSet implementation which represents the one-to-many
 | 
			
		||||
 * relationship between a particular user group and its user group members.
 | 
			
		||||
 */
 | 
			
		||||
public class UserGroupMemberUserGroupSet extends RelatedObjectSet<ModeledUserGroup, UserGroupModel> {
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Mapper for the relation between user groups and their user group members.
 | 
			
		||||
     */
 | 
			
		||||
    @Inject
 | 
			
		||||
    private UserGroupMemberUserGroupMapper userGroupMemberUserGroupMapper;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected ObjectRelationMapper<UserGroupModel> getObjectRelationMapper() {
 | 
			
		||||
        return userGroupMemberUserGroupMapper;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected ObjectPermissionSet
 | 
			
		||||
        getParentObjectEffectivePermissionSet() throws GuacamoleException {
 | 
			
		||||
        return getCurrentUser().getUser().getEffectivePermissions().getUserGroupPermissions();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected ObjectPermissionSet getChildObjectEffectivePermissionSet()
 | 
			
		||||
            throws GuacamoleException {
 | 
			
		||||
        return getCurrentUser().getUser().getEffectivePermissions().getUserGroupPermissions();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user