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.

PermissionMapper.xml 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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.PermissionMapper">
  4. <select id="selectUsers" parameterType="map" resultType="UserWithPermission">
  5. SELECT u.login as login, u.name as name, user_role.role as permission
  6. <include refid="usersSelection"/>
  7. ORDER BY u.name
  8. </select>
  9. <select id="countUsers" parameterType="map" resultType="int">
  10. SELECT count(u.login)
  11. <include refid="usersSelection"/>
  12. </select>
  13. <sql id="usersSelection">
  14. FROM users u
  15. LEFT JOIN user_roles user_role ON user_role.user_id=u.id
  16. AND user_role.role=#{query.permission}
  17. <if test="componentId != null">
  18. AND user_role.resource_id=#{componentId}
  19. </if>
  20. <if test="componentId == null">
  21. AND user_role.resource_id IS NULL
  22. </if>
  23. <where>
  24. u.active = ${_true}
  25. <choose>
  26. <when test="query.membership() == 'IN'">
  27. AND user_role.role IS NOT NULL
  28. </when>
  29. <when test="query.membership() == 'OUT'">
  30. AND user_role.role IS NULL
  31. </when>
  32. </choose>
  33. <if test="query.search() != null">
  34. AND (UPPER(u.name) LIKE #{query.searchSql} ESCAPE '/')
  35. </if>
  36. </where>
  37. </sql>
  38. <select id="selectGroups" parameterType="map" resultType="GroupWithPermission">
  39. SELECT id, name, description, permission FROM
  40. (SELECT g.id as id, g.name as name, g.description as description, group_role.role as permission
  41. FROM groups g
  42. LEFT JOIN group_roles group_role ON group_role.group_id=g.id
  43. AND group_role.role=#{query.permission}
  44. <if test="componentId != null">
  45. AND group_role.resource_id=#{componentId}
  46. </if>
  47. <if test="componentId == null">
  48. AND group_role.resource_id IS NULL
  49. </if>
  50. UNION
  51. -- Add Anyone group permission
  52. SELECT 0 as id, #{anyoneGroup} as name, NULL as description, group_role.role as permission
  53. FROM group_roles group_role
  54. <where>
  55. AND group_role.role=#{query.permission}
  56. AND group_role.group_id IS NULL
  57. <if test="componentId != null">
  58. AND group_role.resource_id=#{componentId}
  59. </if>
  60. <if test="componentId == null">
  61. AND group_role.resource_id IS NULL
  62. </if>
  63. </where>
  64. ) groups
  65. <where>
  66. <if test="query.search() != null">
  67. AND (UPPER(groups.name) LIKE #{query.searchSql} ESCAPE '/')
  68. </if>
  69. </where>
  70. ORDER BY groups.name
  71. </select>
  72. <select id="countGroups" parameterType="map" resultType="int">
  73. SELECT count(name) FROM
  74. (SELECT g.name as name
  75. FROM groups g
  76. LEFT JOIN group_roles group_role ON group_role.group_id=g.id
  77. AND group_role.role=#{query.permission}
  78. <if test="componentId != null">
  79. AND group_role.resource_id=#{componentId}
  80. </if>
  81. <if test="componentId == null">
  82. AND group_role.resource_id IS NULL
  83. </if>
  84. UNION
  85. -- Add Anyone group permission
  86. SELECT #{anyoneGroup} as name
  87. FROM group_roles group_role
  88. <where>
  89. AND group_role.role=#{query.permission}
  90. AND group_role.group_id IS NULL
  91. <if test="componentId != null">
  92. AND group_role.resource_id=#{componentId}
  93. </if>
  94. <if test="componentId == null">
  95. AND group_role.resource_id IS NULL
  96. </if>
  97. </where>
  98. ) groups
  99. <where>
  100. <if test="query.search() != null">
  101. AND (UPPER(groups.name) LIKE #{query.searchSql} ESCAPE '/')
  102. </if>
  103. </where>
  104. </select>
  105. </mapper>