RbacController.php 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <?php
  2. /**
  3. * Author: lf
  4. * Blog: https://blog.feehi.com
  5. * Email: job@feehi.com
  6. * Created at: 2017-09-12 11:30
  7. */
  8. namespace backend\controllers;
  9. use Yii;
  10. use common\services\RBACServiceInterface;
  11. use backend\actions\CreateAction;
  12. use backend\actions\DeleteAction;
  13. use backend\actions\IndexAction;
  14. use backend\actions\SortAction;
  15. use backend\actions\UpdateAction;
  16. use backend\actions\ViewAction;
  17. /**
  18. * RBAC management
  19. * - data:
  20. * table auth_item auth_item_child auth_assignment
  21. * - description:
  22. * backend user RBAC management
  23. *
  24. * Class RbacController
  25. * @package backend\controllers
  26. */
  27. class RbacController extends \yii\web\Controller
  28. {
  29. /**
  30. * @auth
  31. * - item group=权限 category=规则 description-get=列表 sort=500 method=get
  32. * - item group=权限 category=规则 description-post=排序 sort=501 method=post
  33. * - item group=权限 category=规则 description=创建 sort-get=502 sort-post=503 method=get,post
  34. * - item group=权限 category=规则 description=修改 sort-get=504 sort-post=505 method=get,post
  35. * - item group=权限 category=规则 description-get=查看 sort=506 method=get
  36. * - item group=权限 category=规则 description-post=删除 sort=507 method=post
  37. * - item group=权限 category=角色 description-get=列表 sort=510 method=get
  38. * - item group=权限 category=角色 description-get=查看 sort=515 method=get
  39. * - item group=权限 category=角色 description=创建 sort-get=511 sort-post=512 method=get,post
  40. * - item group=权限 category=角色 description=修改 sort-get=513 sort-post=514 method=get,post
  41. * - item group=权限 category=角色 description-post=排序 sort=516 method=post
  42. * - item group=权限 category=角色 description-post=删除 sort=517 method=post
  43. */
  44. public function actions()
  45. {
  46. /** @var RBACServiceInterface $service */
  47. $service = Yii::$app->get(RBACServiceInterface::ServiceName);
  48. return [
  49. 'permissions' => [
  50. 'class' => IndexAction::className(),
  51. 'data' => function($query) use($service){
  52. $result = $service->getPermissionList($query);
  53. return [
  54. 'dataProvider' => $result['dataProvider'],
  55. 'searchModel' => $result['searchModel'],
  56. ];
  57. }
  58. ],
  59. 'permission-sort' => [
  60. 'class' => SortAction::className(),
  61. 'doSort' => function($name, $sort) use($service){
  62. return $service->sortPermission($name['name'], $sort);
  63. },
  64. ],
  65. 'permission-create' => [
  66. "class" => CreateAction::className(),
  67. 'doCreate' => function($postData) use($service){
  68. return $service->createPermission($postData);
  69. },
  70. 'data' => function($createResultModel) use($service){
  71. $model = $createResultModel === null ? $service->getNewPermissionModel() : $createResultModel;
  72. return [
  73. 'model' => $model,
  74. 'groups' => $service->getPermissionGroups(),
  75. 'categories' => $service->getPermissionCategories(),
  76. ];
  77. },
  78. 'successRedirect' => ['rbac/permissions'],
  79. ],
  80. 'permission-update' => [
  81. 'primaryKeyIdentity' => 'name',
  82. "class" => UpdateAction::className(),
  83. "doUpdate" => function($name, $postData) use($service){
  84. return $service->updatePermission($name, $postData);
  85. },
  86. "data" => function($name, $updateResultModel) use($service){
  87. $model = $updateResultModel === null ? $service->getPermissionDetail($name) : $updateResultModel;
  88. return [
  89. 'model' => $model,
  90. 'groups' => $service->getPermissionGroups(),
  91. 'categories' => $service->getPermissionCategories(),
  92. ];
  93. }
  94. ],
  95. 'permission-view-layer' => [
  96. 'primaryKeyIdentity' => 'name',
  97. 'class' => ViewAction::className(),
  98. 'data' => function($name) use($service){
  99. return [
  100. "model" => $service->getPermissionDetail($name),
  101. ];
  102. },
  103. 'viewFile' => 'permission-view-layer',
  104. ],
  105. 'permission-delete' => [
  106. 'primaryKeyIdentity' => 'name',
  107. "class" => DeleteAction::className(),
  108. "doDelete" => function($name) use($service) {
  109. return $service->deletePermission($name);
  110. },
  111. ],
  112. 'roles' => [
  113. 'class' => IndexAction::className(),
  114. 'data' => function($query) use($service){
  115. $result = $service->getRoleList($query);
  116. return [
  117. 'dataProvider' => $result['dataProvider'],
  118. 'searchModel' => $result['searchModel'],
  119. ];
  120. },
  121. 'viewFile' => 'roles',
  122. ],
  123. 'role-view-layer' => [
  124. 'class' => ViewAction::className(),
  125. 'primaryKeyIdentity' => 'name',
  126. 'viewFile' => 'role-view-layer',
  127. 'data' => function($name) use($service){
  128. return [
  129. 'model' => $service->getRoleDetail($name),
  130. ];
  131. }
  132. ],
  133. 'role-create' => [
  134. "class" => CreateAction::className(),
  135. 'doCreate' => function($postData) use($service){
  136. return $service->createRole($postData);
  137. },
  138. 'data' => function($createResultModel) use($service){
  139. $model = $createResultModel === null ? $service->getNewRoleModel() : $createResultModel;
  140. return [
  141. 'model' => $model,
  142. 'permissions' => $service->getPermissionsGroups(),
  143. 'roles' => $service->getRoles(),
  144. ];
  145. },
  146. 'successRedirect' => ['rbac/roles']
  147. ],
  148. 'role-update' => [
  149. "class" => UpdateAction::className(),
  150. 'primaryKeyIdentity' => 'name',
  151. "doUpdate" => function($name, $postData) use($service){
  152. return $service->updateRole($name, $postData);
  153. },
  154. 'data' => function($name, $updateResultModel) use($service){
  155. $model = $updateResultModel === null ? $service->getRoleDetail($name) : $updateResultModel;
  156. $roles = $service->getRoles();
  157. unset($roles[$name]);
  158. return [
  159. 'model' => $model,
  160. 'permissions' => $service->getPermissionsGroups(),
  161. 'roles' => $roles,
  162. ];
  163. },
  164. 'successRedirect' => ['rbac/roles'],
  165. ],
  166. 'role-sort' => [
  167. 'class' => SortAction::className(),
  168. 'doSort' => function($name, $sort) use($service) {
  169. return $service->sortRole($name['name'], $sort);
  170. },
  171. ],
  172. 'role-delete' => [
  173. "class" => DeleteAction::className(),
  174. 'primaryKeyIdentity' => 'name',
  175. "doDelete" => function($name) use($service) {
  176. return $service->deleteRole($name);
  177. },
  178. ],
  179. ];
  180. }
  181. }