UserController.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\Http\Requests\DeleteUser;
  4. use App\Http\Requests\StoreUser;
  5. use App\Models\User;
  6. use Illuminate\Support\Facades\Hash;
  7. class UserController extends Controller
  8. {
  9. protected array $data = [
  10. 'active' => 'users',
  11. 'title' => 'Пользователи',
  12. ];
  13. /**
  14. * Display a listing of the resource.
  15. */
  16. public function index()
  17. {
  18. $this->data['users'] = User::query()->get();
  19. return view('users.index', $this->data);
  20. }
  21. /**
  22. * Show the form for creating a new resource.
  23. */
  24. public function create()
  25. {
  26. $this->data['user'] = null;
  27. return view('users.edit', $this->data);
  28. }
  29. /**
  30. * Store a newly or update existing created resource in storage.
  31. */
  32. public function store(StoreUser $request)
  33. {
  34. $validated = $request->validated();
  35. if(!empty($validated['password'])) {
  36. $validated['password'] = Hash::make($validated['password']);
  37. } else {
  38. unset($validated['password']);
  39. }
  40. if(isset($validated['id'])) {
  41. User::query()
  42. ->where('id', $validated['id'])
  43. ->update($validated);
  44. } else {
  45. User::query()->create($validated);
  46. }
  47. return redirect()->route('user.index')->with(['success' => 'Пользователь ' . $validated['name'] . ' сохранён!']);
  48. }
  49. /**
  50. * Display the specified resource.
  51. */
  52. public function show(User $user)
  53. {
  54. $this->data['user'] = $user;
  55. return view('users.edit', $this->data);
  56. }
  57. /**
  58. * Remove the specified resource from storage.
  59. */
  60. public function destroy(User $user, DeleteUser $request)
  61. {
  62. if($user == $request->user()) {
  63. return redirect()->route('user.index')->with(['danger' => 'Нельзя удалить самого себя!']);
  64. } else {
  65. $user->delete();
  66. return redirect()->route('user.index')->with(['success' => 'Пользователь ' . $user->name . ' удалён!']);
  67. }
  68. }
  69. }