aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-db/src/main/resources/org/sonar/db/permission/PermissionMapper.xml
diff options
context:
space:
mode:
Diffstat (limited to 'sonar-db/src/main/resources/org/sonar/db/permission/PermissionMapper.xml')
-rw-r--r--sonar-db/src/main/resources/org/sonar/db/permission/PermissionMapper.xml69
1 files changed, 69 insertions, 0 deletions
diff --git a/sonar-db/src/main/resources/org/sonar/db/permission/PermissionMapper.xml b/sonar-db/src/main/resources/org/sonar/db/permission/PermissionMapper.xml
new file mode 100644
index 00000000000..79a705a44dc
--- /dev/null
+++ b/sonar-db/src/main/resources/org/sonar/db/permission/PermissionMapper.xml
@@ -0,0 +1,69 @@
+<?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">
+
+<mapper namespace="org.sonar.db.permission.PermissionMapper">
+
+ <select id="selectUsers" parameterType="map" resultType="UserWithPermission">
+ SELECT u.login as login, u.name as name, user_role.role as permission
+ FROM users u
+ LEFT JOIN user_roles user_role ON user_role.user_id=u.id
+ AND user_role.role=#{query.permission}
+ <if test="componentId != null">
+ AND user_role.resource_id=#{componentId}
+ </if>
+ <if test="componentId == null">
+ AND user_role.resource_id IS NULL
+ </if>
+ <where>
+ u.active = ${_true}
+ <choose>
+ <when test="query.membership() == 'IN'">
+ AND user_role.role IS NOT NULL
+ </when>
+ <when test="query.membership() == 'OUT'">
+ AND user_role.role IS NULL
+ </when>
+ </choose>
+ <if test="query.search() != null">
+ AND (UPPER(u.name) LIKE #{query.searchSql} ESCAPE '/')
+ </if>
+ </where>
+ ORDER BY u.name
+ </select>
+
+ <select id="selectGroups" parameterType="map" resultType="GroupWithPermission">
+ SELECT name, description, permission FROM
+ (SELECT g.name as name, g.description as description, group_role.role as permission
+ FROM groups g
+ LEFT JOIN group_roles group_role ON group_role.group_id=g.id
+ AND group_role.role=#{query.permission}
+ <if test="componentId != null">
+ AND group_role.resource_id=#{componentId}
+ </if>
+ <if test="componentId == null">
+ AND group_role.resource_id IS NULL
+ </if>
+ UNION
+ -- Add Anyone group permission
+ SELECT #{anyoneGroup} as name, NULL as description, group_role.role as permission
+ FROM group_roles group_role
+ <where>
+ AND group_role.role=#{query.permission}
+ AND group_role.group_id IS NULL
+ <if test="componentId != null">
+ AND group_role.resource_id=#{componentId}
+ </if>
+ <if test="componentId == null">
+ AND group_role.resource_id IS NULL
+ </if>
+ </where>
+ ) groups
+ <where>
+ <if test="query.search() != null">
+ AND (UPPER(groups.name) LIKE #{query.searchSql} ESCAPE '/')
+ </if>
+ </where>
+ ORDER BY groups.name
+ </select>
+
+</mapper>