UserController.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  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. protected function validatorCreate(array $data)
  41. {
  42. return Validator::make($data, [
  43. 'name' => ['required', 'string', 'max:50', 'unique:users'],
  44. ]);
  45. }
  46. protected function validatorUpdate(array $data)
  47. {
  48. return Validator::make($data, [
  49. 'name' => ['required', 'string', 'max:50'],
  50. ]);
  51. }
  52. /**
  53. * Display the specified resource.
  54. *
  55. * @param User $user
  56. * @return Response
  57. */
  58. public function show(User $user)
  59. {
  60. //
  61. }
  62. /**
  63. * Show the form for editing the specified resource.
  64. *
  65. * @param User $user
  66. * @return Response
  67. */
  68. public function edit(User $user)
  69. {
  70. if(!Gate::allows('用户-编辑')){ return redirect(url('/')); }
  71. $rolesAll=Role::all();
  72. $roles=$user->roles()->get();
  73. return view('maintenance.user.edit',compact('user','rolesAll','roles'));
  74. }
  75. /**
  76. * Update the specified resource in storage.
  77. *
  78. * @param Request $request
  79. * @param User $user
  80. * @return Response
  81. */
  82. public function update(Request $request, User $user)
  83. {
  84. if(!Gate::allows('用户-编辑')){ return redirect(url('/')); }
  85. $this->validatorUpdate($request->all())->validate();
  86. $user->fill($request->all());
  87. $user->update();
  88. $rolesIds=$request->input('role')??'';
  89. if($rolesIds){
  90. $roleIdArr=explode(',',$rolesIds);
  91. $user->roles()->sync($roleIdArr);
  92. }else{
  93. $user->roles()->sync([]);
  94. }
  95. $this->log(__METHOD__,__FUNCTION__,json_encode($request->toArray()),Auth::user()['id']);
  96. return redirect('maintenance/user/')->with('successTip',"成功修改用户“{$user['name']}”!");
  97. }
  98. /**
  99. * Remove the specified resource from storage.
  100. *
  101. * @param User $user
  102. * @return array|Response
  103. * @throws Exception
  104. */
  105. public function destroy(User $user)
  106. {
  107. if(!Gate::allows('用户-删除')){ return redirect(url('/')); }
  108. $this->log(__METHOD__,__FUNCTION__,$user->toJson(),Auth::user()['id']);
  109. $re=$user->delete();
  110. return ['success'=>$re];
  111. }
  112. }