get_application_user_resource_permission.sql 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  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. 'APPLICATION' AS "auth_target_type",
  10. 'application' AS "resource_type",
  11. user_id,
  12. workspace_id,
  13. icon,
  14. folder_id,
  15. create_time
  16. FROM application
  17. ${query_set}
  18. UNION
  19. SELECT application_folder."id"::text,
  20. application_folder."name",
  21. 'APPLICATION' AS "auth_target_type",
  22. 'folder' AS "resource_type",
  23. application_folder."user_id",
  24. application_folder."workspace_id",
  25. NULL AS "icon",
  26. application_folder."parent_id" AS "folder_id",
  27. application_folder."create_time"
  28. FROM application_folder
  29. ${folder_query_set}
  30. ) resource_or_folder
  31. LEFT JOIN (
  32. SELECT target,
  33. CASE
  34. WHEN auth_type = 'ROLE'
  35. AND 'ROLE' = ANY (permission_list) THEN 'ROLE'
  36. WHEN auth_type = 'RESOURCE_PERMISSION_GROUP'
  37. AND 'MANAGE' = ANY (permission_list) THEN 'MANAGE'
  38. WHEN auth_type = 'RESOURCE_PERMISSION_GROUP'
  39. AND 'VIEW' = ANY (permission_list) THEN 'VIEW'
  40. ELSE NULL
  41. END AS permission
  42. FROM workspace_user_resource_permission
  43. ${workspace_user_resource_permission_query_set}
  44. ) wurp
  45. ON wurp.target::text = resource_or_folder.id
  46. ${resource_query_set}
  47. ORDER BY resource_or_folder.create_time DESC