You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

PermissionTemplateMapper.xml 8.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3. <mapper namespace="org.sonar.db.permission.PermissionTemplateMapper">
  4. <insert id="insert" parameterType="PermissionTemplate" keyColumn="id" useGeneratedKeys="true" keyProperty="id">
  5. INSERT INTO permission_templates (name, kee, description, key_pattern, created_at, updated_at)
  6. VALUES (#{name}, #{kee}, #{description}, #{keyPattern}, #{createdAt}, #{updatedAt})
  7. </insert>
  8. <update id="update" parameterType="PermissionTemplate">
  9. UPDATE permission_templates
  10. SET name = #{name}, description = #{description}, key_pattern = #{keyPattern}, updated_at = #{updatedAt}
  11. WHERE id = #{id}
  12. </update>
  13. <delete id="delete" parameterType="long">
  14. DELETE FROM permission_templates
  15. WHERE id = #{templateId}
  16. </delete>
  17. <delete id="deleteUsersPermissions" parameterType="long">
  18. DELETE FROM perm_templates_users
  19. WHERE template_id = #{templateId}
  20. </delete>
  21. <delete id="deleteGroupsPermissions" parameterType="long">
  22. DELETE FROM perm_templates_groups
  23. WHERE template_id = #{templateId}
  24. </delete>
  25. <insert id="insertUserPermission" parameterType="PermissionTemplateUser">
  26. INSERT INTO perm_templates_users (template_id, user_id, permission_reference, created_at, updated_at)
  27. VALUES (#{templateId}, #{userId}, #{permission}, #{createdAt}, #{updatedAt})
  28. </insert>
  29. <delete id="deleteUserPermission" parameterType="PermissionTemplateUser">
  30. DELETE FROM perm_templates_users
  31. WHERE template_id = #{templateId}
  32. AND user_id = #{userId}
  33. AND permission_reference = #{permission}
  34. </delete>
  35. <insert id="insertGroupPermission" parameterType="PermissionTemplateGroup">
  36. INSERT INTO perm_templates_groups (template_id, group_id, permission_reference, created_at, updated_at)
  37. VALUES (#{templateId}, #{groupId}, #{permission}, #{createdAt}, #{updatedAt})
  38. </insert>
  39. <delete id="deleteGroupPermission" parameterType="PermissionTemplateGroup">
  40. DELETE FROM perm_templates_groups
  41. WHERE template_id = #{templateId}
  42. AND permission_reference = #{permission}
  43. AND
  44. <choose>
  45. <when test="groupId != null">
  46. group_id = #{groupId}
  47. </when>
  48. <otherwise>
  49. group_id IS NULL
  50. </otherwise>
  51. </choose>
  52. </delete>
  53. <delete id="deleteByGroupId" parameterType="long">
  54. DELETE FROM perm_templates_groups
  55. WHERE group_id = #{groupId}
  56. </delete>
  57. <select id="selectUsers" parameterType="map" resultType="UserWithPermission">
  58. SELECT u.login as login, u.name as name, ptu.permission_reference as permission
  59. <include refid="usersSelection"/>
  60. ORDER BY u.name
  61. </select>
  62. <select id="countUsers" parameterType="map" resultType="int">
  63. SELECT count(u.login)
  64. <include refid="usersSelection"/>
  65. </select>
  66. <sql id="usersSelection">
  67. FROM users u
  68. LEFT JOIN perm_templates_users ptu ON ptu.user_id=u.id
  69. AND ptu.permission_reference=#{query.permission}
  70. AND ptu.template_id=#{templateId}
  71. <where>
  72. u.active = ${_true}
  73. <choose>
  74. <when test="query.membership() == 'IN'">
  75. AND ptu.permission_reference IS NOT NULL
  76. </when>
  77. <when test="query.membership() == 'OUT'">
  78. AND ptu.permission_reference IS NULL
  79. </when>
  80. </choose>
  81. <if test="query.search() != null">
  82. AND (UPPER(u.name) LIKE #{query.searchSql} ESCAPE '/')
  83. </if>
  84. </where>
  85. </sql>
  86. <select id="selectGroups" parameterType="map" resultType="GroupWithPermission">
  87. SELECT name, description, permission FROM
  88. (SELECT g.name as name, g.description as description, ptg.permission_reference as permission
  89. FROM groups g
  90. LEFT JOIN perm_templates_groups ptg ON ptg.group_id=g.id
  91. AND ptg.permission_reference=#{query.permission}
  92. AND ptg.template_id=#{templateId}
  93. UNION
  94. -- Add Anyone group permission
  95. SELECT #{anyoneGroup} as name, NULL as description, ptg.permission_reference as permission
  96. FROM perm_templates_groups ptg
  97. <where>
  98. AND ptg.permission_reference=#{query.permission}
  99. AND ptg.template_id=#{templateId}
  100. AND ptg.group_id IS NULL
  101. </where>
  102. ) groups
  103. <where>
  104. <if test="query.search() != null">
  105. AND (UPPER(groups.name) LIKE #{query.searchSql} ESCAPE '/')
  106. </if>
  107. </where>
  108. ORDER BY groups.name
  109. </select>
  110. <select id="countGroups" parameterType="map" resultType="int">
  111. SELECT count(name) FROM
  112. (SELECT g.name as name, g.description as description, ptg.permission_reference as permission
  113. FROM groups g
  114. LEFT JOIN perm_templates_groups ptg ON ptg.group_id=g.id
  115. AND ptg.permission_reference=#{query.permission}
  116. AND ptg.template_id=#{templateId}
  117. UNION
  118. -- Add Anyone group permission
  119. SELECT #{anyoneGroup} as name, NULL as description, ptg.permission_reference as permission
  120. FROM perm_templates_groups ptg
  121. <where>
  122. AND ptg.permission_reference=#{query.permission}
  123. AND ptg.template_id=#{templateId}
  124. AND ptg.group_id IS NULL
  125. </where>
  126. ) groups
  127. <where>
  128. <if test="query.search() != null">
  129. AND (UPPER(groups.name) LIKE #{query.searchSql} ESCAPE '/')
  130. </if>
  131. </where>
  132. </select>
  133. <select id="selectByKey" parameterType="String" resultType="PermissionTemplate">
  134. SELECT id, name, kee, description, key_pattern AS keyPattern, created_at AS createdAt, updated_at AS updatedAt
  135. FROM permission_templates
  136. WHERE kee = #{kee}
  137. </select>
  138. <select id="selectAllPermissionTemplates" resultType="PermissionTemplate">
  139. SELECT id, name, kee, description, key_pattern AS keyPattern, created_at AS createdAt, updated_at AS updatedAt
  140. FROM permission_templates
  141. </select>
  142. <select id="selectTemplateUsersPermissions" parameterType="String" resultMap="fullPermissionsTemplateResult">
  143. SELECT pt.id AS template_id,
  144. pt.name AS template_name,
  145. pt.description AS template_description,
  146. pt.key_pattern AS template_key_pattern,
  147. pt.created_at AS template_created_at,
  148. pt.updated_at AS template_updated_at,
  149. ptu.id AS permission_template_user_id,
  150. ptu.permission_reference AS user_permission,
  151. ptu.user_id AS user_id,
  152. u.name AS user_name,
  153. u.login AS user_login
  154. FROM permission_templates pt
  155. INNER JOIN perm_templates_users ptu ON ptu.template_id = pt.id
  156. INNER JOIN users u ON u.id = ptu.user_id AND u.active = ${_true}
  157. WHERE pt.kee = #{templateKey}
  158. </select>
  159. <select id="selectTemplateGroupsPermissions" parameterType="String" resultMap="fullPermissionsTemplateResult">
  160. SELECT pt.id AS template_id,
  161. pt.name AS template_name,
  162. pt.description AS template_description,
  163. pt.key_pattern AS template_key_pattern,
  164. pt.created_at AS template_created_at,
  165. pt.updated_at AS template_updated_at,
  166. ptg.id AS permission_template_group_id,
  167. ptg.permission_reference AS group_permission,
  168. ptg.group_id AS group_id,
  169. g.name AS group_name
  170. FROM permission_templates pt
  171. INNER JOIN perm_templates_groups ptg ON ptg.template_id = pt.id
  172. LEFT OUTER JOIN groups g ON g.id = ptg.group_id
  173. WHERE pt.kee = #{templateKey}
  174. AND (g.name IS NOT NULL OR ptg.group_id IS NULL)
  175. </select>
  176. <resultMap id="fullPermissionsTemplateResult" type="PermissionTemplate">
  177. <id property="id" column="template_id"/>
  178. <result property="name" column="template_name"/>
  179. <result property="description" column="template_description"/>
  180. <result property="keyPattern" column="template_key_pattern"/>
  181. <result property="createdAt" column="template_created_at"/>
  182. <result property="updatedAt" column="template_updated_at"/>
  183. <collection property="usersPermissions" ofType="PermissionTemplateUser">
  184. <id property="id" column="permission_template_user_id"/>
  185. <result property="userId" column="user_id"/>
  186. <result property="permission" column="user_permission"/>
  187. <result property="userName" column="user_name"/>
  188. <result property="userLogin" column="user_login"/>
  189. </collection>
  190. <collection property="groupsPermissions" ofType="PermissionTemplateGroup">
  191. <id property="id" column="permission_template_group_id"/>
  192. <result property="groupId" column="group_id"/>
  193. <result property="permission" column="group_permission"/>
  194. <result property="groupName" column="group_name"/>
  195. </collection>
  196. </resultMap>
  197. </mapper>