chg: usr: increase the 2 MB avatar maximum file size to 10 MB #10
All checks were successful
Deploy to Production / deploy (push) Successful in 29s
All checks were successful
Deploy to Production / deploy (push) Successful in 29s
This commit is contained in:
@@ -23,6 +23,7 @@ RUN install-php-extensions \
|
|||||||
sodium
|
sodium
|
||||||
|
|
||||||
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
|
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
|
||||||
|
RUN printf '[PHP]\nupload_max_filesize=10M\npost_max_size=11M\n' > "$PHP_INI_DIR/conf.d/uploads.ini"
|
||||||
RUN printf '[opcache]\nopcache.enable=1\nopcache.memory_consumption=256\nopcache.max_accelerated_files=20000\nopcache.validate_timestamps=0\n' \
|
RUN printf '[opcache]\nopcache.enable=1\nopcache.memory_consumption=256\nopcache.max_accelerated_files=20000\nopcache.validate_timestamps=0\n' \
|
||||||
> "$PHP_INI_DIR/conf.d/opcache.ini"
|
> "$PHP_INI_DIR/conf.d/opcache.ini"
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ use Doctrine\ORM\EntityManagerInterface;
|
|||||||
use League\Flysystem\FilesystemException;
|
use League\Flysystem\FilesystemException;
|
||||||
use League\Flysystem\FilesystemOperator;
|
use League\Flysystem\FilesystemOperator;
|
||||||
use Liip\ImagineBundle\Imagine\Cache\CacheManager;
|
use Liip\ImagineBundle\Imagine\Cache\CacheManager;
|
||||||
|
use Liip\ImagineBundle\Service\FilterService;
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
use RuntimeException;
|
use RuntimeException;
|
||||||
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
|
||||||
@@ -140,6 +141,7 @@ class ProfileController extends AbstractController
|
|||||||
Request $request,
|
Request $request,
|
||||||
EntityManagerInterface $em,
|
EntityManagerInterface $em,
|
||||||
CacheManager $cacheManager,
|
CacheManager $cacheManager,
|
||||||
|
FilterService $filterService,
|
||||||
#[Autowire(service: 'mineseeker.media.storage')] FilesystemOperator $mediaStorage,
|
#[Autowire(service: 'mineseeker.media.storage')] FilesystemOperator $mediaStorage,
|
||||||
): JsonResponse {
|
): JsonResponse {
|
||||||
$this->denyAccessUnlessGranted('IS_AUTHENTICATED_REMEMBERED');
|
$this->denyAccessUnlessGranted('IS_AUTHENTICATED_REMEMBERED');
|
||||||
@@ -153,8 +155,8 @@ class ProfileController extends AbstractController
|
|||||||
return $this->json(['error' => 'No file uploaded.'], 400);
|
return $this->json(['error' => 'No file uploaded.'], 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($file->getSize() > 2 * 1024 * 1024) {
|
if ($file->getSize() > 10 * 1024 * 1024) {
|
||||||
return $this->json(['error' => 'File is too large. Maximum 2 MB.'], 400);
|
return $this->json(['error' => 'File is too large. Maximum 10 MB.'], 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
$allowed = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'];
|
$allowed = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'];
|
||||||
@@ -182,6 +184,7 @@ class ProfileController extends AbstractController
|
|||||||
$mediaStorage->writeStream($newPath, $stream);
|
$mediaStorage->writeStream($newPath, $stream);
|
||||||
} catch (FilesystemException $e) {
|
} catch (FilesystemException $e) {
|
||||||
$this->logger->error('Unable to write new avatar: ' . $e->getMessage());
|
$this->logger->error('Unable to write new avatar: ' . $e->getMessage());
|
||||||
|
fclose($stream);
|
||||||
throw new RuntimeException('Unable to write new avatar: ' . $e->getMessage());
|
throw new RuntimeException('Unable to write new avatar: ' . $e->getMessage());
|
||||||
}
|
}
|
||||||
fclose($stream);
|
fclose($stream);
|
||||||
@@ -190,7 +193,7 @@ class ProfileController extends AbstractController
|
|||||||
$em->flush();
|
$em->flush();
|
||||||
|
|
||||||
return $this->json([
|
return $this->json([
|
||||||
'thumbUrl' => $cacheManager->generateUrl($newPath, 'avatar_thumb'),
|
'thumbUrl' => $filterService->getUrlOfFilteredImage($newPath, 'avatar_thumb'),
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,9 @@
|
|||||||
|
|
||||||
{% macro stat_val(value, suffix) %}
|
{% macro stat_val(value, suffix) %}
|
||||||
{%- set abbr = value >= 1000 -%}
|
{%- set abbr = value >= 1000 -%}
|
||||||
<span class="profile-stat__value"{% if abbr %} title="{{ value }}"{% endif %}>{% if abbr %}{{ (value / 1000)|round(1, 'floor') }}k{% else %}{{ value }}{% endif %}{% if suffix %}<small>{{ suffix }}</small>{% endif %}</span>
|
<span
|
||||||
|
class="profile-stat__value"{% if abbr %} title="{{ value }}"{% endif %}>{% if abbr %}{{ (value / 1000)|round(1, 'floor') }}k{% else %}{{ value }}{% endif %}{% if suffix %}
|
||||||
|
<small>{{ suffix }}</small>{% endif %}</span>
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|
||||||
{% block title %} - Profile{% endblock %}
|
{% block title %} - Profile{% endblock %}
|
||||||
@@ -31,7 +33,7 @@
|
|||||||
<div class="profile-header">
|
<div class="profile-header">
|
||||||
<div id="profile-avatar-root"
|
<div id="profile-avatar-root"
|
||||||
data-upload-url="{{ path('MineSeekerBundle_profile_avatar') }}"
|
data-upload-url="{{ path('MineSeekerBundle_profile_avatar') }}"
|
||||||
data-thumb-url="{{ app.user.avatarPath ? app.user.avatarPath|imagine_filter('avatar_thumb') : '' }}"
|
data-thumb-url="{{ app.user.avatarPath ? path('liip_imagine_filter', {path: app.user.avatarPath, filter: 'avatar_thumb'}) : '' }}"
|
||||||
data-initials="{{ app.user.username|slice(0, 2)|upper }}">
|
data-initials="{{ app.user.username|slice(0, 2)|upper }}">
|
||||||
</div>
|
</div>
|
||||||
<div class="profile-info">
|
<div class="profile-info">
|
||||||
@@ -138,7 +140,9 @@
|
|||||||
and (my_points > 25 or opp_points > 25)) %}
|
and (my_points > 25 or opp_points > 25)) %}
|
||||||
{% set is_anonymous = game.oppIsGuest %}
|
{% set is_anonymous = game.oppIsGuest %}
|
||||||
|
|
||||||
<div class="profile-game profile-game--{{ result }}{% if not is_finished and not is_anonymous %} profile-game--ongoing{% elseif is_anonymous %} profile-game--abandoned{% endif %}{% if loop.index0 >= 5 %} profile-game--hidden{% endif %}" data-game-index="{{ loop.index0 }}">
|
<div
|
||||||
|
class="profile-game profile-game--{{ result }}{% if not is_finished and not is_anonymous %} profile-game--ongoing{% elseif is_anonymous %} profile-game--abandoned{% endif %}{% if loop.index0 >= 5 %} profile-game--hidden{% endif %}"
|
||||||
|
data-game-index="{{ loop.index0 }}">
|
||||||
<span class="profile-game__badge">
|
<span class="profile-game__badge">
|
||||||
{% if is_finished %}
|
{% if is_finished %}
|
||||||
{{ result == 'win' ? 'Win' : (result == 'loss' ? 'Loss' : 'Draw') }}
|
{{ result == 'win' ? 'Win' : (result == 'loss' ? 'Loss' : 'Draw') }}
|
||||||
|
|||||||
Reference in New Issue
Block a user