get_tool_user_resource_permission.sql 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. SELECT resource_or_folder.*,
  2. CASE
  3. WHEN wurp."permission" IS NULL THEN 'NOT_AUTH'
  4. ELSE wurp."permission"
  5. END
  6. FROM (
  7. SELECT "id"::text,
  8. "name",
  9. 'TOOL' AS "auth_target_type",
  10. 'tool' AS "resource_type",
  11. user_id,
  12. workspace_id,
  13. icon,
  14. folder_id,
  15. tool_type,
  16. create_time
  17. FROM tool
  18. ${query_set}
  19. UNION
  20. SELECT tool_folder."id"::text,
  21. tool_folder."name",
  22. 'TOOL' AS "auth_target_type",
  23. 'folder' AS "resource_type",
  24. tool_folder."user_id",
  25. tool_folder."workspace_id",
  26. NULL AS "icon",
  27. tool_folder."parent_id" AS "folder_id",
  28. NULL AS "tool_type",
  29. tool_folder."create_time"
  30. FROM tool_folder
  31. ${folder_query_set}
  32. ) resource_or_folder
  33. LEFT JOIN (
  34. SELECT target,
  35. CASE
  36. WHEN auth_type = 'ROLE'
  37. AND 'ROLE' = ANY(permission_list) THEN 'ROLE'
  38. WHEN auth_type = 'RESOURCE_PERMISSION_GROUP'
  39. AND 'MANAGE' = ANY(permission_list) THEN 'MANAGE'
  40. WHEN auth_type = 'RESOURCE_PERMISSION_GROUP'
  41. AND 'VIEW' = ANY(permission_list) THEN 'VIEW'
  42. ELSE null
  43. END AS permission
  44. FROM
  45. workspace_user_resource_permission
  46. ${workspace_user_resource_permission_query_set}
  47. ) wurp
  48. ON wurp.target::text = resource_or_folder."id"
  49. ${resource_query_set}
  50. ORDER BY resource_or_folder.create_time DESC