Add some comments
This commit is contained in:
@@ -18,8 +18,14 @@ use Symfony\Component\Security\Http\Attribute\IsGranted;
|
||||
use Symfony\UX\Turbo\TurboBundle;
|
||||
use Symfony\Component\HttpFoundation\JsonResponse;
|
||||
|
||||
/**
|
||||
* CRUD on posts and comments.
|
||||
*/
|
||||
class PostController extends AbstractController
|
||||
{
|
||||
/**
|
||||
* The number of item on a page for the pagination.
|
||||
*/
|
||||
private const POSTS_PER_PAGE = 10;
|
||||
|
||||
#[Route('/', name: 'app_posts')]
|
||||
@@ -36,7 +42,7 @@ class PostController extends AbstractController
|
||||
}
|
||||
|
||||
#[Route('/posts', name: 'app_post_index', methods: ['GET'])]
|
||||
public function table(PostRepository $repository): Response
|
||||
public function table(): Response
|
||||
{
|
||||
return $this->redirectToRoute('app_posts', [], Response::HTTP_SEE_OTHER);
|
||||
}
|
||||
|
@@ -10,6 +10,9 @@ use Doctrine\Bundle\FixturesBundle\Fixture;
|
||||
use Doctrine\Persistence\ObjectManager;
|
||||
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
|
||||
|
||||
/**
|
||||
* Creates fake data for testing purposes.
|
||||
*/
|
||||
class AppFixtures extends Fixture
|
||||
{
|
||||
public function __construct(
|
||||
@@ -20,10 +23,12 @@ class AppFixtures extends Fixture
|
||||
|
||||
public function load(ObjectManager $manager): void
|
||||
{
|
||||
// Dummy user
|
||||
$user = (new User())->setEmail('test@test.fr');
|
||||
$user->setPassword($this->passwordHasher->hashPassword($user, 'password'));
|
||||
$manager->persist($user);
|
||||
|
||||
// Posts and their species
|
||||
$faker = \Faker\Factory::create();
|
||||
for ($i = 0; $i < 20; ++$i) {
|
||||
$name = $faker->name();
|
||||
|
@@ -7,6 +7,9 @@ use Symfony\Component\HttpKernel\Event\RequestEvent;
|
||||
use Symfony\Component\HttpKernel\KernelEvents;
|
||||
use Symfony\Component\Translation\LocaleSwitcher;
|
||||
|
||||
/**
|
||||
* Reads the locale from the user session and change it for every request.
|
||||
*/
|
||||
final readonly class LocaleListener
|
||||
{
|
||||
public function __construct(private LocaleSwitcher $localeSwitcher)
|
||||
|
@@ -6,6 +6,9 @@ use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
|
||||
use Symfony\Component\Security\Core\Authorization\Voter\Voter;
|
||||
use Symfony\Component\Security\Core\User\UserInterface;
|
||||
|
||||
/**
|
||||
* Only allow admins or comment owners to edit their comments.
|
||||
*/
|
||||
class CommentVoter extends Voter
|
||||
{
|
||||
public const EDIT = 'COMMENT_EDIT';
|
||||
|
@@ -4,6 +4,9 @@ namespace App\Service;
|
||||
|
||||
use Symfony\Component\HttpFoundation\File\File;
|
||||
|
||||
/**
|
||||
* Ensures that an image is safe.
|
||||
*/
|
||||
interface ImageSafetyServiceInterface
|
||||
{
|
||||
public function isValid(File $file): bool;
|
||||
|
@@ -8,6 +8,8 @@ use App\Entity\User;
|
||||
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
|
||||
|
||||
/**
|
||||
* Hashes plain text password in the API.
|
||||
*
|
||||
* @implements ProcessorInterface<User, User>
|
||||
*/
|
||||
final readonly class UserPasswordHasher implements ProcessorInterface
|
||||
|
@@ -2,9 +2,9 @@
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">
|
||||
{{ comment.author.email }} le {{ comment.createdAt | date }}
|
||||
{{ 'commented_at'|trans({ email: comment.author.email, date: comment.createdAt|date }) }}
|
||||
{% if comment.createdAt != comment.editedAt %}
|
||||
(modifié le {{ comment.editedAt | date }})
|
||||
{{ 'edited_at'|trans({ date: comment.editedAt|date }) }}
|
||||
{% endif %}
|
||||
</h5>
|
||||
<p class="card-text">{{ comment.content }}</p>
|
||||
|
@@ -161,6 +161,14 @@
|
||||
<source>save</source>
|
||||
<target>Save</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zdhzvdha" resname="commented_at">
|
||||
<source>commented_at</source>
|
||||
<target>email on date</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zdhzvdht" resname="edited_at">
|
||||
<source>edited_at</source>
|
||||
<target>edited on date</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
@@ -161,6 +161,14 @@
|
||||
<source>save</source>
|
||||
<target>Sauvegarder</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zdhzvdha" resname="commented_at">
|
||||
<source>commented_at</source>
|
||||
<target>email le date</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="zdhzvdht" resname="edited_at">
|
||||
<source>edited_at</source>
|
||||
<target>édité le date</target>
|
||||
</trans-unit>
|
||||
</body>
|
||||
</file>
|
||||
</xliff>
|
||||
|
Reference in New Issue
Block a user