get_knowledge_user_resource_permission.sql 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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
  8. id::text,
  9. "name",
  10. 'KNOWLEDGE' AS "auth_target_type",
  11. 'knowledge' AS "resource_type",
  12. user_id,
  13. workspace_id,
  14. "type"::varchar AS "icon",
  15. folder_id,
  16. create_time
  17. FROM knowledge
  18. ${query_set}
  19. UNION
  20. SELECT knowledge_folder."id"::text,
  21. knowledge_folder."name",
  22. 'KNOWLEDGE' AS "auth_target_type",
  23. 'folder' AS "resource_type",
  24. knowledge_folder."user_id",
  25. knowledge_folder."workspace_id",
  26. NULL AS "icon",
  27. knowledge_folder."parent_id" AS "folder_id",
  28. knowledge_folder."create_time"
  29. FROM knowledge_folder
  30. ${folder_query_set}
  31. ) resource_or_folder
  32. LEFT JOIN (
  33. SELECT
  34. 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