Просмотр файла app/Http/Controllers/User/PictureController.php

Размер файла: 3.53Kb
  1. <?php
  2.  
  3. declare(strict_types=1);
  4.  
  5. namespace App\Http\Controllers\User;
  6.  
  7. use App\Classes\Validator;
  8. use App\Http\Controllers\Controller;
  9. use App\Models\User;
  10. use Illuminate\Http\RedirectResponse;
  11. use Illuminate\Http\Request;
  12. use Illuminate\View\View;
  13. use Intervention\Image\ImageManagerStatic as Image;
  14.  
  15. class PictureController extends Controller
  16. {
  17. /**
  18. * @var User
  19. */
  20. public $user;
  21.  
  22. /**
  23. * Конструктор
  24. */
  25. public function __construct()
  26. {
  27. $this->middleware('check.user');
  28.  
  29. $this->middleware(function ($request, $next) {
  30. $this->user = getUser();
  31.  
  32. return $next($request);
  33. });
  34. }
  35.  
  36. /**
  37. * Главная страница
  38. *
  39. * @param Request $request
  40. * @param Validator $validator
  41. *
  42. * @return View|RedirectResponse
  43. */
  44. public function index(Request $request, Validator $validator)
  45. {
  46. if ($request->isMethod('post')) {
  47. $photo = $request->file('photo');
  48.  
  49. $validator->equal($request->input('_token'), csrf_token(), ['photo' => __('validator.token')]);
  50.  
  51. $rules = [
  52. 'maxsize' => setting('filesize'),
  53. 'minweight' => 100,
  54. ];
  55. $validator->file($photo, $rules, ['photo' => __('validator.image_upload_failed')]);
  56.  
  57. if ($validator->isValid()) {
  58. //-------- Удаляем старую фотку и аватар ----------//
  59. if ($this->user->picture) {
  60. deleteFile(public_path($this->user->picture));
  61. deleteFile(public_path($this->user->avatar));
  62.  
  63. $this->user->picture = null;
  64. $this->user->avatar = null;
  65. $this->user->save();
  66. }
  67.  
  68. //-------- Генерируем аватар ----------//
  69. $avatar = public_path($this->user->uploadAvatarPath . '/' . uniqueName('png'));
  70. $img = Image::make($photo);
  71. $img->fit(64);
  72. $img->save($avatar);
  73.  
  74. $file = $this->user->uploadFile($photo, false);
  75.  
  76. $this->user->picture = $file['path'];
  77. $this->user->avatar = str_replace(public_path(), '', $avatar);
  78. $this->user->save();
  79.  
  80. setFlash('success', __('users.photo_success_uploaded'));
  81.  
  82. return redirect('profile');
  83. }
  84.  
  85. setInput($request->all());
  86. setFlash('danger', $validator->getErrors());
  87. }
  88.  
  89. $user = $this->user;
  90.  
  91. return view('users/picture', compact('user'));
  92. }
  93.  
  94. /**
  95. * Удаление фотографии
  96. *
  97. * @param Request $request
  98. * @param Validator $validator
  99. *
  100. * @return RedirectResponse
  101. */
  102. public function delete(Request $request, Validator $validator): RedirectResponse
  103. {
  104. $validator->equal($request->input('_token'), csrf_token(), ['photo' => __('validator.token')]);
  105.  
  106. if (! $this->user->picture) {
  107. $validator->addError(__('users.photo_not_exist'));
  108. }
  109.  
  110. if ($validator->isValid()) {
  111. deleteFile(public_path($this->user->picture));
  112. deleteFile(public_path($this->user->avatar));
  113.  
  114. $this->user->picture = null;
  115. $this->user->avatar = null;
  116. $this->user->save();
  117.  
  118. setFlash('success', __('users.photo_success_deleted'));
  119. } else {
  120. setFlash('danger', $validator->getErrors());
  121. }
  122.  
  123. return redirect('profile');
  124. }
  125. }