api.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <?php
  2. require_once '../../vendor/autoload.php';
  3. require_once '../config.php';
  4. use Casbin\Enforcer;
  5. use CasbinAdapter\Medoo\Adapter as DatabaseAdapter;
  6. define("IDPrefixTranslation" , "it_");
  7. define("IDPrefixChannel", "ic_");
  8. define("IDPrefixArticle", "ia_");
  9. define("IDPrefixUser" , "iu_");
  10. define("IDPrefixOrg" , "io_");
  11. define("IDPrefixOrgGroup", "iog_");
  12. // 资源分组:版本风格
  13. define("ResStudio" , "s_studio");
  14. // 资源分组:版本风格
  15. define("ResChannel" , "s_channel");
  16. // 资源分组:文章
  17. define("ResArticle" , "s_article");
  18. // 资源分组:文集
  19. define("ResArticle" , "s_collection");
  20. // 资源分组:译文(版本风格 + 文章)句子库
  21. define("ResTranslation" , "s_translation");
  22. // 资源分组:逐词译段落
  23. define("ResArticle" , "s_wbw");
  24. // 资源分组:术语
  25. define("ResArticle" , "s_term");
  26. // 资源分组:用户字典
  27. define("ResArticle" , "s_userdict");
  28. // 组织拥有者 转让
  29. define("RoleOrgOwner" , "r_owner");
  30. // 组织管理员 创建 删除 修改 文章/文集模版 channel group
  31. define("RoleOrgAdmin" , "r_admin");
  32. // 组织编辑 修改译文
  33. define("RoleOrgEditor" , "r_editor");
  34. // 组织成员 读取任意资源
  35. define("RoleOrgMember" , "r_member");
  36. // 组织访客(比如未注册用户) 只读取公开资源
  37. define("RoleOrgVisitor" , "r_visitor");
  38. // 权限:角色分组
  39. define("GroupRole" , "g");
  40. // 权限:资源分组
  41. define("GroupRes" , "g2");
  42. // 权限:阅读权限
  43. define("PermRead" , "p_read");
  44. // 权限:翻译权限
  45. define("PermTrans" , "p_trans");
  46. // 权限:修改权限
  47. define("PermWrite" , "p_write");
  48. // 权限:创建
  49. define("PermCreate" , "p_create");
  50. // 权限:删除
  51. define("PermDelete" , "p_delete");
  52. // 权限:修改
  53. define("PermUpdate" , "p_update");
  54. /*
  55. 所有的注册用户都加入 public/member 角色
  56. 所有访问网站者,包括未登录者,都加入 public/visitor 角色
  57. 注册用户在注册时同时注册一个与用户名相同的studio
  58. */
  59. class CasbinAuth{
  60. protected $config = [
  61. 'database_type' => Database["type"],
  62. 'server' => Database['server'],
  63. 'database_name' => Database['name'],
  64. 'username' => Database['user'],
  65. 'password' => Database['password'],
  66. 'port' => Database['port'],
  67. ];
  68. protected $adapter;
  69. protected $e;
  70. function __construct() {
  71. $this->adapter = DatabaseAdapter::newAdapter($config);
  72. $this->e = new Enforcer(__DIR__.'/rbac.model.conf', $adapter);
  73. }
  74. /*
  75. 列出某用户有权限的资源列表
  76. 例如 zhang3 在 org1 下的 所有 有权限的 channel 列表
  77. Index( "zhang3" , "org1" , "channel" )
  78. */
  79. public function IndexRes($user,$resNodeId,$resType){
  80. }
  81. /*
  82. 某用户某个资源列表
  83. 例如 zhang3 在 org1 下的 所有 channel 列表
  84. Index( "zhang3" , "org1" , "channel" )
  85. */
  86. public function UserCanReadRes($user,$resNodeId,$resType){
  87. }
  88. /*
  89. 某用户建立某个资源
  90. */
  91. public function UserCreateRes($user,$resNode,$resType){
  92. }
  93. /*
  94. 查询某用户是否可以建立某个资源
  95. */
  96. public function UserCanCreateRes($user,$resNode,$resType){
  97. }
  98. /*
  99. 某用户删除某个资源
  100. */
  101. public function UserDeleteRes($user,$resId,$resType){
  102. }
  103. /*
  104. 查询某用户是否可以删除某个资源
  105. */
  106. public function UserCanDeleteRes($user,$resId,$resType){
  107. }
  108. /*
  109. 查询某用户是否可以修改某个资源
  110. 返回值 true/fasle
  111. */
  112. public function CanUpdateRes($user,$resId,$resType){
  113. }
  114. public function setRoleRight($role,$resId,$resType,$right){
  115. }
  116. public function testRoleRight($role,$resId,$resType,$right){
  117. }
  118. public function setUserRight($user,$resId,$resType,$right){
  119. }
  120. public function testUserRight($user,$resId,$resType,$right){
  121. }
  122. public function addRole($user,$role){
  123. }
  124. public function removeRole($user,$role){
  125. }
  126. }