mirror of
				https://github.com/gyurix1968/guacamole-client.git
				synced 2025-10-31 00:53:21 +00:00 
			
		
		
		
	GUAC-1101: Implement querying of connection permissions.
This commit is contained in:
		| @@ -63,7 +63,7 @@ | ||||
|     <select id="selectReadableIdentifiersWithin" resultType="string"> | ||||
|         SELECT guacamole_connection_group.connection_group_id | ||||
|         FROM guacamole_connection_group | ||||
|         JOIN guacamole_connection_group_permission ON guacamole_connection_group_permission.connection_group_id = guacamole_connection.group_connection_group_id | ||||
|         JOIN guacamole_connection_group_permission ON guacamole_connection_group_permission.connection_group_id = guacamole_connection_group.connection_group_id | ||||
|         WHERE | ||||
|             <if test="parentIdentifier != null">parent_id = #{parentIdentifier,jdbcType=VARCHAR}</if> | ||||
|             <if test="parentIdentifier == null">parent_id IS NULL</if> | ||||
|   | ||||
| @@ -0,0 +1,99 @@ | ||||
| <?xml version="1.0" encoding="UTF-8" ?> | ||||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | ||||
|     "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > | ||||
|  | ||||
| <!-- | ||||
|    Copyright (C) 2015 Glyptodon LLC | ||||
|  | ||||
|    Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
|    of this software and associated documentation files (the "Software"), to deal | ||||
|    in the Software without restriction, including without limitation the rights | ||||
|    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
|    copies of the Software, and to permit persons to whom the Software is | ||||
|    furnished to do so, subject to the following conditions: | ||||
|  | ||||
|    The above copyright notice and this permission notice shall be included in | ||||
|    all copies or substantial portions of the Software. | ||||
|  | ||||
|    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
|    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
|    THE SOFTWARE. | ||||
| --> | ||||
|  | ||||
| <mapper namespace="org.glyptodon.guacamole.auth.jdbc.permission.ConnectionPermissionMapper" > | ||||
|  | ||||
|     <!-- Result mapper for connection permissions --> | ||||
|     <resultMap id="ConnectionPermissionResultMap" type="org.glyptodon.guacamole.auth.jdbc.permission.ObjectPermissionModel"> | ||||
|         <result column="user_id"       property="userID"           jdbcType="INTEGER"/> | ||||
|         <result column="username"      property="username"         jdbcType="VARCHAR"/> | ||||
|         <result column="permission"    property="type"             jdbcType="VARCHAR" | ||||
|                 javaType="org.glyptodon.guacamole.net.auth.permission.ObjectPermission$Type"/> | ||||
|         <result column="connection_id" property="objectIdentifier" jdbcType="INTEGER"/> | ||||
|     </resultMap> | ||||
|  | ||||
|     <!-- Select all permissions for a given user --> | ||||
|     <select id="select" resultMap="ConnectionPermissionResultMap"> | ||||
|  | ||||
|         SELECT | ||||
|             guacamole_connection_permission.user_id, | ||||
|             username, | ||||
|             permission, | ||||
|             connection_id | ||||
|         FROM guacamole_connection_permission | ||||
|         JOIN guacamole_user ON guacamole_connection_permission.user_id = guacamole_user.user_id | ||||
|         WHERE guacamole_connection_permission.user_id = #{user.objectID,jdbcType=INTEGER} | ||||
|  | ||||
|     </select> | ||||
|  | ||||
|     <!-- Select the single permission matching the given criteria --> | ||||
|     <select id="selectOne" resultMap="ConnectionPermissionResultMap"> | ||||
|  | ||||
|         SELECT | ||||
|             guacamole_connection_permission.user_id, | ||||
|             username, | ||||
|             permission, | ||||
|             connection_id | ||||
|         FROM guacamole_connection_permission | ||||
|         JOIN guacamole_user ON guacamole_connection_permission.user_id = guacamole_user.user_id | ||||
|         WHERE | ||||
|             guacamole_connection_permission.user_id = #{user.objectID,jdbcType=INTEGER} | ||||
|             AND permission = #{type,jdbcType=VARCHAR} | ||||
|  | ||||
|     </select> | ||||
|  | ||||
|     <!-- Delete all given permissions --> | ||||
|     <delete id="delete" parameterType="org.glyptodon.guacamole.auth.jdbc.permission.ObjectPermissionModel"> | ||||
|  | ||||
|         DELETE FROM guacamole_connection_permission | ||||
|         WHERE (user_id, permission, connection_id) IN | ||||
|             <foreach collection="permissions" item="permission" | ||||
|                      open="(" separator="," close=")"> | ||||
|                 (#{permission.userID,jdbcType=INTEGER}, | ||||
|                  #{permission.type,jdbcType=VARCHAR}, | ||||
|                  #{permission.objectIdentifier,jdbcType=VARCHAR}) | ||||
|             </foreach> | ||||
|  | ||||
|     </delete> | ||||
|  | ||||
|     <!-- Insert all given permissions --> | ||||
|     <insert id="insert" parameterType="org.glyptodon.guacamole.auth.jdbc.permission.ObjectPermissionModel"> | ||||
|  | ||||
|         INSERT IGNORE INTO guacamole_connection_permission ( | ||||
|             user_id, | ||||
|             permission, | ||||
|             connection_id | ||||
|         ) | ||||
|         VALUES | ||||
|             <foreach collection="permissions" item="permission" separator=","> | ||||
|                 (#{permission.userID,jdbcType=INTEGER}, | ||||
|                  #{permission.type,jdbcType=VARCHAR}, | ||||
|                  #{permission.objectIdentifier,jdbcType=VARCHAR}) | ||||
|             </foreach> | ||||
|  | ||||
|     </insert> | ||||
|  | ||||
| </mapper> | ||||
		Reference in New Issue
	
	Block a user