diff options
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.xml | 69 |
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> |