UserController.php 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. <?php
  2. namespace App\Http\Controllers\Main;
  3. use App\Http\Controllers\Controller;
  4. use App\User;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Facades\Auth;
  7. use Illuminate\Support\Facades\Hash;
  8. class UserController extends Controller
  9. {
  10. public function save(Request $request)
  11. {
  12. $request->validate([
  13. 'name' => ['required', 'string', 'max:255'],
  14. 'surname' => ['required', 'string', 'max:255'],
  15. 'day' => ['required', 'integer'],
  16. 'month' => ['required', 'string'],
  17. 'year' => ['required', 'integer'],
  18. 'country_id' => ['required', 'integer'],
  19. 'city_id' => ['required', 'integer'],
  20. 'skill' => ['required', 'string'],
  21. 'about' => ['required', 'string'],
  22. ]);
  23. $data = $request->all();
  24. unset($data["_token"]);
  25. $user = Auth::user();
  26. foreach ($data as $key => $item) {
  27. if (
  28. $user->$key != $item &&
  29. !in_array($key, ['password', 'password_confirmation', 'day', 'month', 'year', 'username', 'email', 'avatar'])
  30. ) {
  31. $user->$key = $item;
  32. } elseif ($key == "password") {
  33. if ($item !== "no-change-password") {
  34. $request->validate([
  35. 'password' => ['required', 'string', 'min:8', 'confirmed'],
  36. ]);
  37. $user->$key = Hash::make($item);
  38. }
  39. } elseif ($key == "day") {
  40. $user->dob = $data['day'] . " " . $data['month'] . " " . $data['year'];
  41. } elseif ($key == "username") {
  42. if ($item != $user->username) {
  43. $request->validate([
  44. 'username' => ['required', 'string', 'max:255', 'unique:users'],
  45. ]);
  46. $user->$key = $item;
  47. }
  48. } elseif ($key == "email") {
  49. if ($item != $user->email) {
  50. $request->validate([
  51. 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
  52. ]);
  53. $user->$key = $item;
  54. }
  55. } elseif ($key == 'avatar') {
  56. $request->validate([
  57. 'avatar' => 'mimes:jpeg,png|max:2024'
  58. ]);
  59. $path = $request->avatar->store('avatars', 'public');
  60. $user->avatar_url = '/storage/' . $path;
  61. }
  62. }
  63. $user->save();
  64. return redirect()->back()->with('success', 'Изменения сохранены');
  65. }
  66. }