UserController.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Exports\UserExport;
  4. use App\Role;
  5. use App\User;
  6. use Exception;
  7. use Illuminate\Http\Request;
  8. use Illuminate\Http\Response;
  9. use Illuminate\Support\Facades\Auth;
  10. use Illuminate\Support\Facades\Gate;
  11. use Illuminate\Support\Facades\Validator;
  12. use Maatwebsite\Excel\Facades\Excel;
  13. class UserController extends Controller
  14. {
  15. /**
  16. * Display a listing of the resource.
  17. *
  18. * @return Response
  19. */
  20. public function index()
  21. {
  22. if(!Gate::allows('用户-查询')){ return redirect(url('/')); }
  23. $users=User::with('roles')->orderBy('id','desc')->paginate(35);
  24. $users->each(function (User $user){
  25. $user['isSuperAdmin']=$user->isSuperAdmin();
  26. });
  27. return view('maintenance.user.index',['users'=>$users]);
  28. }
  29. /**
  30. * Show the form for creating a new resource.
  31. *
  32. * @return Response
  33. */
  34. public function create()
  35. {
  36. if(!Gate::allows('用户-录入')){ return redirect(url('/')); }
  37. $roles=Role::all();
  38. return view('maintenance.user.create',['rolesAll'=>$roles]);
  39. }
  40. // /**
  41. // * Store a newly created resource in storage.
  42. // *
  43. // * @param Request $request
  44. // * @return Response
  45. // */
  46. // public function store(Request $request)
  47. // {
  48. // $this->validatorCreate($request->all())->validate();
  49. // $user=new User($request->all());
  50. // $user->save();
  51. //
  52. // return redirect('maintenance/user/create')->with('successTip',"成功录入用户“{$request->input('name')}”");
  53. // }
  54. protected function validatorCreate(array $data)
  55. {
  56. return Validator::make($data, [
  57. 'name' => ['required', 'string', 'max:50', 'unique:users'],
  58. ]);
  59. }
  60. protected function validatorUpdate(array $data)
  61. {
  62. return Validator::make($data, [
  63. 'name' => ['required', 'string', 'max:50'],
  64. ]);
  65. }
  66. /**
  67. * Display the specified resource.
  68. *
  69. * @param User $user
  70. * @return Response
  71. */
  72. public function show(User $user)
  73. {
  74. //
  75. }
  76. /**
  77. * Show the form for editing the specified resource.
  78. *
  79. * @param User $user
  80. * @return Response
  81. */
  82. public function edit(User $user)
  83. {
  84. if(!Gate::allows('用户-编辑')){ return redirect(url('/')); }
  85. $rolesAll=Role::all();
  86. $roles=$user->roles()->get();
  87. return view('maintenance.user.edit',compact('user','rolesAll','roles'));
  88. }
  89. /**
  90. * Update the specified resource in storage.
  91. *
  92. * @param Request $request
  93. * @param User $user
  94. * @return Response
  95. */
  96. public function update(Request $request, User $user)
  97. {
  98. if(!Gate::allows('用户-编辑')){ return redirect(url('/')); }
  99. $this->validatorUpdate($request->all())->validate();
  100. $user->fill($request->all());
  101. $user->update();
  102. $rolesIds=$request->input('role')??'';
  103. if($rolesIds){
  104. $roleIdArr=explode(',',$rolesIds);
  105. $user->roles()->sync($roleIdArr);
  106. }else{
  107. $user->roles()->sync([]);
  108. }
  109. $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
  110. return redirect('maintenance/user/')->with('successTip',"成功修改用户“{$user['name']}”!");
  111. }
  112. /**
  113. * Remove the specified resource from storage.
  114. *
  115. * @param User $user
  116. * @return array|Response
  117. * @throws Exception
  118. */
  119. public function destroy(User $user)
  120. {
  121. if(!Gate::allows('用户-删除')){ return redirect(url('/')); }
  122. $this->log(__METHOD__,__FUNCTION__,$user->toJson(),Auth::user()['id']);
  123. $re=$user->delete();
  124. return ['success'=>$re];
  125. }
  126. }