Вход Регистрация
Файл: app/Http/Controllers/User/PictureController.php
Строк: 65
<?php

declare(strict_types=1);

namespace 
AppHttpControllersUser;

use 
AppClassesValidator;
use 
AppHttpControllersController;
use 
AppModelsUser;
use 
IlluminateHttpRedirectResponse;
use 
IlluminateHttpRequest;
use 
IlluminateViewView;
use 
InterventionImageImageManager;

class 
PictureController extends Controller
{
    public ?
User $user;

    
/**
     * Конструктор
     */
    
public function __construct()
    {
        
$this->middleware('check.user');

        
$this->middleware(function ($request, $next) {
            
$this->user = getUser();

            return 
$next($request);
        });
    }

    
/**
     * Главная страница
     *
     * @return View|RedirectResponse
     */
    
public function index(
        
Request $request,
        
Validator $validator,
        
ImageManager $imageManager,
    ) {
        if (
$request->isMethod('post')) {
            
$photo = $request->file('photo');

            
$validator->equal($request->input('_token'), csrf_token(), ['photo' => __('validator.token')]);

            
$rules = [
                
'maxsize'    => setting('filesize'),
                
'extensions' => explode(',', setting('image_extensions')),
                
'minweight'  => 100,
            ];
            
$validator->file($photo, $rules, ['photo' => __('validator.image_upload_failed')]);

            if (
$validator->isValid()) {
                
// -------- Удаляем старое фото и аватар ----------//
                
if ($this->user->picture) {
                    
deleteFile(public_path($this->user->picture));
                    
deleteFile(public_path($this->user->avatar));

                    
$this->user->picture = null;
                    
$this->user->avatar = null;
                    
$this->user->save();
                }

                
// -------- Загружаем фото ----------//
                
$file = $this->user->uploadFile($photo, false);

                
// -------- Генерируем аватар -------//
                
$avatar = $this->user->uploadAvatarPath . '/' . uniqueName('png');

                
$image = $imageManager->read($photo);
                
$image->coverDown(64, 64);
                
$image->toPng();
                
$image->save(public_path($avatar));

                
$this->user->picture = $file['path'];
                
$this->user->avatar = $avatar;
                
$this->user->save();

                
setFlash('success', __('users.photo_success_uploaded'));

                return 
redirect('profile');
            }

            
setInput($request->all());
            
setFlash('danger', $validator->getErrors());
        }

        
$user = $this->user;

        return 
view('users/picture', compact('user'));
    }

    
/**
     * Удаление фотографии
     */
    
public function delete(Request $request, Validator $validator): RedirectResponse
    
{
        
$validator->equal($request->input('_token'), csrf_token(), ['photo' => __('validator.token')]);

        if (! 
$this->user->picture) {
            
$validator->addError(__('users.photo_not_exist'));
        }

        if (
$validator->isValid()) {
            
deleteFile(public_path($this->user->picture));
            
deleteFile(public_path($this->user->avatar));

            
$this->user->picture = null;
            
$this->user->avatar = null;
            
$this->user->save();

            
setFlash('success', __('users.photo_success_deleted'));
        } else {
            
setFlash('danger', $validator->getErrors());
        }

        return 
redirect('profile');
    }
}
Онлайн: 2
Реклама