1
0

UserController.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. namespace App\Http\Controllers\Backend;
  3. use App\Http\Controllers\Controller;
  4. use App\Models\User;
  5. use App\Http\Requests\Backend\User\CreateRequest;
  6. use App\Http\Requests\Backend\User\UpdateRequest;
  7. use Illuminate\Http\Request;
  8. use Storage;
  9. class UserController extends Controller
  10. {
  11. /**
  12. * Display a listing of the resource.
  13. *
  14. * @return \Illuminate\Http\Response
  15. */
  16. public function index()
  17. {
  18. $users = User::all();
  19. return view("backend.user.index", compact('users'));
  20. }
  21. /**
  22. * Show the form for creating a new resource.
  23. *
  24. * @return \Illuminate\Http\Response
  25. */
  26. public function create()
  27. {
  28. return view('backend.user.create');
  29. }
  30. /**
  31. * @param CreateRequest $request
  32. * @return $this
  33. */
  34. public function store(CreateRequest $request)
  35. {
  36. $data = [
  37. 'password' => bcrypt($request->password),
  38. 'user_pic' => $this->uploadAvatar($request),
  39. ];
  40. User::create(array_merge($request->all(['name', 'email']), $data));
  41. return redirect()->route('backend.user.index')->with('success', '用户添加成功');
  42. }
  43. /**
  44. * @param Request $request
  45. * @return string
  46. */
  47. private function uploadAvatar(Request $request)
  48. {
  49. $url = '';
  50. if ($request->hasFile('user_pic')
  51. && $request->file('user_pic')->isValid()
  52. && in_array($request->user_pic->extension(), ["png", "jpg", "jpeg", "gif"])
  53. ) {
  54. $path = $request->user_pic->store('avatars', config('blog.disk'));
  55. $url = Storage::disk(config('blog.disk'))->url($path);
  56. }
  57. return $url;
  58. }
  59. /**
  60. * Display the specified resource.
  61. *
  62. * @param int $id
  63. * @return \Illuminate\Http\Response
  64. */
  65. public function show($id)
  66. {
  67. //
  68. }
  69. /**
  70. * Show the form for editing the specified resource.
  71. *
  72. * @param int $id
  73. * @return \Illuminate\Http\Response
  74. */
  75. public function edit($id)
  76. {
  77. $user = User::findOrFail($id);
  78. return view("backend.user.edit", compact('user'));
  79. }
  80. /**
  81. * Update the specified resource in storage.
  82. *
  83. * @param UpdateRequest $request
  84. * @param $id
  85. * @return $this|\Illuminate\Http\RedirectResponse
  86. */
  87. public function update(UpdateRequest $request, $id)
  88. {
  89. $user = User::findOrFail($id);
  90. $oldAvatarUrl = $user->user_pic;
  91. $avatarFileName = $this->uploadAvatar($request);
  92. if ($avatarFileName) {
  93. $data = ['user_pic' => $avatarFileName];
  94. }
  95. if ($request->filled('password')) {
  96. $data['password'] = bcrypt($request->password);
  97. }
  98. $user->fill(array_merge($data, $request->all(['name', 'email'])));
  99. $user->save();
  100. if ($avatarFileName != "" && $oldAvatarUrl != "") {
  101. Storage::disk(config('blog.disk'))->delete('avatars/' . basename($oldAvatarUrl));
  102. }
  103. return redirect()->route('backend.user.index')->with('success', '用户修改成功');
  104. }
  105. /**
  106. * Remove the specified resource from storage.
  107. *
  108. * @param int $id
  109. * @return \Illuminate\Http\Response
  110. */
  111. public function destroy($id)
  112. {
  113. return User::destroy($id) ? response()->json(['status' => 0]) : response()->json(['status' => 1]);
  114. }
  115. }