Permission.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <?php
  2. namespace app\agent\controller\auth;
  3. use app\agent\model\auth\Access;
  4. use app\common\controller\AgentController;
  5. use app\http\IResponse;
  6. use Lettered\Support\Auth as IAuth;
  7. use think\App;
  8. class Permission extends AgentController
  9. {
  10. protected $model;
  11. public function __construct(App $app = null, IAuth $auth)
  12. {
  13. parent::__construct($app, $auth);
  14. $this->model = new \app\agent\model\auth\Permission();
  15. }
  16. /**
  17. * 授权规则列表
  18. *
  19. * @author 许祖兴 < zuxing.xu@lettered.cn>
  20. *
  21. * @return mixed
  22. */
  23. public function index()
  24. {
  25. $permissions = $this->model::all();
  26. for ($i = 0; $i < count($permissions) ;$i++)
  27. $permissions[$i]['open'] = true;
  28. return IResponse::success($permissions);
  29. }
  30. /**
  31. * 新增
  32. *
  33. * @author 许祖兴 < zuxing.xu@lettered.cn>
  34. *
  35. * @return mixed
  36. */
  37. public function save()
  38. {
  39. $params = $this->request->param();
  40. $valid = $this->validate($params, [
  41. 'parent_id|上级ID' => 'require',
  42. 'name|用户名' => 'require',
  43. 'type|类型' => 'require',
  44. 'url|路径' => 'require',
  45. 'policy|识标' => 'require'
  46. ]);
  47. (true !== $valid) && IResponse::failure($valid);
  48. $this->model->storeBy($params);
  49. return IResponse::success('新增授权规则成功');
  50. }
  51. /**
  52. *
  53. * @author 许祖兴 < zuxing.xu@lettered.cn>
  54. *
  55. * @param int $id
  56. * @return mixed
  57. */
  58. public function update($id)
  59. {
  60. // 接收数据
  61. $params = $this->request->param();
  62. $params['parent_id'] = $params['parent_id'] !== -1 ? $params['parent_id'] : 0;
  63. $permission = $this->model->findBy($id);
  64. if ($permission->updateBy($id, $params)){
  65. $Access = new Access();
  66. // casbin处理
  67. $permissions = $Access->getAll([
  68. 'v1' => $permission->url,
  69. 'v2' => $permission->policy
  70. ]);
  71. foreach ($permissions as $permission){
  72. $permission->v1 = $params['url'];
  73. $permission->v2 = $params['policy'];
  74. $permission->save();
  75. }
  76. }
  77. return IResponse::success('更新授权规则成功');
  78. }
  79. /**
  80. * 删除授权规则
  81. *
  82. * @author 许祖兴 < zuxing.xu@lettered.cn>
  83. * @date 2020/3/18 11:14
  84. *
  85. * @param int $id 权限ID
  86. * @return \think\response\Json
  87. */
  88. public function delete($id)
  89. {
  90. $result = $this->model::destroy($id);
  91. return IResponse::success($result,'删除授权规则成功');
  92. }
  93. }