UserController.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <?php
  2. namespace App\Community\Controllers\User;
  3. use App\Models\CdmsUsers;
  4. use Encore\Admin\Controllers\AdminController;
  5. use Encore\Admin\Form;
  6. use Encore\Admin\Grid;
  7. use Encore\Admin\Show;
  8. use Encore\Admin\Facades\Admin;
  9. class UserController extends AdminController
  10. {
  11. protected $title = '管理账号';
  12. /**
  13. * Make a grid builder.
  14. *
  15. * @return Grid
  16. */
  17. protected function grid()
  18. {
  19. $userModel = config('admin.database.users_model');
  20. $grid = new Grid(new $userModel());
  21. $grid->disableCreateButton(false);
  22. $org_id = Admin::user()->org_id;
  23. $aid = Admin::user()->id;
  24. if(!empty($org_id)){
  25. $grid->model()->where('org_id',$org_id);
  26. }
  27. $grid->column('id', 'ID')->sortable();
  28. $grid->column('username', trans('admin.username'));
  29. $grid->column('name', trans('admin.name'));
  30. $grid->column('roles', trans('admin.roles'))->pluck('name')->label();
  31. $grid->column('created_at', trans('admin.created_at'));
  32. $grid->column('updated_at', trans('admin.updated_at'));
  33. $is_manager = Admin::user()->isRole('manager');
  34. $grid->actions(function (Grid\Displayers\Actions $actions) use ($is_manager,$aid) {
  35. $actions->disableDelete();
  36. });
  37. $grid->tools(function (Grid\Tools $tools) {
  38. $tools->batch(function (Grid\Tools\BatchActions $actions) {
  39. $actions->disableDelete();
  40. });
  41. });
  42. return $grid;
  43. }
  44. /**
  45. * Make a show builder.
  46. *
  47. * @param mixed $id
  48. *
  49. * @return Show
  50. */
  51. protected function detail($id)
  52. {
  53. $userModel = config('admin.database.users_model');
  54. $show = new Show($userModel::findOrFail($id));
  55. $show->field('id', 'ID');
  56. $show->field('username', trans('admin.username'));
  57. $show->field('name', trans('admin.name'));
  58. $show->field('roles', trans('admin.roles'))->as(function ($roles) {
  59. return $roles->pluck('name');
  60. })->label();
  61. $show->field('permissions', trans('admin.permissions'))->as(function ($permission) {
  62. return $permission->pluck('name');
  63. })->label();
  64. $show->field('created_at', trans('admin.created_at'));
  65. $show->field('updated_at', trans('admin.updated_at'));
  66. return $show;
  67. }
  68. /**
  69. * Make a form builder.
  70. *
  71. * @return Form
  72. */
  73. public function form()
  74. {
  75. $userModel = config('tenancy.database.users_model');
  76. $roleModel = config('tenancy.database.roles_model');
  77. $org_id = Admin::user()->org_id;
  78. $form = new Form(new $userModel());
  79. $userTable = config('tenancy.database.users_table');
  80. $connection = config('tenancy.database.connection');
  81. $form->display('id', 'ID');
  82. $form->text('username', trans('tenancy.username'))
  83. ->creationRules(['required', "unique:{$connection}.{$userTable}"])
  84. ->updateRules(['required', "unique:{$connection}.{$userTable},username,{{id}}"]);
  85. $form->text('name', trans('tenancy.name'))->rules('required');
  86. $form->image('avatar', trans('tenancy.avatar'));
  87. $form->password('password', trans('tenancy.password'))->rules('required|confirmed');
  88. $form->password('password_confirmation', trans('tenancy.password_confirmation'))->rules('required')
  89. ->default(function ($form) {
  90. return $form->model()->password;
  91. });
  92. $form->ignore(['password_confirmation']);
  93. $form->hidden('org_id')->value($org_id);
  94. $ids = [0,$org_id];
  95. if($form->isEditing()){
  96. $form->multipleSelect('roles', trans('tenancy.roles'))->options($roleModel::whereIn('org_id',$ids)->where('id','>',2)->get()->pluck('name', 'id'));
  97. } else {
  98. $form->multipleSelect('roles', trans('tenancy.roles'))->options($roleModel::whereIn('org_id',$ids)->where('id','>',2)->get()->pluck('name', 'id'));
  99. }
  100. $form->display('created_at', trans('tenancy.created_at'));
  101. $form->display('updated_at', trans('tenancy.updated_at'));
  102. $form->saving(function (Form $form) {
  103. if ($form->password && $form->model()->password != $form->password) {
  104. $form->password = bcrypt($form->password);
  105. }
  106. });
  107. return $form;
  108. }
  109. }