From 347ec9e8d71d98d74e6149c261f8bf9c3481524d Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Sun, 19 Apr 2020 15:37:10 +0200 Subject: [PATCH] fix profile image upload --- Admin/Routes/Web/Api.php | 11 +++++++++ Controller/ApiController.php | 37 ++++++++++++++++++++++++++++ Theme/Backend/profile-single.tpl.php | 2 +- 3 files changed, 49 insertions(+), 1 deletion(-) diff --git a/Admin/Routes/Web/Api.php b/Admin/Routes/Web/Api.php index e158560..448f4e9 100644 --- a/Admin/Routes/Web/Api.php +++ b/Admin/Routes/Web/Api.php @@ -31,4 +31,15 @@ return [ ], ], ], + '^.*/profile/settings/image(\?.*|$)' => [ + [ + 'dest' => '\Modules\Profile\Controller\ApiController:apiSettingsAccountImageSet', + 'verb' => RouteVerb::SET, + 'permission' => [ + 'module' => ApiController::MODULE_NAME, + 'type' => PermissionType::MODIFY, + 'state' => PermissionState::PROFILE, + ], + ], + ], ]; diff --git a/Controller/ApiController.php b/Controller/ApiController.php index 483e9b1..6889b02 100644 --- a/Controller/ApiController.php +++ b/Controller/ApiController.php @@ -119,4 +119,41 @@ final class ApiController extends Controller return $profiles; } + + /** + * Routing end-point for application behaviour. + * + * @param RequestAbstract $request Request + * @param ResponseAbstract $response Response + * @param mixed $data Generic data + * + * @return void + * + * @api + * + * @since 1.0.0 + */ + public function apiSettingsAccountImageSet(RequestAbstract $request, ResponseAbstract $response, $data = null) : void + { + $uploadedFiles = $request->getFiles() ?? []; + + if (empty($uploadedFiles)) { + return; + } + + $profile = ProfileMapper::getFor($request->getHeader()->getAccount(), 'account'); + $old = clone $profile; + + $uploaded = $this->app->moduleManager->get('Media')->uploadFiles( + $request->getData('name') ?? '', + $uploadedFiles, + $request->getHeader()->getAccount(), + __DIR__ . '/../../../Modules/Media/Files/Accounts/' . $request->getHeader()->getAccount() + ); + + $profile->setImage(\reset($uploaded)); + + $this->updateModel($request->getHeader()->getAccount(), $old, $profile, ProfileMapper::class, 'profile'); + $this->fillJsonResponse($request, $response, NotificationLevel::OK, 'Profile', 'Profile successfully updated', $profile); + } } diff --git a/Theme/Backend/profile-single.tpl.php b/Theme/Backend/profile-single.tpl.php index f091302..30605b2 100644 --- a/Theme/Backend/profile-single.tpl.php +++ b/Theme/Backend/profile-single.tpl.php @@ -75,7 +75,7 @@ echo $this->getData('nav')->render(); $profile->getImage() instanceof NullMedia ? UriFactory::build('Web/Backend/img/user_default_' . \mt_rand(1, 6) .'.png') : UriFactory::build('{/prefix}' . $profile->getImage()->getPath()); ?>" - > + width="100px"> request->getHeader()->getAccount() === $account->getId()) : ?>
Change